- Koden ska följa PEP 8.
- Moduler (själva filen), funktioner, klasser och metoder ska kommenteras enligt PEP 257.
- Koden ska följa koddispositionen nedan.
- Koden ska utföra uppgifterna enligt respektive uppgiftsbeskrivning.
- Koden ska vara uppdelad i olika filer enligt instruktionerna för respektive uppgift.
För hjälp med kontroll av PEP, se PEP 8 och PEP 257.
Krav på koddisposition
För att göra det lättare att hitta i koden är det bör den följa en genomtänkt koddisposition. Nedan är en vanlig disposition som används i många språk.
- Alla import-satser placeras högst upp i filen (se också PEP8 - Imports för intern ordning)
- Eventuella globala konstanter
- Funktionsdefinitioner och klassdefinitioner
- Kod utanför funktioner, t.ex. anrop till en
main()-funktion och annan kod iif __name__ == "__main__":-block.
Krav på kommentarer och namngivning av funktioner och variabler
- Alla satser som består av fler än en rad ska ha en tillhörande kommentar. Dvs
if-satser, loopar, funktioner och metoder. Kommentaren ska inte vara en “innantilläsning” av koden den hör till. Använd rätt notation (dvs."""för dokumentationssträngar,#för kommentarer i löpande kod, se PEP8 och PEP257).- Anmärkning: Kommentarskravet reflekterar inte nödvändigtvis kommentarskrav “i verkligheten” utan finns som krav i kursen för att ni ska öva er på att skriva kommentarer som förklarar kod. I verkligheten är det viktigare att koden är “självdokumenterande” med bra namn på variabler och funktioner, och att kommentarer bara används sparsamt när det verkligen behövs.
- Funktioner och variabler ska vara döpta på ett bra sätt, dvs att de är beskrivande och reflekterar innehåll/funktion. Låt funktionsnamn vara verb och variabelnamn vara substantiv. Undvik namn på enbart en bokstav (var beredda att kunna motivera varför ni valt just det namnet). Se PEP8 - Naming Conventions för mer detaljer.
Här är icke-godkänd kod:
|
|
Här är en godkänd variant:
|
|
Undvik hårdkodade värden
Minimera användningen av “hårdkodade” värden, dvs. litteraler på allehanda ställen i koden, använd istället variabler eller konstanter med förklarande namn.
Som tumregel kan ni tänka att om ni använder samma litteral på fler än ett ställe i samma syfte, eller om det är en sifferlitteral som inte är -1, 0 eller 1, så ska ni ersätta det med en variabel.
En annan anledning att byta ut ett hårdkodat värde mot en variabel är för att enklare kunna experimentera med olika värden genom att ändra variabelvärden som samlats på ett smidigt ställe i koden.Om ni tänker “Men det är så svårt att komma på vad vi ska döpa den till” så ska ni komma ihåg att det är ännu svårare för en utomstående att förstå vad syftet med värdet är.
Användning av hårdkodade siffervärden (även kallade för “magic numbers”) ses generellt sett som ett anti-mönster, dvs. ett mönster man ska undvika. Läs mer om detta på t.ex. Wikipedia.
Ej godkänd kod
kontosaldo = 2000
att_betala = 500 - (500 * 0.1)
att_betala += 240 - (240 * 0.1)
kontosaldo -= att_betala
Godkänd kod
kontosaldo = 2000
pris_godis = 500
pris_godispåse = 240
rabatt = 0.1
att_betala = pris_godis - (pris_godis * rabatt)
att_betala -= pris_godispåse - (pris_godispåse * rabatt)
kontosaldo -= att_betala
Rekommendation: Dela upp er kod
- Dela upp er kod i delfunktioner vid behov:
- när ni stöter på kod som ni upprepar, bryt ut koden (lägg koden i en separat funktion/metod)
- skicka nödvändig information som argument till funktionen och låt den returnera eventuellt resultat, använd inte globala variabler
- dela även upp er kod i fler funktioner/metoder när den blir för lång
Som tumregler, försöka se till att era funktioner
- endast gör en sak
- inte är längre än 15 rader (gärna kortare) exklusive kommentarer
Sidansvarig: Johan Falkenjack
Senast uppdaterad: 0001-01-01
