|
Smarta
C++-tips
Behöver ni experthjälp
inom C++? |
(av Andy Oram och Greg Wilson, ISBN 0-596-51004-7, 618 sidor)
Innehållsförteckningen fanns att hitta på nätet. Vill du ha exempel på vad kapitlen kan handla om finns ett av dem att läsa online. Här följer en sammanfattning av några favoritavsnitt: Kapitel 3: The most beautiful code I never wroteFörfattaren Jon Bentley kombinerar teori med praktik på ett underbart sätt när han analyserar QuickSort. Han börjar med en implementation av QuickSort med 13 rader kod som räknar antalet jämförelser för en uppsättning slumpvist indata. Det tar en evighet att köra och tar en hel del minne. Han guidar oss sen genom hur man förbättrar analysen i små steg. Tolv programversioner senare slutar han med ett program med fyra rader (!) som exakt räknar ut antalet jämförelser. Det kör blixtsnabbt och tar inget minne. Han skapar alltså ett bättre program med färre rader kod, därav titeln. Och som någon sa: Den kod som har minst fel är den kod som inte finns. Klart läsvärt för den som gillar datalogi. Kapitel 6: Framework for integrated test - beauty through fragilityFörfattaren Michael Feathers beskriver ett riktigt användbart koncept i sitt testramverk FIT (framework for integrated test). Han angriper problemet med att få testspecifikationer både mänskligt läsbara och exekverbara samtidigt. Dina tester beskriver du med en HTML-sida. Varje rad är ett testfall och varje kolumn är en variabel. Ramverket hjälper dig sedan att parsa HTML-sidan så att du kan generera testfall. Resultatet av testerna visas sen i samma HTML-sida med färgkodning. Ramverket består av bara tre klasser och bryter mot alla tänkbara objektorienterade rekommendationer. Det är en väldigt speciell design, vilket gör kapitlet läsvärt bara det. Att ramverket gör ett svårt problem enklare är en bonus. Kapitel 22: A spoonful of sewageFörfattaren Bryan Cantrill beskriver implementationen av blockering och väckning av trådar i Solariskärnan. Och nej, detta är inte ett lättsmält kapitel. Författaren beskriver i detalj en bugg i Solariskärnan som har med trådlås att göra. Lösningen var att specialbehandla en typ av lås (bland en stor mängd olika typer av lås). Och specialfall är ju aldrig kul. När jag känner att jag skrivit "snygg" kod och allt passar perfekt, då vet jag att min lösning är "rätt". Det är bara det att låsproblemet analyserades av några seriöst talangfulla människor under många månader och lösningen har stått sig genom åren (sedan 1999). Och ändå så är lösningen riktigt grisig. Detta speglas också av en kommentar i koden: "You think this [solution] is cheesy? Let's see you do better." (Koden finns här. Sök på "cheesy".) Den stora aha-upplevelsen för mig var följande: Även om koden inte är perfekt så kan den vara "rätt"! På något sätt känns det skönt... Andra bra kapitelHär är några bra kapitel med information att läsa på nätet:
Vill du ha fler tips är du välkommen att anmäla dig till tipsbrevet som kommer varje månad. Naturligtvis kommer jag inte att sprida din e-postadress vidare (läs e-postpolicyn). Om du har möjlighet, läs denna bok redan imorgon. Det är väl spenderad tid. |
