-
Data: 2013-01-28 13:08:11
Temat: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
Od: Michoo <m...@v...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 28.01.2013 08:38, M.M. wrote:
> W dniu niedziela, 27 stycznia 2013 22:55:54 UTC+1 użytkownik Przemek O napisał:
>
>> A ja mam wrażenie, że gdyby nie wynaleziono komputerów, to ilość błędów
>> oprogramowania też drastycznie by spadła, a wręcz nigdy by nie powstała...
>> MSPANC
> Ehhh
>
>>> Ale jak napisałem, to tylko wrażenie. Czy znacie publikacje
>>> analizujące zależność defektów programów od języka?
> Masę przypadkowej lektury przeczytałem na temat tego, jak to mało
> błędów popełnia się w javie. Czy to prawda?
Java też bywa błędogenna przez skopany projekt:
1. Niektóre wyjątki są checked (czyli trzeba je "gdzieś" obsłużyć) ale
inne nie. Unchecked jest np "NumberFormatException" co oznacza, że łatwo
zrobić kod, który w momencie otrzymania nieprawidłowego numerka poleci
aż do dołu.
2. Operatory i metody.
Gdy mamy dowolną mieszankę int i Integer to operatory >,<,>=,<= działają
jak trzeba, ale operatory == i != działają dla dwóch Integerów zależnie
od tego jak duża wartość jest w nich trzymana ;)
equals jest zdefiniowane w Object, więc:
String s="";Integer i=1;
if(s.equals(i)
jest całkowicie poprawną konstrukcją tożsamą z if(false)
3. Operowanie na haszach.
Większość kontenerów pracuje na bazie hashCode() używając equals w
przypadku kolizji. Trzeba trzymać te dwie metody "zsynchronizowane" albo
można uzyskać bardzo subtelne błędy.
4. Parsowanie.
Zagadka - czym się różnią:
try{
Integer i = Integer.valueOf(str);
return i;
}catch(Exception ex){
return null;
}
try{
Boolean i = Boolean.parseBoolean(str);
return i;
}catch(Exception ex){
return null;
}
4. Dalsza zabawa z equals. Kontenery używają equals, które jest z
"Object", więc można robić klasy "selektorow". Powoduje to niestety, że:
Map<String,String> map = new HashMap<String,String>();
Integer i=1;
//...
map.get(i);
Jest poprawnym składniowo sposobem pobrania nulla z kolekcji.
map.put(i,"aaa");
jest oczywiście niepoprawne z powodu niegodności typów.
Istnieje przy tym interface Comparable, ale służy właściwie tyko do
sortowania, więc 0 bezpieczeństwa typów.
etc.
--
Pozdrawiam
Michoo
Następne wpisy z tego wątku
- 28.01.13 18:45 darekm
- 29.01.13 02:59 Roman W
- 29.01.13 09:44 Maciej Sobczak
- 29.01.13 10:38 M.M.
- 29.01.13 19:41 Andrzej Jarzabek
- 29.01.13 19:42 Andrzej Jarzabek
- 30.01.13 10:12 Maciej Sobczak
- 30.01.13 19:58 Andrzej Jarzabek
- 31.01.13 00:14 M.M.
- 31.01.13 10:14 Maciej Sobczak
- 31.01.13 21:29 Marek Borowski
- 01.02.13 09:47 Maciej Sobczak
- 01.02.13 11:50 M.M.
- 01.02.13 14:17 Bastion
- 01.02.13 22:59 Andrzej Jarzabek
Najnowsze wątki z tej grupy
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-11 Rejestrator temperatur - termopara, siec
- 2025-07-11 DPD, przeniesienie numerów z a2mobile i z Orange
- 2025-07-11 Warszawa => Account Manager - Sprzedaż Usług Rekrutacyjnych <=
- 2025-07-11 Poznań => Senior Key Account Manager IT <=
- 2025-07-11 Warszawa => Strategic Account Manager <=
- 2025-07-11 Warszawa => International Freight Forwarder <=
- 2025-07-11 Warszawa => Spedytor Międzynarodowy <=
- 2025-07-11 MObywatel - fantazja poniosła
- 2025-07-11 Białystok => Programista Kotlin <=
- 2025-07-11 Kraków => PHP Developer (Full Stack) <=
- 2025-07-11 Warszawa => Specialist in Administration <=
- 2025-07-11 Warszawa => Specjalista/tka ds. Administracji <=
- 2025-07-11 Warszawa => Senior Product Manager <=
- 2025-07-11 Szczecin => Key Account Manager IT <=
- 2025-07-11 Łódź => Programista Mainframe (z/OS, Assembler) <=