Læringsmål

  • Kan navngive variabler og metoder beskrivende på engelsk
  • Kan skrive kode med ensartede linjeskift og indrykning
  • Kan forklare hvorfor læsbar kode er vigtig — også når programmet virker
  • Kan genkende dårlig stil (fx x, temp, data) og forbedre den

Kode-stil og navngivning

Din kode skal ikke bare virke — den skal også være let at læse for dig selv og andre. God stil handler om små vaner: beskrivende navne, luft mellem idéer og ensartet formatering.

I GF2 Learn kan du formatere kode i opgave-editoren med Ctrl+Shift+F (eller knappen med linje-ikonet). Det retter indrykning og linjeskift efter almindelige C#-regler.

Beskrivende navne

En variabel eller metode skal fortælle hvad den indeholder eller hvad den gør — uden at du skal gætte.

Dårligt Bedre Hvorfor
x studentCount Du kan se, at det er et antal elever
temp totalPrice Du ved, at det er en pris — ikke "noget midlertidigt"
data userNames Du ved, at det er navne
DoStuff() PrintWelcomeMessage() Metodenavnet beskriver handlingen

Undgå forkortelser som cnt, msg, nr — medmindre hele teamet bruger dem konsekvent. message og count er tydeligere for de fleste.

Brug engelske navne til alle identifiers — variabler, parametre, metoder, properties og klasser — også når opgaven og brugerfladen er dansk. Det gør koden ensartet med C#-økosystemet og lettere at dele med andre udviklere.

Element Konvention Eksempel
Lokale variabler camelCase firstName, itemCount
Metoder PascalCase, start med verbum CalculateTotal(), ReadUserInput()
Konstanter ofte PascalCase eller UPPER_CASE MaxAttempts, DefaultTimeout
Klasser PascalCase, substantiv Student, OrderLine

Metoder beskriver en handling — brug et verbum:

Linjeskift og luft i koden

Brug tomme linjer til at adskille logiske trin — som afsnit i en tekst.

// Uoverskueligt — én lang blok
int age = 18;
string name = "Ada";
bool canVote = age >= 18;
Console.WriteLine(name);
Console.WriteLine(canVote);

// Overskueligt — grupperet
int age = 18;
string name = "Ada";

bool canVote = age >= 18;

Console.WriteLine(name);
Console.WriteLine(canVote);

Én idé per linje hvor det giver mening. Undgå at presse tre ting ind på én linje:

// Svært at læse
int a=1,b=2,c=a+b;Console.WriteLine(c);

// Bedre
int a = 1;
int b = 2;
int sum = a + b;
Console.WriteLine(sum);

Indrykning og klammer

I C# bruger vi typisk 4 mellemrum pr. indrykningsniveau. Klammer { og } står ofte på egen linje (Allman-stil):

if (score >= 60)
{
    Console.WriteLine("Bestået");
}
else
{
    Console.WriteLine("Ikke bestået endnu");
}

Indrykning viser hvad der hører sammen — især i if, else, for og while:

Kør Ctrl+Shift+F i GF2 Learn, hvis indrykningen er rodet efter copy-paste.

Små metoder — én opgave ad gangen

Del kode op i korte metoder, der hver gør én ting. Det gør programmet nemmere at læse og fejlsøge.

Du behøver ikke mange metoder fra start — men når en Main bliver lang, er det et tegn på, at du kan opdele.

Kommentarer — kort og med mening

Kommentarer forklarer hvorfor, ikke hvad — koden skal kunne læses uden for mange kommentarer.

// Dårligt — gentager koden
int age = 18; // sætter age til 18

// Bedre — forklarer en beslutning
const int VotingAge = 18; // lovkrav i eksemplet
bool canVote = age >= VotingAge;

Brug // TODO: til ting, du skal lave senere — som i GF2-opgaverne.

Tjekliste før du afleverer

  • Variabelnavne er beskrivende (engelsk, camelCase)
  • Metodenavne starter med et verbum (Print, Calculate, Read)
  • Der er luft mellem logiske trin (tom linje)
  • Indrykning er ensartet (brug formatering)
  • Ingen "magiske tal" uden forklaring — brug fx const int MaxAttempts = 3;
  • Koden kan læses højt op næsten som en sætning

Test din viden

Spørgsmål 1

Hvorfor er beskrivende variabelnavne vigtige?

Spørgsmål 2

Hvilket metodenavn følger bedst C#-konvention?

Spørgsmål 3

Hvad er formålet med en tom linje mellem to kodestykker?

Spørgsmål 4

Hvad gør Ctrl+Shift+F i GF2 Learn editoren?

Spørgsmål 5

Hvilken kommentar er bedst?

Spørgsmål 6

Hvad betyder det, at en metode har ét ansvar?