eGospodarka.pl
eGospodarka.pl poleca

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

  • 21. Data: 2011-08-07 16:51:19
    Temat: Re: kwestia estetyczna
    Od: A.L. <l...@a...com>

    On Sun, 07 Aug 2011 12:03:56 +0200, Wojciech Jaczewski
    <w...@o...pl> wrote:

    >m...@t...pl wrote:
    >
    >>> Owszem, robi sie metlik. Ale nie uparszcza sie go przez continue,
    >>> return i break
    >> Nieprawda, return i continue moze upraszczac zapis.
    >> Przy zapisie z return i continue od razu wiem ze gdzies
    >> na dole, pomiedzy zamykajacymi klamrami nie ma kodu ktory sie
    >> moze wykonac. Lepiej widac do czego ten if sluzy.
    >
    >Czasami też upraszczać może użycie goto - chociaż zapewne wielu mędrców-
    >teoretyków powie że tego używać nie wolno, a zamiast tego trzeba zrobić kod
    >5 razy dłuższy, za to pozbawiony tego defektu. Ale jak przyjrzeć się
    >dostępnym dobrze działającym programom open-source, to w wielu z nich można
    >spotkać użycie technik, których ci mędrcy-teoretycy chętnie by zakazali.
    >Zarówno użycia goto, jak i bardzo długich funkcji.

    Uczenie sie od "open source" to takjak wedle ludowego powiedzonka
    "uczyl Marcin Marcina".

    Jak uczyc sie od mistrzow, to raczej uczycsie od prawdziwych Mistrzow.
    Polecam ksiazke "Software Tools", Kernighan i Plauger. Kod (kompletny
    i dzialajacy) wielu UNIXowych utilities. Proponuje znalezc "goto". A
    niektore z owych utilities calkiem skomplikowane: makrporocesor M4,
    czy edytor ed.

    Owzm, goto jest uzyteczna. Tak samo jak schodki w rakietach. Jak
    mawial Osla Laczka, nauczyciel Pirxa: "schodki sa potrzebne dla
    umierajacych atronautow"

    >Ponieważ A.L. często podaje tytuły do książek coś opisujących, ja odnośnie
    >używania długich funkcji sugeruję "The Art of Unix Programming". Niestety
    >nie podam konkretnie rozdziału, bo nie pamiętam. Można tam też przeczytać
    >coś o programowaniu obiektowym.

    Ksiazka jest dobra, ale jak na podrecznik stylu - za dluga. Ja bym
    raczej polecal "Enough Rope to Shot Yourself in the Foot: Rules for C
    and C++ Programming", Allen Holub.

    http://www.holub.com/goodies/rules.html

    Cytaty:

    36 A subroutine should fit on a screen

    54 A function should have only one exit point

    No, chyba nikt nie nazwie Holuba "teoretykiem"...

    http://www.holub.com/

    A.L.


  • 22. Data: 2011-08-07 18:27:19
    Temat: Re: kwestia estetyczna
    Od: Paweł Kierski <n...@p...net>

    W dniu 2011-08-07 02:05, A.L. pisze:
    [...]
    >> Duza procedura o ktorej mowie jest polimorficzna w
    >> wielu klasach. Projekt zostal tak skonstruowany ze
    >> rozszerzenie funkcjonalnosci dodaje sie poprzez
    >> tego typu klase (wyprowadzona z bazowej).
    >
    > A co to zanczy?...

    Pewnie znaczy to, że ktoś woli metodę szablonową tam, gdzie
    sensowniejsza robi się strategia. Przy okazji ten ktoś nadal
    używa dziedziczenia w roli kompozycji.

    --
    Paweł Kierski
    n...@p...net


  • 23. Data: 2011-08-07 18:35:34
    Temat: Re: kwestia estetyczna
    Od: Paweł Kierski <n...@p...net>

    W dniu 2011-08-07 00:49, Wojciech Muła pisze:
    [...]
    > Kiedyś, przy bardziej "dzikiej" logice sterowania, gdzie warunków było
    > niewiele, jednak różnych kombinacji sporo, to najpierw kodowałem
    > każdy warunek na osobnym bicie, a później instrukcją switch
    > obsługiwałem kombinacje. W stosunku do wersji z if/else było 10x lepiej.

    Jak mi się takich warunków zaczyna mnożyć, to staram się zapisać
    tablice Karnaugha. Zazwyczaj na tym etapie porządkuje mi się, co
    tak naprawdę ten potencjalny gąszcz if'ów miał wyrażać i zostają
    2-3 kolejne if'y z - o zgrozo! - więcej niż jednym punktem wyjścia
    z funkcji.

    --
    Paweł Kierski
    n...@p...net


  • 24. Data: 2011-08-07 18:45:56
    Temat: Re: kwestia estetyczna
    Od: A.L. <l...@a...com>

    On Sun, 07 Aug 2011 20:27:19 +0200, Pawe? Kierski <n...@p...net>
    wrote:

    >W dniu 2011-08-07 02:05, A.L. pisze:
    >[...]
    >>> Duza procedura o ktorej mowie jest polimorficzna w
    >>> wielu klasach. Projekt zostal tak skonstruowany ze
    >>> rozszerzenie funkcjonalnosci dodaje sie poprzez
    >>> tego typu klase (wyprowadzona z bazowej).
    >>
    >> A co to zanczy?...
    >
    >Pewnie znaczy to, że ktoś woli metodę szablonową tam, gdzie
    >sensowniejsza robi się strategia. Przy okazji ten ktoś nadal
    >używa dziedziczenia w roli kompozycji.

    Gratuluje przenikliwosci :) Ale mnie nie udalo sie tego wydedukowac...

    A.L.


  • 25. Data: 2011-08-07 19:07:12
    Temat: Re: kwestia estetyczna
    Od: Wojciech Muła <w...@p...null.onet.pl.invalid>

    On Sun, 07 Aug 2011 11:51:19 -0500 A.L. <l...@a...com> wrote:

    > On Sun, 07 Aug 2011 12:03:56 +0200, Wojciech Jaczewski
    > <w...@o...pl> wrote:
    >
    > >m...@t...pl wrote:
    > >
    > >>> Owszem, robi sie metlik. Ale nie uparszcza sie go przez continue,
    > >>> return i break
    > >> Nieprawda, return i continue moze upraszczac zapis.
    > >> Przy zapisie z return i continue od razu wiem ze gdzies
    > >> na dole, pomiedzy zamykajacymi klamrami nie ma kodu ktory sie
    > >> moze wykonac. Lepiej widac do czego ten if sluzy.
    > >
    > >Czasami też upraszczać może użycie goto - chociaż zapewne wielu
    > >mędrców- teoretyków powie że tego używać nie wolno, a zamiast tego
    > >trzeba zrobić kod 5 razy dłuższy, za to pozbawiony tego defektu. Ale
    > >jak przyjrzeć się dostępnym dobrze działającym programom
    > >open-source, to w wielu z nich można spotkać użycie technik, których
    > >ci mędrcy-teoretycy chętnie by zakazali. Zarówno użycia goto, jak i
    > >bardzo długich funkcji.
    >
    > Uczenie sie od "open source" to takjak wedle ludowego powiedzonka
    > "uczyl Marcin Marcina".

    Chyba, że to open source używany w przemyśle, np. PostgreSQL (i na
    prawdziwie open sourcowej licencji). Bardzo przyzwoicie napisany,
    ale goto znajdziesz w paru miejscach

    > Jak uczyc sie od mistrzow, to raczej uczycsie od prawdziwych
    > Mistrzow. Polecam ksiazke "Software Tools", Kernighan i Plauger.
    > Kod (kompletny i dzialajacy) wielu UNIXowych utilities. Proponuje
    > znalezc "goto". A niektore z owych utilities calkiem skomplikowane:
    > makrporocesor M4, czy edytor ed.

    Jest polska edycja, pt. "Narzędzia programistyczne w Pascalu". Czytałem
    większe fragmenty i uważam, że to powinna być lektura obowiązkowa na
    pierwszym roku studiów. Nie mówiąc, że bardziej wciąga niż niejedna
    powieść. :)

    > Owzm, goto jest uzyteczna. Tak samo jak schodki w rakietach. Jak
    > mawial Osla Laczka, nauczyciel Pirxa: "schodki sa potrzebne dla
    > umierajacych atronautow"

    W praktyce goto ma zastosowanie do jednej rzeczy - zebranie w jednym
    miejscu kodu, który zwalnia pamięć, zamyka pliki itd. Używałem w C,
    w modułach dla Pythona. Inaczej nie szło tego napisać, bo kod by się
    powielał n razy, co wg mnie było zupełnie niepotrzebnie i dawało okazję
    do większej liczby błędów.

    w.


  • 26. Data: 2011-08-07 20:29:37
    Temat: Re: kwestia estetyczna
    Od: A.L. <l...@a...com>

    On Sun, 7 Aug 2011 21:07:12 +0200, Wojciech Mu?a
    <w...@p...null.onet.pl.invalid> wrote:

    >On Sun, 07 Aug 2011 11:51:19 -0500 A.L. <l...@a...com> wrote:
    >
    >
    >
    >> Jak uczyc sie od mistrzow, to raczej uczycsie od prawdziwych
    >> Mistrzow. Polecam ksiazke "Software Tools", Kernighan i Plauger.
    >> Kod (kompletny i dzialajacy) wielu UNIXowych utilities. Proponuje
    >> znalezc "goto". A niektore z owych utilities calkiem skomplikowane:
    >> makrporocesor M4, czy edytor ed.
    >
    >Jest polska edycja, pt. "Narzędzia programistyczne w Pascalu". Czytałem
    >większe fragmenty i uważam, że to powinna być lektura obowiązkowa na
    >pierwszym roku studiów. Nie mówiąc, że bardziej wciąga niż niejedna
    >powieść. :)
    >

    Sa dwa wydanie: jedno (pierwsze) w C a drugie w Pascalu. Mialem na
    mysli to pierwsze. Ale oba sa dobre.

    >> Owzm, goto jest uzyteczna. Tak samo jak schodki w rakietach. Jak
    >> mawial Osla Laczka, nauczyciel Pirxa: "schodki sa potrzebne dla
    >> umierajacych atronautow"
    >
    >W praktyce goto ma zastosowanie do jednej rzeczy - zebranie w jednym
    >miejscu kodu, który zwalnia pamięć, zamyka pliki itd. Używałem w C,
    >w modułach dla Pythona. Inaczej nie szło tego napisać, bo kod by się
    >powielał n razy, co wg mnie było zupełnie niepotrzebnie i dawało okazję
    >do większej liczby błędów.

    Owszem. Jak Holub pisze: "there always are exceptions to rules"

    A.L.


  • 27. Data: 2011-08-07 21:22:48
    Temat: Re: kwestia estetyczna
    Od: m...@t...pl


    > Single Entry Point, Single Exit Point Style

    > A piece of code is likely to be more easily understood if it has only
    > one entry point (at the top of its listing) and only one exit point at
    > (or near, e.g., a return statement just before the closing "}" of a
    > non-void C++ function) the bottom of its listing. In C++, this
    > philosophy has the following implications:

    Czasami to jest racja a czasami bez sensu. Czesto czuje duzy
    komfort jesli ciag instrukcji ktorego dotyczy if jest krotki, w
    szczegolnosci gdy sprowadza sie do jednej instrukcji return.
    Jesli mamy:
    if( warunek ) {
    instrukcje;
    }
    to oczy zwyczajnie sie mecza przy w wyszukiwaniu klamry
    zamykajacej. Nawet gdy procedura ma 20-30 wierszy to
    jest meczace.

    W takim kodzie:
    if( ! warunek )
    return;
    instrukcje;
    szybciej widze i rozumiem cale(!) przeznaczenie tego ifa.

    Moze to zalecenie pochodzi z czasow gdy trzeba bylo zamykac
    pliki, zwalniac pamiec, itd? Wtedy owszem w przy kilku
    punktach wyjscia trudniej zapanowac nad zwalnianiem zasobow.
    Dzis sa jezyki w ktorych pamiec i uchwyty plikow niewiele
    mnie obchodza. A moze ten kto to zalecal mial wyjatkowy
    dryg do liczenia klamerek? Ja takiego nie mam, myle sie i
    mecze, musze korzystac z ulatwien.

    > Don't use goto statements. If the target of a goto is not at the start
    Instrukcja goto to jeszcze inna sprawa... srednio uzywam jej raz
    na rok, nie wiem dlaczego... jak czuje ze trzeba uzyc goto to uzywam i
    tyle.


    > In general, it's wise to keep every subprogram (in C++, every
    > function, including main) short. A reader typically tries to
    > understand one function at a time, so keeping functions short makes
    > them more "digestable." A classical guideline: a maximum of 25 lines
    > of code, what used to be the maximum viewable on a computer screen
    > using a typical text editor. Today's screens often show more than 25
    > lines, and I won't send a student to the guillotine for a 26th line,
    > but if you're in excess of 30, there's probably a natural way to
    > abbreviate your function, perhaps by extracting one or more blocks of
    > its code as (a) separate function(s).

    No ale co z tego ze moge wydzielic z jednej procedury 10-30 blokow?
    Na czytelnosci nie zyskam nic. Na bezpieczenstwie nic. Wydajnosci
    nie potrzebuje. Co za roznica czy mam 30 funkcji czy jedna funkcje
    z 30-ma blokami? Przypomne ze mowie o funkcji ktora nie ma nawet
    jednej petli, nie wspominajac o danych lokalnych. Sterowanie leci z
    gory do dolu, wykonywane sa kolejne testy, jak test nie przechodzi
    to jest return. Sa przypadki gdzie podzial na 30 funkcji powoduje
    tylko klopot - chocby wymyslenie sensowych nazw dla funkcji. No
    chyba ze zrobie bez sensownych nazw, wtedy moze nie pomyle sie
    przy kolejnosci wywolania, bo po numerkach latwiej poznac:

    Funkcja1() {
    }
    Funckcja2() {
    }
    ...............
    FunkcjaN() {
    }
    Funkcja() {
    if( ! Funkcja1() ) return 1;
    if( ! Funkcja2() ) return 2;
    if( ! FunkcjaN() ) return N;
    }

    Zysk z takiego czegos jest zerowy, taki sam zysk mam z dwoch wolnych
    wierszy pomiedzy blokiem instrukcji.

    Pozdrawiam


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


  • 28. Data: 2011-08-07 21:35:46
    Temat: Re: kwestia estetyczna
    Od: A.L. <l...@a...com>

    On Sun, 07 Aug 2011 23:22:48 +0200, m...@t...pl wrote:

    >
    >No ale co z tego ze moge wydzielic z jednej procedury 10-30 blokow?
    >Na czytelnosci nie zyskam nic. Na bezpieczenstwie nic. Wydajnosci
    >nie potrzebuje. Co za roznica czy mam 30 funkcji czy jedna funkcje
    >z 30-ma blokami?

    Obawiam sie ze sie nie porozumiemy. Dobrze ze nie pracujemy razem.

    A.L.


  • 29. Data: 2011-08-08 08:03:32
    Temat: Re: kwestia estetyczna
    Od: m...@t...pl

    > On Sun, 07 Aug 2011 23:22:48 +0200, m...@t...pl wrote:
    > >No ale co z tego ze moge wydzielic z jednej procedury 10-30 blokow?
    > >Na czytelnosci nie zyskam nic. Na bezpieczenstwie nic. Wydajnosci
    > >nie potrzebuje. Co za roznica czy mam 30 funkcji czy jedna funkcje
    > >z 30-ma blokami?
    > Obawiam sie ze sie nie porozumiemy. Dobrze ze nie pracujemy razem.
    Tym sposobem wkradl sie aspekt pracy. Otoz to co sie robi w pracy
    czesto w jakims stopniu odbiega od wlasnych pogladow. Jak ktos
    chce zebym napisal cos w okreslonym stylu i za to placi, to przeciez
    nie powiem mu ze nie napisze. Nawet jak ktos nie narzuca stylu
    programowania, a np. kolega z pracy powie mi: napisz w taki i taki
    sposob bo tak lubie, to nie bede sie szczegolnie buntowal.

    Ostatnio mialem specyficznego klienta, osoba prawdopodobnie
    poczatkujaca w C/C++, a chcial aplikacje z kodem zrodlowym.
    Otrzymalem takie wytyczne, cytuje: "napisz to tak, zeby glowna
    struktura danych byla w postaci zmiennych globalnych, bo tak
    bedzie latwiej". Nie mam bladego pojecia co bedzie latwiejsze
    gdy glowna struktura bedzie dostepna globalnie, czyli dostepna bedzie
    dla wszystkich metod w programie. On chcial, a ja pokornie zrobilem,
    bylo troche trudnej, ale to nie ja placilem za sposob wykonania.

    Ja gleboko ubolewam ze nie pracujemy razem Panie Andrzeju.
    Jakbym np. przy uzyciu jakiegos narzedzia wysiwyg wygenerowal
    fragment interfejsu grficznego np. w xmlu, a potem kierownik
    projektu by mi powiedzial: "teraz nie kopiuj tego do jednego stringa,
    ale dobrze zastanow sie jakie tam sa logiczne czesci i podziel to na
    50 procedur, tak zeby w kazdej bylo gora 20 wierszy, a my ci
    potem i tak dobrze zaplacimy za kazda godzine pracy..." Piekna to
    byla by praca... tylko siedzenie i ciecie banalnego kodu
    na procedury... Czasami jestem bardzo zmeczony z powodu
    presji na efektywnosc czasowa... Chcialbym tak sobie siedziec i
    przez 90% czasu ciac na male fragmenty i dobrze zarabiac, tak
    dobrze jak zarabiaja w Ameryce, naprawde bardzo ubolewam
    ze nie pracujemy razem.

    Pozdrawiam

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


  • 30. Data: 2011-08-08 13:27:00
    Temat: Re: kwestia estetyczna
    Od: A.L. <l...@a...com>

    On Mon, 08 Aug 2011 10:03:32 +0200, m...@t...pl wrote:

    >potem i tak dobrze zaplacimy za kazda godzine pracy..." Piekna to
    >byla by praca... tylko siedzenie i ciecie banalnego kodu
    >na procedury... Czasami jestem bardzo zmeczony z powodu
    >presji na efektywnosc czasowa... Chcialbym tak sobie siedziec i
    >przez 90% czasu ciac na male fragmenty i dobrze zarabiac, tak
    >dobrze jak zarabiaja w Ameryce, naprawde bardzo ubolewam
    >ze nie pracujemy razem.

    Niestety, nawet w Ameryce praca nie sprowadza sie do ciecia kodu. Ale
    tu sie kodu nie "tnie". Tu sie projektuje porzadnie. Od samego
    poczatku.

    Ale ja bardzo przeparszam. Ja predzej uwierze ze w Smolensku byl
    zamach niz ze:

    a) procedura dluga na 1000 linii to jest porzadny projekt,
    b) ze taka procedura jest czytelna i latwa do zrozumienia
    c) Ze taka procedura jest latwa do testowania, modyfikacji i
    utrzymania
    d) ze soft zawierajacy taka procedure nie moze byc zaprojektowany
    inaczej.

    A.L.

strony : 1 . 2 . [ 3 ] . 4 ... 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: