Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Zauważmyjednak,żenietwierdzę,żenapisanieprostszegokoduza-
bieramniejczasu.Możnabysądzić,żetakjest,ponieważfinalniedosta-
jemymniejkodu,aledobrerozwiązanieniepowstajedziękiprzyrastaniu
kodu,aledziękijegodestylacji.
Rzadkostawiasięprzednamieleganckiproblem.Zamiasttegodo-
stajemystertęprzypadkówużycia.Chcemy,abyXrobiłoY,gdyZ,aW
,
gdyAitakdalej.Innymisłowy,mamydoczynieniazdługąlistąróż-
nychprzykładowychzachowań.Rozwiązaniewymagającenajmniejszego
umysłowegowysiłkupoleganaprostymzakodowaniutychprzypadków
użycia,pojednymnaraz.Jeśliprzyjrzymysiępoczątkującymprogrami-
stom,zauważymy,żeczęstozachowująsięwnastępującysposób:ma-
sowoprodukująmnóstwologikiwarunkowejdlakażdegoprzypadku,
któryprzyjdzieimdogłowy.
Niemawtymjednakniceleganckiego,akodnapisanywtakimstylu
walisię,gdypojawiająsiędanewejściowechoćbyodrobinęróżneod
tych,jakiepojawiałysięwprzykładachrozważanychprzezprogramistę.
Gdymyślimyoeleganckimrozwiązaniu,częstomamynamyślitakie,
któremacharakterogólny:odrobinalogiki,któranadalmożepoprawnie
obsłużyćwieleprzypadkówużycia.
Odnalezienietakiegorozwiązaniaprzypominaponiekąddopaso-
wywaniewzorcówczyrozwiązywaniezagadki.Trzebawysiłku,aby
wróżnorodnościprzypadkówużyciaodnaleźćleżącyuichpodstawy
ukrytyporządek.Gdyudanamsiętegodokonać,uczuciejestniesa-
mowite.
BlaisePascalzakończyłjedenzeswych
znanychlistówwnastępującysposób:
UListtenjestdłuższyjedyniedziękitemu,
niemiałemczasunapisaćgokrócej”2.
InnycytatpochodziodAntoine’adeSaint-
-Exupery’ego:UWydajesię,żedoskonałość
osiągasięniewtedy,kiedyniemożnajuż
nicdodać,aleraczejwtedy,gdyniemożna
nicująć”3.
Mówiącwprost,zauważyłem,żezakażdym
razem,gdywracamdoktóregośrozdziału
tejksiążki,stajesięonkrótszy.Niektóre
rozdziałystająsiękrótszeo20%,
nimzostanąukończone.
Zaczynajmyjuż!
Niemalkażdypomijawstępnerozdziały,cieszęsięwięc,żezabrnęli-
śmytakdaleko.Niemogęzaoferowaćwielewpodzięcezaokazaną
cierpliwość,alemogędaćkilkarad,które-mamnadzieję-okażąsię
pomocne:
Abstrakcjaioddzielaniesprawiają,żeewolucjanaszegooprogra-
mowaniajestszybszaiłatwiejsza,nietraćmyjednaknanieczasu,
jeśliniemamypewności,żekod,któregodotyczą,będziepotrze-
bowaćtejelastyczności.
Myślmyowydajnościitwórzmyprojekty,mającnawzględzie
wtrakciecałegocyklurozwojuoprogramowania,alenatakpóźny
etap,jaktotylkomożliwe,odłóżmyniskopoziomowe,zasadnicze
optymalizacje,którewbetonowujązałożeniawnaszkod.
2Cyt.za:BlaisePascal,Prowincjałki,przeł.TadeuszBoy-Żeleński.Bezpłatneelek-
tronicznewydanieksiążkidostępnejestnastronachprojektunWolneLektury”:https://
wolnelektury.pl/katalog/lektura/prowincjalki/.
3Cyt.za:AntoinedeSaint-Exupéry,Ziemia,planetaludzi,przeł.WieraiZbigniew
Bieńkowscy,Muza,2002.
Wierzciemi,dwamiesiąceprzed
dostarczeniemproduktutoniejestdobry
momentnato,abyzacząćmartwićsiętym
drobnym,uporczywymproblememobja-
wiającymsiętym,żegradziałazpłynnością
jednejklatkinasekundę.
ProgramowaniegierWprowadzenie17