-
Data: 2011-08-06 23:21:31
Temat: Re: kwestia estetyczna
Od: m...@t...pl szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]> On Sat, 06 Aug 2011 22:13:47 +0200, m...@t...pl wrote:
> W dalszym ciagu nie rozumiem co wielowatkowosc ma do rzeczy
Przeciez to proste, nie trzeba wykonywac testow zwiazanych z
synchronizacja watkow, program bez watkow jest prostszy, mniejszy,
mniej trzeba sie w nim troszczyc o estetyke kodu. A moze to
juz chodzi o cos wiecej niz estetyke i styl, moze chodzi o
jakas "systematycznosc".
> Jezeli klamra otwiera sie w linii 100 a zamyka w linii 1000, to
> jedynym sensownym rozwiazaniem jest wyrzucenie programisty z pracy.
> Najlepiej z wilczym biletem.
Ja raczej bym wyrzucal gdy przestali myslec a zaczeli stosowac
jakies "twarde zasady".
> Ja przypomne czasy gdy na pl.comp.objects toczyly sie zazarte
> dyskusje, miedzy innymi o stylu programowania. Z owych czasow, zapewne
> przedpotopowych z punktu widzenia mlodych "miszczow" programowania
> pochodzi zasada: jak metoda nie miesci sie w calosci na ekranie, to
> prawdopodobnie cos spieprzyles z projektem.
Zgadza sie, to oznacza ze prawdopodobnie cos zostalo
spieprzone. Ale projekt o ktorym mowie jest bardzo
staranny. Programowanie to nie matematyka, ze jesli
2 + 2 = 5 to cos na pewno zostalo spieprzone.
Nie zawsze jest wyrazna korzysc z rozbicia jednej
duzej procedury na 20 malych procedur. W duzej
ilosci malych procedur czasami tez mozna odczuc
wrazenie metliku.
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). Przed
wykonywaniem wlasciwych operacji na danych nastepuje
szereg testow. Testy sa podzielone na kilka logicznych
etapow, ale pomimo to, jeden z etapow testowania bywa
orgomy. Procedury testujace tylko odczytuja dane,
wiec niebezpieczenstwo bledu jest znikome. Procedury
testowe niemal nie pracuja na swoich lokalnych danych,
dane testowe sa przygotowywane przez inne procedury.
Nie ma mowy o zadnym partactwie w projekcie, projekt
jest... okreslilbym wlasnie "systematyczny". Np. w
przypadku wykrycia usterki od razu z duzym
prawdopodobienstwem wiadomo w ktorym pliku sie
ona znajduje i w ktorej procedurze.
Mniej/wiecej mam taki kod:
pusty wiersz
pusty wiersz
/********************************/
/* Komentarz */
tmp = odczyt_danych_1();
if( ! tmp.test_a() ) {
cofniecie transkacji
logowanie bledow
return kod_bledu;
}
/*********************************/
Oczywiscie czasami jest bardziej skomplikowany, ale
najwazniejsze jest to, ze dane loklane sa mocno ograniczone i
jeden test ma praktycznie zerowa mozliwosc wplywu na drugi.
Na 1-2tys linii kodu sa 2-3 zmienne lokalne.
A zreszta po podziele co zrobic? Moze tak:
LacznyTest() {
if( Test1() ) {
if( Test2() ) {
if( Test3() ) {
.............
return 0;
} else
return kod_bledu_N;
} else
return kod_bledu_N-1;
}
...................
} else
return kod_bledu_1;
}
przeciez to jest nadal bagno, trzeba cudu zeby w tych
klamerkach sie nie pogubic. Kluczowe dla czytelnosci
jest:
if( warunek )
akcja();
a nie:
if( warunek )
duzy odstep
akcja();
Od razu widac jaki warunek jest zwiazayn z jaka akcja.
Analogicznie w duzych petlach:
for( ... ) {
if( ) {
if( ) {
if( ) {
}
}
}
}
Przy duzej ilosci if-ow robi sie metlik. Jesli tylko mozna,
to nalezy uproscic przez continue. contiune i return upraszcza,
bo od razu widac ze gdzies pomiedzy zamykajacymi klamerkami
nie ma kodu ktory sie moze wykonac gdy warunek jest nieprawdziwy.
Podczas myslenia nad znaczeniem warunku od razu odrzucamy
czesc kodu petli, albo czesc kodu procedury - jest prosciej,
mamy mniej aspektow do przeanalizowania.
> Zreszta, zalecenei jest aktualne do dzis. Proponuje mala ksiazeczke
> "The Elements of Java Style", Vermuelen i inni, paragraf 69: Define
> small classes and small methods.
> O ile mi wiadomo, ksiazeczka byla wydana po polsku
Dobrze znam ta zasade, jesli widze w danym zastosowaniu
plynace z niej korzysci to ja stosuje. Ba, nawet jesli
nie widze korzysci to ja czesto stosuje - bo bardzo lubie.
Jednak jesli korzysci sa znikome, albo dyskusyjne i jej nie
zastosuje to potem nie cierpie w zaden sposob z powodu
jej braku w projekcie.
Pozdrawiam
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Następne wpisy z tego wątku
- 07.08.11 00:05 A.L.
- 07.08.11 06:15 m...@t...pl
- 07.08.11 08:29 g...@p...onet.pl
- 07.08.11 10:02 m...@t...pl
- 07.08.11 10:03 Wojciech Jaczewski
- 07.08.11 15:06 p...@p...onet.pl
- 07.08.11 15:53 A.L.
- 07.08.11 16:51 A.L.
- 07.08.11 18:27 Paweł Kierski
- 07.08.11 18:35 Paweł Kierski
- 07.08.11 18:45 A.L.
- 07.08.11 19:07 Wojciech Muła
- 07.08.11 20:29 A.L.
- 07.08.11 21:22 m...@t...pl
- 07.08.11 21:35 A.L.
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-04 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2024-12-04 Czy policjantów należy ROZBROIĆ?
- 2024-12-03 Tymoteusz Sz.
- 2024-12-03 Re: Prezydent ułaskawia: Prezydent USA Biden (D) ułaskawia syna własnego
- 2024-12-03 Re: Tani dodatkowy sim do smartwacha
- 2024-12-03 Wróblewo => Analityk finansowy <=
- 2024-12-03 Praktyczny test GPS...
- 2024-12-02 Tak się sprzedają elektryczne woldzwageny ;-)
- 2024-12-02 Akumulator do Hyundai
- 2024-12-02 Olsztyn => Sales Specialist <=
- 2024-12-02 Poznań => Technical Artist <=
- 2024-12-02 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-02 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-02 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-12-02 Białystok => Delphi Programmer <=