Min nye bibel innen Smidig Design
- Friday, June 5th, 2009
- Skriv en kommentar
Robert C. Martin’s Agile Principles, Patterns, and Practices in C# er DEN BESTE programmeringsboken jeg noen gang har lest!!!
Det er ikke så ofte man kan begynne en blogpost med en setning som det der, og bruke både all-CAPS og tre utropstegn uten å få en flau smak i munnen. Men denne boken fortjener det virkelig. Den gir deg både lyst og kunnskapen du behøver for å omforme deg selv til en ideell, smidig systemutvikler.
Boken er full av anekdoter som virkelig får deg til å fortså hva som er galt med mange prosesser i dag, og hva som kan gjøres bedre. Og den utgjør bortimot et komplett sett med teknologi-uavhengig kunnskap om hvordan du skal gå fra en diffus problemstilling til et fungerende produkt.
Section I: Agile development
Den første delen av boken handler om smidig utvikling. Bob presenterer hovedtrekkene i eXtreme Programming, og går spesielt i dybden på planlgging, testing og refakturering. Han presenterer også en veldig bra historie som viser hvordan parprogrammering kan fungere i praksis:
“In order to demonstrate XP practices, Bob Koss and Bob Martin will pair program a simple application while you watch like a fly on the wall. We will use test first design and a lot of refactoring to create our application. What follows is a faithful re-enactment of a programming episode that the two Bob’s actually did.”
Historien er også tilgjengelig online, riktignok implementert med Java-kode - du kan lese den her.
Section II: Agile design
Her begynner boken virkelig å ta av. Bob snakker først om hvorfor design “rotner” over tid, og bruker resten av del 2 til å forklare hvordan man skal unngå at dette skjer. Han går i dybden på en rekke prinsipper innen objektorientert design, de såkalte SOLID prinsippene, og selv om jeg hadde hørt og lest en god del om dem fra før var det først med denne boken at jeg virkelig begynte å forstå.
Han forklarer hvorfor prinsippene er viktige, hvordan man skal kode for å innfri dem, og ikke minst hvilken tradeoff det innebærer å følge dem. Dette siste inpirerte meg til å skrive en liten blogpost jeg kalte når skal man følge SOLID prinsippene.
Bob bruker også mye av del 2 til å snakke om UML, og bruk av design-diagrammer innenfor smidig utvikling. Mange er av den oppfatning at modellering er noe man ikke skal gjøre når man er agile, men det kan være både feil og farlig. Bob lærer deg all den UML’en som er nødvendig for en smidig utvikler, og mener mye om hvordan man skal bruke dette “verktøyet”.
Section III: The Payroll case study
I del 3 demonstrerer Bob hvordan man går fra noen diffuse krav til et komplett program. Han bruker TDD, og viser deg all koden han produserer - inkludert testene. Han forteller grundig hvordan han tenker, og vi får se hvordan han følger OO-prinsippene og hvordan koden utvikler seg over tid.
I denne delen presenteres et hav av design patterns / mønstre, den mest forståelige forklaringen av design patterns jeg har vært borti faktisk, og vi lærer hvordan de brukes for å tilfredstille de grunnleggende prinsipene. Med fare for at den som leser boken blir pattern happy lærer han bort Command, Template Method, Strategy, Adapter, Monostate, Null object, Visitor, Decorator, Gateway, Proxy, State, osv., osv.
Denne delen av boken inspirerte meg til å skrive om hvordan man bryter avhengigheter mellom klasser, hvor jeg benyttet Strategy og Adapter.
Section IV: Packaging the Payroll System
I del 4 fortsetter man med applikasjonen fra del 3. Bob forteller oss om hvordan man bryter opp et prosjekt i moduler basert på Cohesion og Coupling. Han presenterer flere prinsipper, og patterns for å understøtte disse prinsippene. Og han fortsetter å presentere enhetstester og kode.
Denne delen inpirerte meg til å kode og blogge om hvordan man kan bruke en tilstandsmaskin til å gjøre kode mer presis og fleksibel: En generisk state machine i C#.
Mot slutten implementerer han også et grafisk brukergrensesnitt, og bruker da WinForms og Model View Presenter-mønsteret (MVP). Dette er det grundigste og mest forståelige eksempelet på MVP jeg noen gang har sett.
Det kan tenkes at jeg leste denne boken på akkurat det riktige tidspunktet i min egen utvikling, og at den ikke vil passe like godt for alle. Jeg tør likevel å anbefale den på det sterkeste til alle utviklere som ikke allerede praktiserer best practices innen smidig utvikling (TDD, parprogrammering, etc.) og som ikke allerede er guruer innen objektorientert design og vedlikeholdbar kode.
Andre Uncle Bob-relaterte blogposter: En karriære innen programmering | For mange utviklere som ikke bryr seg
Kategorier: Softwareutvikling, Bøker, OO-design/clean code.
RSS feed for kommentarene.
Tilbaketråkk.


June 10th, 2009 at 7:40 am
Tilfeldigvis holder jeg på å lese denne boka nå, og det ser faktisk ut til at den kan måle seg med klassikere som Code Complete og The Pragmatic Programmer!
June 10th, 2009 at 9:34 am
Jeg har lest Code Complete for ikke så lenge siden, og må si at jeg foretrekker Agile Principles, Patterns, and Practices in C#. Jeg skulle ønske jeg hadde lest Code Complete for åtte år siden, den gav meg ikke så mye nå som den kunne ha gjort da.
Mens Code Complete dekker et veldig bredt spekter av tema, er Uncle Bob’s bok er mer spisset. Agile Principles, Patterns, and Practices tar et klarere standpunkt i forhold til hvordan man skal utvikle software, og det er mer å hente her for en som ikke enda er en 100% smidig utvikler.
Du kan lese min “anmeldelse” av Code Complete her..
June 12th, 2009 at 10:26 am
Jeg er usikker på om vi får en ny selger eller en ny programmerer som kollega. Jeg føler ihvertfall plutselig en intens trang til å løpe ut og kjøpe boka med en eneste gang! Ikke at det finnes så mange IT-bokhandler i Florø.
June 15th, 2009 at 1:04 pm
Hehe. Nei, jeg er absolutt ingen selger, men kan bli like engasjert som et lite barn av og til, og da er det jo mulig at det smitter. Gleder meg til å begynne hos dere og forhåpentlig vis spre litt mere programmerings-lidenskap.