eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › kwestia estetyczna
Ilość wypowiedzi w tym wątku: 57

  • 1. Data: 2011-08-04 21:40:37
    Temat: kwestia estetyczna
    Od: <g...@h...com>

    Witam,

    Czy taka konstrukcja narusza jakieś zasady/sty dobrego projektowania lub
    jeszcze innego wzorca projektowego? Chodzi mi o drabinkę if..else

    if (preserveR)
    {
    if (oldW >= oldH && !fit)
    {
    if (!onlyG || width < oldW)
    {
    newW = width;
    newH = (oldH * newW) / oldW;
    }
    }
    else if (!fit)
    {
    if (!onlyG || height < oldH)
    {
    newH = height;
    newW = (oldW * newH) / oldH;
    }
    }
    else
    {
    //...
    }
    }
    else
    {
    newW = width;
    newH = height;
    }


  • 2. Data: 2011-08-05 04:36:49
    Temat: Re: kwestia estetyczna
    Od: Maciej Pilichowski <P...@g...com>

    On Thu, 4 Aug 2011 23:40:37 +0200, <g...@h...com> wrote:

    >Czy taka konstrukcja narusza jakieś zasady/sty dobrego projektowania

    Nazewnictwo prosi sie o poprawe.

    --
    Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy.
    http://www.garaz.pol.pl/


  • 3. Data: 2011-08-05 08:25:52
    Temat: Re: kwestia estetyczna
    Od: g...@p...onet.pl

    > Witam,

    >

    > Czy taka konstrukcja narusza jakieś zasady/sty dobrego projektowania lub

    > jeszcze innego wzorca projektowego? Chodzi mi o drabinkę if..else

    >

    > if (preserveR)

    > {

    >    if (oldW >= oldH && !fit)

    >    {

    >        if (!onlyG || width < oldW)

    >        {

    >            newW = width;

    >            newH = (oldH * newW) / oldW;

    >        }

    >    }

    >    else if (!fit)

    >    {

    >        if (!onlyG || height < oldH)

    >        {

    >            newH = height;

    >            newW = (oldW * newH) / oldH;

    >        }

    >    }

    >    else

    >    {

    >        //...

    >    }

    > }

    > else

    > {

    >    newW = width;

    >    newH = height;

    > }

    >

    trudno powiedziec (przynajmniej mi trudno powiedziec) trzebaby sie
    zastanowic czy jest jakis sposob by robic takie rzeczy lepiej - osobiscie
    nie przychodzi mi do glowy teraz jakis lepszy sposob (ani nie mam tez sily sie
    zastanawiac) i owiedzialbym ze jest raczej ok
    - co do nazewnictwa to takie 'krotkie' konwencje nazewnicze maja w sobie
    cos fajnie technicznego, algebraicznego (sklaniaja by patrzec na ten kod
    bardziej jak na wzory czy rownania) ale obecny trend (do ktorego sam niejako
    tez zostalem przekonany - choc nie wiem czy sie kiedys nie zbuntuje albo
    co by poprobowac pisania 'krotkimi' nazwami) z tego co wiem sklania sie
    raczej po temu by uzywac dlugich nazw (wogole nie uzywac skrotow itp) czyli
    nie 'newH = height' tylko 'newHeight = height' - taki kod czyta sie bardziej
    jak tekst a nie jak wzory
    Z poczatku zauwazylem rozbicie ifow ktore mozna by skompensowac, teraz jak
    patrze to widze ze moze warto by chodzic w dokladnie odwrotna strone tj
    porozdzielac je by staly sie bardziej 'wyrazalne'; jak mi przejdzie ten lekki
    bol glowy to moze pozniej pomysle chwile nad lekko poprawiona wersja i zapostuje



    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 4. Data: 2011-08-05 09:42:27
    Temat: Re: kwestia estetyczna
    Od: "Wojciech \"Spook\" Sura" <wojciech.sura_no@spam_poczta.medi.com.pl>

    Dnia 04-08-2011 o 23:40:37 <g...@h...com> napisał(a):

    > Witam,
    >
    > Czy taka konstrukcja narusza jakieś zasady/sty dobrego projektowania lub
    > jeszcze innego wzorca projektowego? Chodzi mi o drabinkę if..else

    Jeśli zaprzeczylibyśm sensowności tego rozwiązania, to na dobrą sprawę
    należałoby odrzucić również konstrukcję switch/case, która przecież
    spełnia praktycznie tą samą rolę. Różnica jest taka, że drabinka if..else
    pozwala uwzględnić kilka różnych warunków (a także - na przykład -
    odrzucić warunki, które w danym momencie są zbędne), gdy switch z czymś
    takim sobie nie radzi.

    Poza tym - jaką alternatywę zaproponowałbyś dla takiej drabinki? Wyciąć
    else nie możesz, bo często ma ono kluczowe znaczenie. Co najwyżej możesz
    każdy warunek pakować do kolejnego bloku w else, tzn.

    if (war1)
    {

    }
    else if (war2)
    {

    }
    else S;

    na

    if (war1)
    {

    }
    else
    {
    if (war2)
    {

    }
    else S;
    }

    Wydaje mi się jednak, że na dłuższą metę drugie rozwiązanie jest znacznie
    mniej czytelne - szczególnie, gdy warunków masz dużo.

    Pozdrawiam -- Spook.

    --
    Używam klienta poczty Opera Mail: http://www.opera.com/mail/


  • 5. Data: 2011-08-05 12:52:15
    Temat: Re: kwestia estetyczna
    Od: Artur Muszyński <a...@u...wytnijto.com.pl>

    W dniu 2011-08-05 10:25, g...@p...onet.pl pisze:
    > - co do nazewnictwa to takie 'krotkie' konwencje nazewnicze maja w sobie
    > cos fajnie technicznego, algebraicznego (sklaniaja by patrzec na ten kod
    > bardziej jak na wzory czy rownania) ale obecny trend (do ktorego sam niejako
    > tez zostalem przekonany - choc nie wiem czy sie kiedys nie zbuntuje albo
    > co by poprobowac pisania 'krotkimi' nazwami) z tego co wiem sklania sie
    > raczej po temu by uzywac dlugich nazw (wogole nie uzywac skrotow itp) czyli
    > nie 'newH = height' tylko 'newHeight = height' - taki kod czyta sie bardziej
    > jak tekst a nie jak wzory

    Zdaje mi się, że te zalecenia projektowe dotyczą raczej nazewnictwa
    metod/funkcji/parametrów itd, a nie ciała funkcji. W tym przypadku IMHO
    x, y, w, h, nx, ny, nw, nh są tak samo dobre (bo to chyba nie żaden
    tutorial?)

    artur


  • 6. Data: 2011-08-05 20:33:00
    Temat: Re: kwestia estetyczna
    Od: g...@p...onet.pl

    > W dniu 2011-08-05 10:25, g...@p...onet.pl pisze:

    > > - co do nazewnictwa to takie 'krotkie' konwencje nazewnicze maja w sobie

    > > cos fajnie technicznego, algebraicznego (sklaniaja by patrzec na ten kod

    > > bardziej jak na wzory czy rownania) ale obecny trend (do ktorego sam niejako

    > > tez zostalem przekonany - choc nie wiem czy sie kiedys nie zbuntuje albo

    > > co by poprobowac pisania 'krotkimi' nazwami) z tego co wiem sklania sie

    > > raczej po temu by uzywac dlugich nazw (wogole nie uzywac skrotow itp) czyli

    > > nie 'newH = height' tylko 'newHeight = height' - taki kod czyta sie bardziej

    > > jak tekst a nie jak wzory

    >

    > Zdaje mi się, że te zalecenia projektowe dotyczą raczej nazewnictwa

    > metod/funkcji/parametrów itd, a nie ciała funkcji. W tym przypadku IMHO

    > x, y, w, h, nx, ny, nw, nh są tak samo dobre (bo to chyba nie żaden

    > tutorial?)

    >

    nie wiem jak ogolnie zalecenia, ale jesli o mnie chodzi to ta uwaga
    'by nie uzywac skrotow' (bo zwykle skracac mozna na wiele sposobow i robi
    sie to trudne do spamietania) dotyczy raczej wszelkich nazw

    ja albo uzywam dlugich nazw (wiekszosc - od jedno do nawet kilkuwyrazowych)
    albo bardzo krotkich podrecznych zwykle jednoliterowych jak i,j na
    'bardzo ulotne' zmienne lokalne

    tj takie nazewnictwo mi sie obecnie wyszkolilo i uzywam go gdy pisze cos
    staranniej bo zwykle jak jestem w jakims trybie kreacyjnym to robie 'ciezki
    balagan' zreszta te nazewnictwo tez nie tak zupelnie do konca jeszcze mi sie
    wyksztalcilo


    > artur

    >



    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 7. Data: 2011-08-06 16:09:55
    Temat: Re: kwestia estetyczna
    Od: Karol Y <k...@o...pl>

    A ja spytam o coś podobnego. Bardziej Wam się zdarza pisać A czy B?

    A:
    foo()
    {
    if (warunek)
    {
    ...
    }
    }

    B:
    foo()
    {
    if(!warunek)
    return;

    ...
    }

    Powiem szczerze, że mnie tak naturalnie przychodzi zawsze A, jednakże
    tych warunków czasami może być więcej i wtedy wygląda to np. tak.

    if (warunek1 && warunek2 && warunek3)
    {
    if(warunek4 && warunek5)
    {
    ...
    }
    }

    Dwa ify z tego powodu, że warunki odnoszą się do innej "logiki".

    --
    Mateusz Bogusz


  • 8. Data: 2011-08-06 16:34:25
    Temat: Re: kwestia estetyczna
    Od: m...@t...pl


    > Powiem szczerze, że mnie tak naturalnie przychodzi zawsze A, jednakże
    > tych warunków czasami może być więcej i wtedy wygląda to np. tak.
    W malym kodzie, w malej procedurze, to jest wszystko jedno. Problem jest
    gdy procedura sie rozrasta. Gdy mam kod ktory:
    1) moze wykonywac sie rownolegle na wielu watkach,
    2) do systemu zalogowanych jest jednoczesnie kilku uzytkownikow
    3) zdarza sie uzytkownik ktorzy wysle specjalnie zlosliwe dane
    4) uzytkownicy pracuja na wspolnych danych
    5) wazna jest wydajnosc
    to procedura z testujacymi if-ami czasami ma 2tys linii kodu.
    Jesli jeden if zaczyna sie na poczatku procedury i konczy gdzies
    przy jej koncu to dla mnie jest totalne bagno.
    Dlatego wlasnie zawsze daze do takiego wygladu procedury:

    // Bogaty komentarz_1
    if( warunek_1 ) {
    return kod_bledu_1; // albo wyjatek zamiast return
    }
    // Bogaty komentarz_2
    if( warunek_2 ) {
    return kod_bledu_2; // albo wyjatek zamiast return
    }

    Pozdrawiam


    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 9. Data: 2011-08-06 17:50:40
    Temat: Re: kwestia estetyczna
    Od: A.L. <l...@a...com>

    On Sat, 06 Aug 2011 18:34:25 +0200, m...@t...pl wrote:

    >
    >> Powiem szczerze, że mnie tak naturalnie przychodzi zawsze A, jednakże
    >> tych warunków czasami może być więcej i wtedy wygląda to np. tak.
    >W malym kodzie, w malej procedurze, to jest wszystko jedno. Problem jest
    >gdy procedura sie rozrasta. Gdy mam kod ktory:
    >1) moze wykonywac sie rownolegle na wielu watkach,
    >2) do systemu zalogowanych jest jednoczesnie kilku uzytkownikow
    >3) zdarza sie uzytkownik ktorzy wysle specjalnie zlosliwe dane
    >4) uzytkownicy pracuja na wspolnych danych
    >5) wazna jest wydajnosc

    A co ma wielowatkowosc do rzeczy? I co ma wydajnosc do rzeczy? I co ma
    "zlosliwosc uzytkownika" do rzeczy?...

    >to procedura z testujacymi if-ami czasami ma 2tys linii kodu.
    >Jesli jeden if zaczyna sie na poczatku procedury i konczy gdzies
    >przy jej koncu to dla mnie jest totalne bagno.
    >Dlatego wlasnie zawsze daze do takiego wygladu procedury:
    >
    >// Bogaty komentarz_1
    >if( warunek_1 ) {
    > return kod_bledu_1; // albo wyjatek zamiast return
    >}
    >// Bogaty komentarz_2
    >if( warunek_2 ) {
    > return kod_bledu_2; // albo wyjatek zamiast return
    >}
    >

    Pzrepraszam, ale to nonsens. Oryginalny Poster nic nie mowli o "kodach
    bledu"

    A.L.


  • 10. Data: 2011-08-06 20:13:47
    Temat: Re: kwestia estetyczna
    Od: m...@t...pl



    > A co ma wielowatkowosc do rzeczy? I co ma wydajnosc do rzeczy? I co ma
    > "zlosliwosc uzytkownika" do rzeczy?...
    Kod programu z wymienionymi przeze mnie cechami jest bardziej
    skomplikowany. Takie drobiazgi jak estetyka kodu w prostym
    programie sie nie licza, natomiast w duzym i skomplikowanym moga miec
    kluczowe znaczenie.

    > Pzrepraszam, ale to nonsens. Oryginalny Poster nic nie mowli o "kodach
    > bledu"
    A czy ja gdzies pisalem ze Oryginalny Poster cos mowil o kodach bledow?
    Padlo pytanie na temat:

    if(!warunek)
    return;
    kod();

    VS

    if( warunek ) {
    kod();
    }

    W malej procedurze nie ma najmniejszego znaczenia jaki styl wybierzemy.
    W duzej, jesli klamra otwiera sie w linii nr. 100, a zamyka w linii nr
    1000 kod staje sie bardzo nieczytelny. Dlatego odmiana z return jest
    duzo lepsza. Nie ma tu zadnego nonsensu.
    Pozdrawiam


    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

strony : [ 1 ] . 2 ... 6


Szukaj w grupach

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: