Citat:
Ursprungligen postat av
vhe
Jag delar i viss mån fletchmans åsikt. Inte av orsaken i Real Programmers-memet, utan för att jag ser det som ett litet misslyckande varje gång jag tvingas skriva en kommentar. De behövs ju endast när koden i sig inte är det mest tydliga sättet att uttrycka vad man vill ha sagt. I regel tycker jag att programkod är mer begriplig än naturliga språk - inga tvetydigheter (undantaget undefined behaviour), underförstådda saker eller syftningsfel.
När man behöver skriva en kommentar så behöver man det för att man har misslyckats med att producera begriplig kod.
Sedan bör det så klart finnas dokumentation tillhörande funktioner som beskriver deras syfte och förväntade beteende, men att känna att jag behöver skriva en kommentar mitt i en funktion som berättar vad ett par kodrader gör gör alltid att jag stannar upp och tänker ett extra varv på om det kanske går att formulera om till kod som är begripligare än engelska.
Du har rätt. Det finns kommentarer och så finns det kommentarer. Oftast är det ganska enkelt att förstå VAD en bit kod gör, det som är svårt är att förstå VARFÖR. Låt mig ge ett (påhittat) exempel:
Kod:
// Calculate discount
// Parameters: cust The customer, unitPrice The price
// Returns: The discount
int calculateDiscount(Customer cust, int unitPrice) {
...
}
Kommentaren ovan tillför ingenting. Men om den istället hade sett ut så här:
Kod:
// Loyal customers are eligible for discount on certain products.
// The size of the discount depends on several factors like purchase history, ongoing campaigns, etc.
// This function shall be called once for each item in the basket and the returned value summed up to
// give the total discount of the order.
int calculateDiscount(Customer cust, int unitPrice) {
...
}
En sådan kommentar förklarar saker som inte går att utläsa från koden och hjälper utvecklarna att förstå både affärsmodellen och hur funktionen är tänkt att användas. Tyvärr är det - enligt min erfarenhet - extremt ovanligt med bra kommentarer i kod. Oftast förklarar de bara vad koden gör men då är det nästan alltid bättre att faktiskt läsa koden.
Lägger man lite tid på att skriva en kommentar om varför koden gör vad den gör och hur den är tänkt att användas så hjälper man alla andra som någongång behöver läsa och förstå. Och även sig själv när man om 6 månader behöver minnas varför man skrev koden på ett visst sätt.