Kodstandarder för webbprogrammeraren
Alla som kodat i grupp, eller läst någon annans kod, förstår vikten av att följa en kodstandard. En kodstandard är regler och riktlinjer som anger specifikt hur man döper variabler, funktioner, klasser och metoder samt var måsvingarna skall finnas och hur man tabbar in koden. Det är budorden som bestämmer hur din kod skall skrivas.
Vikten av att följa en kodstandard går inte underskatta, eller överskatta. Bara gör det.
Att följa en kodstandard är ett steg som tar dig närmare att skriva den bra koden. Illustration från xkcd.com/844.
#Några ledande kodstandarder att studera och följa
Olika språk har olika kodstandard, olika företag likaså. Det enda du kan vara säker på är att din egen personliga kodningsstil är underordnad den valda kodstandarden. Tyck vad du vill men gilla läget, annars är du en belastning för arbetsgruppen.
Som webbutvecklare och webbprogrammerare behöver du följa olika kodningsstandarder för HTML, CSS, JavaScript, PHP och SQL. För att få en känsla för hur du bör skriva din kod så kan du studera kodningsstandarder för några av de mest kända opensource-projekten. Börja med att kika på de guidelines som gäller för Wordpress för HTML, CSS, JavaScript och PHP. Fortsätt sedan med Drupals kodstandard. Google har guidelines för HTML och CSS samt JavaScript. Det skadar heller inte att studera de kodstandarder som följs av de PHP klasser som ligger i PEAR-biblioteket och de guidelines som används av Zend.
#Finns det någon kodstandard som följs i kurserna?
Skall jag vara riktigt ärlig så är det en blandning av befintliga standarder som används i kurserna. Det är också så att kodningsstandarden mellan kurserna kan skilja. Det är helt enkelt så att kurserna är utvecklade under en längre period och jag har valt att ändra min egen personliga kodningsstandard under resans gång. Ibland använder jag ett visst sätt att koda för jag anser att det är enklare och i sammanhanget mer pedagogiskt, men i andra fall så kan jag till och med frångå alla kodningsstandarder för jag anser att koden helt enkelt blir vackrare på ett visst sätt. Men, låt oss titta på de vanligaste varianterna som jag använder i min PHP-kod.
#Formattering
#Hur stor intabbning?
Min tabbstorlek är 2 mellanslag och jag använder soft tabs 123 vilket innebär att en tab ersätts av min texteditor med valt antal mellanslag. Det gör att min kod ser likadant intabbad ut oavsett vilken editor som visar den. Tabbstorlekten skiljer sig mellan olika editorer och det är också en vanlig inställning som användaren själv ändrar. Vanligast är tabbstorlekar om 2, 4 eller 8 mellanslag.
#Hur formattera med mellanslag och måsvingar?
På följande sätt skriver jag måsvingarna och formatterar med mellanslag.
function myfunc($a, $b) {
if($a == 1) {
;
}
elseif($b == 1) {
;
}
return null;
}
I vissa fall när jag skriver egen kod så kan jag faktiskt skriva hela if-satsen på en rad. Detta är ju annars ett ytterst vanligt sätt att införa problem i sin kod 4. Men när jag gör det så är det oftast kontroller som görs överst i en funktion och jag gör det för att spara på antalet rader.
function myfunc($a) {
if($a == 1) return null;
return true;
}
#Kommentarer
Framförallt så försöker jag använda PHPDoc. I övrigt så blandar jag med kommentarsstilarna //
och /* */
.
/**
* This is a PHPDoc comment.
*
*/
#PHP sluttag används ej
I de fall då filen enbart innehåller PHP-kod så använder jag aldrig sluttagen ?>
. Den behövs inte och ställer enbart till problem genom att den kan införa tomma tecken vilket påbörjar utskriften vilket kan störa sessionen.
Följande felmeddelande är vanligt när man glömmer tomma tecken efter en avslutande PHP-tagg.
Warning: Cannot modify header information - headers already sent by (output started at /home/saxon/teachers/tek/mos/www/test/1.php:2) in /home/saxon/teachers/tek/mos/www/test/2.php on line 4
#Namngivning
När det gäller namngivning så mixar jag camelCase med CamelCase (PascalCase eller upper camel case) med att använda _
för att avgränsa orden. På följande sätt mixar jag varianterna.
Typ | Exempel | camelCase | PascalCase | Underscore |
---|---|---|---|---|
Functionsnamn | getCurrentUrl() |
x | ||
Klassnamn | CLydia |
x | ||
Interface | ISingleton |
x | ||
Controller class | CCBlog |
x | ||
Model class | CMBlog |
x | ||
Funktion i template-fil | render_view() |
x | ||
Variabelnamn | $someVariable |
x |
Klassnamn börjar alltid med stort C
, interface med stort I
, kontroller med CC
och modeller med CM
. Filnamnen är samma som klassens namn följt av .php
.
Vyer, eller template-filer, det vill säga filer som i huvudsak innehåller HTML och skrivbaserad PHP-kod som skriver ut innehåll på variabler namnges med vy-namn.tpl.php
.
#Kodgranskning
Kodgranskning, eller inspektion av kod, är ett vanligt sätt att sitta i grupp och kvalitetsgranska kod. Det är ofta en del av testfasen i ett programutvecklingsprojekt. Aktiviteten genomförs enklast genom att man skriver ut koden på papper, går hem och läser igenom den och kommer till ett möte, väl förberedd, där man tar upp de saker som inte stämmer mot de guidelines man använder. Egentligen är syftet med kodgranskning att tidigt se fel o gränssnitt och prestanda genom att identifiera undermåliga lösningar. I kodgranskningar kan man ofta finna problem som är svåra att testa sig fram till.
Om man väljer att använda verktyg som formatterar ens kod enligt den valda guidelinen så kan kodgranskningen fokusera på brister i koden och man slipper påpeka enkla saker som var måsvingar skall sitta och hur variabler skall namnges. I större projekt så är det nästan oumbärligt att tvinga formattering av kod. Det sparar tid.
#Avslutningsvis
Oavsett vilken kodstandard du väljer så se till att följa den. Var konsistent. Det är det absolut viktigaste.
#Gör som gruppen
Glöm inte, när du kodar i grupp så gäller gruppens gemensamma kodningsstandard. Din egen filosofi är oväsentlig så länge den inte är del av den av gruppen accepterade kodstandarden.
#Programmeringsprov allt vanligare som arbetsprov
När du söker nytt jobb så blir det allt vanligare med programmeringsprov som arbetsprov. Det är ett bra sätt att visa upp vad man kan i problemlösning, kodning och att skriva bra kod. I såna fall är det ytterst viktigt att du har en konsistent kodningssätt så se till att redan nu göra ett medvetet val om vilken standard du avser att följa. Följ den sedan och var konsistent.
#Vad anser du?
Detta om kodstandarder är en fråga som vanligen ger upphov till diskussioner. Vad tycker du?
Diskutera denna artikel och dess innehåll i forumet.
#Revisionshistoria
2013-05-23 (C, mos) Kopierad till dbwebb och utökad från blogspot-versionen.
2010-10-31 (B, mos) Uppdaterad.
2009-10-19 (A, mos) Första utgåvan på db-o-webb.blogspot.com.