Hej alle.
Nu sad jeg her forleden og læste noget kode igennem. Det der slog mig var hvor dårligt skrevet, koden var. Bevares, den viste hvad den skulle, men når man sad og læse koden, var den noget nær uforståelig. Her er et lille eksempel på, hvordan dele af den var skrevet:
if($connected_to_database === false) echo'</pre> <div id="error_container"> <div class="error_text">Fejl, der blev ikke oprettet forbindelse til databasen</div> </div> <pre> '; if($connected_to_database === true) echo '</pre> <div id="succes_container"> <div class="succes_text">Fejl, der blev ikke oprettet forbindelse til databasen</div> </div> <pre> ';
Dette var en af det lettere læselige af dem. Andre steder i koden kunne man finde funktioner bestående af 4-5 funktions-kald på en linie! Problemet med denne kode er, at den er utrolig svær at vedligeholde i fremtiden, når den ikke er skrevet ordenligt.
På baggrund af denne kode har jeg besluttet mig for, at jeg vil skrive nogle hurtige retningslinier jeg normalt selve kode efter, og har gode erfaringer med at andre også kan læse.
Undgå ‘shorthand’ if-sætninger
For guds skyld. Undgå at skrive if-statements sådan her :
if($a == $b) echo "A og B er ens";
Som udgangspunkt ser det jo fint ud – det er kort og let at skrive. Problemet er bare, at lige så snart du tilføjer en linie kode mere til hvis a == b, så bliver den udført uanset hvad. Denne metode udføre kun det næste statement og ikke flere end det ene. Skriv i stedet hellere sådan her:
if($a == $b){
echo "A og B er ens";
}
Koden fylder som udgangspunkt mere, men den er langt lettere at opdatere. Man kunne fristes til bare at skrive den sådan her:
if($a == $b){ echo "A og B er ens"; }
Personligt ville jeg dog beholde den lidt længere (langt lettere at læse) kode, i tilfælde du en dag skal ændre noget. Denne metode og også utrolig svær at læse, lige så snart den begynder at indeholde mere end 1 statement.
PHP er inden i HTML – ikke omvendt
Som det også ses i det første eksempel har programmøren besluttet, at han skulle udskrive noget HTML, og det har han gjort via echo. Som udgangspunkt er der jo ikke noget galt i, at han skriver noget, da det er det PHP (for det meste) handler om, hvortil echo er skabt. Problemet er at det er en utroligt besværlig måde at gøre det på, når der er tale om rent HTML. Han skal sørge for, at der ikke er nogen af de omsluttende tegn (‘ eller “) i koden, som der altid er i HTML. Dette tager tid og er besværligt. I stedet er det langt letter at læse og skrive, hvis man gør sådan her:
<!--?php if($connected_to_database === false) ?--></pre> <div id="error_container"> <div>Fejl, der blev ikke oprettet forbindelse til databasen</div> </div> <pre> <!--?php if($connected_to_database === true) ?--></pre> <div id="succes_container"> <div>Fejl, der blev ikke oprettet forbindelse til databasen</div> </div> <pre>
Koden vil udskrive præcist det sammen – den er blot langt lettere at læse og opdatere. Man slipper for at undgå dobbelt citations-tegnene i sin HTML, og det er let at finde HTML-en, hvis man bruger en editor med syntax-highlighting. I tilfælde af han vil udskrive nogle PHP-variabler ,nu hvor han er i gang, ville jeg gøre sådan her:
<!--?php if($connected_to_database === false) ?--></pre> <div id="error_container"> <div>Fejl, der blev ikke oprettet forbindelse til databasen <!--?php echo $var1; ?--></div> </div> <pre> <!--?php if($connected_to_database === true) ?--></pre> <div id="succes_container"> <div>Fejl, der blev ikke oprettet forbindelse til databasen <!--?php echo $var2; ?--></div> </div> <pre>
Langt lettere at overskue end f.eks. det her:
<!--?php if($connected_to_database === false) echo'<br ?--></pre> <div id="error_container"> <div class="error_text">Fejl, der blev ikke oprettet forbindelse til databasen '.$var1.'</div> </div> <pre> '; if($connected_to_database === true) echo '</pre> <div id="succes_container"> <div class="succes_text">Fejl, der blev ikke oprettet forbindelse til databasen '.$var2.'</div> </div> <pre> '; ?>
Brug ‘if & else’ i stedet for 2 if’s
Sørg for at undgå to if-statements der evalutere den sammen variabel. I hvert fald hvis det kan undgås som i eksemplet her. Det er både hurtigere at køre (hurtigere sidevisninger), og så er det langt lettere at finde rundt i. Problemet med to if-statements er at du får langt flere ‘{‘er og ‘}’er. Disse kan, hvis der er mange, gøre koden svære at læse og forringe læsbarheden.
Afrunding
Her på falderebet vil jeg lige vise forskellen på koden fra starten, og hvordan den ser ud efter den er blevet ‘rengjort’ efter oversående regler
/* Før */ <!--?php if($connected_to_database === false) echo'<br ?--></pre> <div id="error_container"> <div class="error_text">Fejl, der blev ikke oprettet forbindelse til databasen</div> </div> <pre> '; if($connected_to_database === true) echo '</pre> <div id="succes_container"> <div class="succes_text">Fejl, der blev ikke oprettet forbindelse til databasen</div> </div> <pre> '; ?>
/* Efter */
<!--?php if($connected_to_database === false){ ?--></pre>
<div id="error_container">
<div class="error_text">Fejl, der blev ikke oprettet forbindelse til databasen</div>
</div>
<pre>
<!--?php }else{ ?--></pre>
<div id="succes_container">
<div class="succes_text">Fejl, der blev ikke oprettet forbindelse til databasen</div>
</div>
<pre>
<!--?php } ?-->
Jeg håber i kunne bruge det til at gøre jeres kode lettere at læse og opdatere i fremtiden.