eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJakie typowanie jest najlepsze i dlaczego statyczne? › Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!news.internetia.pl!not-for-mail
    From: Michoo <m...@v...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
    Date: Mon, 28 Jan 2013 13:08:11 +0100
    Organization: Netia S.A.
    Lines: 73
    Message-ID: <ke5q5e$cqc$1@mx1.internetia.pl>
    References: <f...@g...com>
    <ke4872$acv$1@mx1.internetia.pl>
    <6...@g...com>
    NNTP-Posting-Host: 83.238.197.12
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: mx1.internetia.pl 1359375342 13132 83.238.197.12 (28 Jan 2013 12:15:42 GMT)
    X-Complaints-To: a...@i...pl
    NNTP-Posting-Date: Mon, 28 Jan 2013 12:15:42 +0000 (UTC)
    In-Reply-To: <6...@g...com>
    X-Tech-Contact: u...@i...pl
    User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.11) Gecko/20121123
    Icedove/10.0.11
    X-Server-Info: http://www.internetia.pl/
    Xref: news-archive.icm.edu.pl pl.comp.programming:201844
    [ ukryj 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

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: