Det är A och O med en god indentering: det ger en lättläst och bra struktur på C++-koden. Använd exvis principen att matchande måsvingar ({ och }) finns i samma kolumn. Det är också viktigt att indenteringen är konsekvent, att man använder samma metod genomgående i koden. När programmet skrivs har man nytta av det understöd för automatisk indentering som finns i själva editorn.
Ex 1: Indentering/kommentering = Läsbar programkod
{
x=2;
y=1;
}
Skrivs bättre så här:
{
x=2;
y=1;
}
Använd samma indragning i alla satsblock.
Ej så här:
{
x=2;
if (...)
{
y=2
}
z=8;
}
Utan så här:
{
x=2;
if (...)
{
y=2
}
z=8;
}
Ex 2a: undermålig indentering och alltför kompakt kod:
int main()
{ double belopp;
double sum=0.0;
int antal,i;
cout<<"Ge antal kvitton:";
cin>>antal;
for (i=1; i<=antal; i++)//läs in alla belopp
{ cout<<"Ge belopp "<<" :";
cin>>belopp;
sum=sum+belopp; //summera beloppen
}
//Skriv ut summan med 2 decimaler
cout<<"Summan="<<setiosflags(ios::fixed)<<setprecision(2)
<<sum<<endl;
return 0;
}
Ex 2b: samma kod som Ex 2a, men med god indentering och luftig kod:
int main()
{
double belopp;
double sum=0.0;
int antal,i;
cout<<"Ge antal kvitton:";
cin>>antal;
for (i=1; i<=antal; i++) //läs in alla belopp
{
cout <<"Ge belopp "<<" :";
cin>>belopp;
sum=sum+belopp; //summera beloppen
}
//Skriv ut summan med 2 decimaler
cout<<"Summan="<<setiosflags(ios::fixed)<<setprecision(2)
<<sum<<endl;
return 0;
}
kostnad nedan.
//***************************************************************************
//Funktion kostnad
//Syfte: Beräknar och returnerar kostnaden för ett telefonsamtal.
//Inparametrar: typ - anger samtalstypen
// start - samtalets starttid
// slut - samtalets sluttid
float kostnad(char typ, int start, int slut)
{
...
}
//***************************************************************************
Ifall funktionen har utparametrar och/eller in/utparametrar så listas även dessa enligt samma princip som ovan. Ett alternativt sätt att kommentera funktionens parametrar är enligt följande:
//***************************************************************************
//Funktion kostnad
//Syfte: Beräknar och returnerar kostnaden för ett telefonsamtal.
float kostnad( char typ, //inparam: anger samtalstypen
int start, //inparam: samtalets starttid
int slut) //inparam: samtalets sluttid
{
...
}
//***************************************************************************
Det är svårt att exakt tala om hur mycket man skall kommentera. Ju bättre variabelnamn desto mindre behöver kommenteras. Det är de olika delmomenten (kodblocken), de viktiga och mer
komplexa delarna i koden som behöver kommenteras. En väldigt komplicerad del kanske förklaras bättre separat med text och figur i separat program- eller algoritmbeskrivning, det kan annars krävas massor
med text i koden. Exempel på kodblock som bör kommenteras är loopar. Ett exempel på något som EJ behöver kommenteras är triviala satser som:
{
int a=0; //Här deklarerar jag variabeln a och nollställer den
cout << "Ge a"; //Skriv ut ledtext
cin >> a; //Här läser jag in a
a++; //Öka a med ett
cout << a; //Här skriver jag ut a
}
För att öka läsbarheten av kod som innehåller styrande satser
(if, while) som innehåller många satser så kan det vara bra att tydliggöra när
den styrande satsen slutar. Om en while-sats börjar på en sida
och slutar på nästa kan det vara svårt att granska programmet.
Det kan lösas på följande sätt:
Ex. 6:
while (godis==gott)
{
...
//många satser
...
} //slut på while (godis==gott)
inmatning består av 10 C++-satser, funktionen algoritmX av 25 satser och funktionen skrivut av 7 satser. En main-funktion som anropar dessa blir kort och lättläst:
int main()
{
int a,b,c,x;
inmatning(a,b,c); //Inläsning av a,b,c
x=algoritm(a,b,c); //Beräkna x enligt algoritmen
skrivut(a,b,c,x); //Skriv ut resultatet
return 0;
}
Funktionerna kan återanvändas. De fyra funktionerna i Ex. 7 ersätter därmed tre kodblock i main-funktionen. Om dessa kodblock istället skrivits direkt i main-funktionen skulle den bestå av 10+25+7=42 satser och skulle ej bli lika lättläst.
int main()
{
//Kodblock 1 - Inläsning av a,b,c (10 satser)
...
//Kodblock 2 - Beräkna x enligt algoritmen (25 satser)
...
//Kodblock 3 - Skriv ut resultatet (7 st satser)
...
}