Skrivet av ivana89:
medans jag fokuserade på alvarligare fel så missade jag if-satsen på rad 19 som "dopedog" tipsar om; där saknades klammerparanteser och jag misslyckades att få 5 av 5 rätt pga något så enkelt och uppenbart :(((
Du kan trösta dig med att åtminstone jag, som hållit på med programmering sedan högstadiet, läst ett masterprogram med fokus på programmeringsspråk och arbetar som mjukvaruingenjör, skulle säga att om det är något av de aktuella felen som inte är ”enkelt och uppenbart” är det just det där!
Syntaxfel och (statiska) typcheckningsfel är i praktiken inga stora problem, oavsett språk, så snart man kommit förbi nybörjarstadiet. I värsta fall får man fråga någon om hjälp, men det finns ingen risk att sådana fel slinker med in i kodbasen och orsakar problem i produktion. Däremot det oacceptabla oskicket att skriva if
-satser på formen
if (condition)
DoSomething();
kan fälla vilken erfaren programmerare som helst – särskilt en som inte känner just det aktuella språket som sin egen ficka.
I just det fall du tar upp i trådstarten blir man ”räddad” av else
, som ger upphov till ett syntaxfel, men i allmänhet (utan else
) är det som upplagt för att någon (inklusive man själv!) senare ska göra en ändring i stil med
if (condition)
DoSomething();
+ DoSomethingElseToo();
och en sådan bugg kan både gå under radarn under lång tid samt vara förvånansvärt frustrerande att felsöka. Den som tycker att det är uppenbart varför det blir fel efter ovanstående ändring bör inte ha några invändningar mot ett helt program skrivet på en enda rad, helt utan radbrytningar, indentering eller annan whitespace.