hvorfor er kode kvalitet sådan en big deal for udviklere?

kodekvalitet kan oversættes til, hvor nyttig og vedligeholdelig din kode er: kode af høj kvalitet kan genbruges og videreudvikles; kode af lav kvalitet varer ikke.

projekter er ofte et løb mod uret, og budgettet er så stramt, at det er en kimær at regne med et par flere hænder til at skrive kode. Skæring hjørner kan synes den nemme vej ud, men det vil ikke betale i det lange løb.

velstruktureret kode, der følger sprogregler, er meget lettere at læse og forstå af forskellige brugere og andre udviklere. Det er også mere pålideligt og undgår fremtidig omarbejdning.

Programmelprojekter kan være underlagt forskellige begrænsninger på forskellige stadier (fra krav til analyse, udvikling, test, implementering og vedligeholdelse), hvilket undertiden kan føre til, at selve koden håndteres som det mindst vigtige aspekt (funktion over form). Men en af de vigtigste — og ofte glemte — egenskaber ved god programmel er dens kodekvalitet.

kodekvalitet kan måles på en række forskellige måder, men nogle af de vigtigste aspekter er:

  • læsbarhed, konsistens – hvor let det er at læse og forstå dele af koden; Dette inkluderer kodeklarhed, enkelhed og dokumentation.
  • forudsigelighed, pålidelighed og robusthed — programmeladfærd skal være forudsigelig og ikke tilbøjelig til skjulte fejl.
  • vedligeholdelighed og udvidelighed — fastsættelse, opdatering og forbedring af programmer skal være så enkel som muligt, ikke i sig selv kompleks.

hvorfor betyder kodekvalitet virkelig noget?

i betragtning af de sædvanlige begrænsninger, der allerede findes i programmeludvikling, hvorfor skulle indsatsen for at producere kvalitetskode være så vigtig?

skrivning af kvalitetskode bør ikke betragtes som en tidskrævende opgave, men snarere som et af hovedmålene ved udvikling af programmer; det skal betragtes som en væsentlig investering, hvor afkastet følger næsten øjeblikkeligt:

  • kode, der er meget læsbar, konsistent og dokumenteret, er lettere at gennemgå, hvilket fører til en meget lavere udviklingsindsats.
  • ren og elegant kode er også meget lettere at forstå, vedligeholde og udvide.
  • programmer, der er godt designet og opnår en lavere kodekompleksitet, gavner også meget med hensyn til testbarhed og robusthed (mindre tilbøjelige til at nye fejl introduceres).

i det væsentlige er en høj kodekvalitet en af de mest effektive måder at sænke teknisk gæld på.

Lad mig vise dig et eksempel

dårlig kvalitetskode kan normalt skyldes:

  • mangel på (eller utilstrækkelig) kodningsstil/standarder.
  • ingen / dårlig dokumentation.
  • dårligt designet arkitektur (uden adskillelse af ansvar, som i MVC).
  • høj metodekompleksitet

i det følgende eksempel kan formålet med metoden ikke identificeres klart uden omhyggelig undersøgelse:

  • der er ingen funktionsdokumentation, ingen kommentarlinjer, og ingen tilsyneladende kodningsstandard følges (set for eksempel i brugen af krøllede parenteser og tomme linjer).
  • kompleksiteten er relativt høj på grund af antallet af forskellige handlinger og processer (DB-forespørgsler, visning/output og forretningslogik), flere indlejringsniveauer.
  • der er en inkonsekvens i måderne til at udføre output og variabel interpolation.

i betragtning af dens lave kvalitet er koden tilbøjelig til fejl/fejl (for ikke at nævne sikkerhedsproblemer) og vanskelig at teste korrekt.

derudover vil eventuelle ændringer i programmet sandsynligvis resultere i en øget udviklings-og testindsats og stadig resultere i, at potentielle nye fejl bliver introduceret.

på den modsatte side er det at følge en kodningsstandard og dokumentere kode et centralt aspekt af kvaliteten.

et tilfældigt eksempel på dette kan ses på det følgende billede, et afsnit af Symfony ‘ s Rammebundle Controller.php:

udover metoden / parameterdokumentationen kan vi tydeligt se, at:

  • koden er enkel og selvforklarende.
  • forskellige logiske sektioner adskilles af tomme linjer.
  • der er få nesting/indrykningsniveauer med tidlige returopgørelser.
  • der er ordentlige designovervejelser (adskillelse af ansvar ved forskellige objekter/klasser).
  • på grund af den høje kodekvalitet og klarhed skal klassen/metoden være let at teste og vedligeholde med lav indsats; sandsynligheden for, at der opstår fejl, skal også være ekstremt lav.

Hvordan kan en høj kodekvalitet opnås?

her er et par tips:

  • valg af en passende kodningsstandard (stil) for sproget eller rammen. For PHP kan PSR-2 for eksempel betragtes som den nuværende standardanbefaling. Det kan være muligt at integrere CS-fikseringsværktøjer med dit udviklingsmiljø (se php-cs-fikseringsmiddel)
  • konsistens i klasse, metode og variabelnavne er en anden vigtig faktor for læsbarhed.
  • sørg for at dokumentere klasser, egenskaber, metoder og bestemte kodeblokke korrekt, når det er nødvendigt, og sørg for, at kommentarer er enkle, koncise og effektive.
  • Refactoring og valg af korrekte designmønstre er en god måde at fremme kode genanvendelighed og strækbarhed, og for at opnå en lavere klasse/metode kompleksitet.
  • tilføjelse af kodeanalyseværktøjer til CI-miljøet, der skal udføres, før nye ændringer flettes sammen. For PHP er phpmd og / eller phpstan værktøjer, der kan advare om potentielle problemer i koden og har en række forskellige konfigurerbare regler.
  • automatiseret test er et andet must-have; det hjælper ikke kun med at forhindre nye fejl, men også for at sikre, at det opfylder kravene og reagerer korrekt på forskellige input.
  • endelig udnytte værktøjer som gransker-ci og Codacy til at teste og vise et klart overblik over kvaliteten af et projekt over tid, og vigtige detaljer om, hvad og hvor problemerne er.

Bottom line

uanset udviklingsmetoder, sprog, rammer eller værktøjer er håndhævelse af en høj kodekvalitet en måde at opnå hurtigere og lettere udvikling, test og vedligeholdelse, hvilket resulterer i reducerede omkostninger ved ejerskab af programmer.

skrevet af Jo Kurto i Kurtcio / seniorudvikler og teamleder hos Cleverti

denne artikel blev oprindeligt udgivet på Clevertis Blog

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.