Hvorfor du er en dårlig PHP-programmerer

Vi har alle våre dårlige vaner. I denne artikkelen går vi over en liste over dårlige fremgangsmåter som er verdt å undersøke, revurdere og korrigere umiddelbart.

Publisert opplæring

Noen få uker besøker vi noen av leserens favorittinnlegg fra hele historien til nettstedet. Denne opplæringen ble først publisert i februar 2011.


Hvem helvete tror du du er?

Hver gang jeg åpner et prosjekt som ikke er min, er det ledsaget av et angst av frykt for at jeg går inn i en slags Temple of Doom-scenario, fylt med felle dører, hemmelige koder, og den ene linjen med kode som på endring, bringer ned hele appen (og muligens sender en gigantisk boulder som siver mot meg nedover en smal gang).

Når vi har feil, og alt er fint bortsett fra noen mindre forskjeller i "hvordan jeg ville ha gjort det," puster vi et lettelse sukk, ruller opp ermene og dykker inn i prosjektet.

Men når vi har rett ... Vel, det er en helt annen historie.

Vår første tanke på å se dette uhellige rotet er vanligvis i tråd med "Hvem i helvete tror denne fyren han er?" Og med rette det; hva slags programmerer ville villig opprette et slikt uhøvel rotet ut av et prosjekt?


Svaret kan overraske deg

Forferdelig kode er akkumuleringen av flere små snarveier eller innrømmelser.

Ditt første instinkt kan være å anta at den fyren som bygget prosjektet, er en nybegynner, eller kanskje han bare er en idiot. Men det er ikke alltid tilfelle.

Min teori er at forferdelig kode er akkumulering av flere små snarveier eller innrømmelser - like ofte som det er et produkt av uerfarenhet eller dumhet. Dette gjør Temple of Doom-appen mye skremmere, fordi den som bygget det, kan være like smart, kunnskapsrik og vellyst som du er. De ble bare lat eller satt sammen i et rush, og hver av de små snarveiene la opp i det svingete marerittet som bare falt i fanget ditt.

Enda scarier, dette kan bety at noen gang arvet noen din kode og straks briste i tårer.


Du er bedre enn det, baby!

Det gjør aldri vondt for å revurdere gjeldende praksis og sørge for at du ikke tar noen snarveier som kan bidra til andres tapte søvn.

La oss ta noen minutter og gå over noen vanlige snarveier, innrømmelser og andre dårlige fremgangsmåter for å sikre at våre prosjekter ikke slår frykt inn i landsbyens hjerter.


Du planlegger ikke før du begynner koding

Før du skriver en enkelt linje med kode, bør du ha en solid plan for angrep.

Før du skriver en enkelt linje med kode, bør du ha en solid plan for angrep. Dette bidrar til å holde deg på sporet og unngår vandrende kode som vil forvirre deg senere, for ikke å nevne noen annen dårlig sjel.

En tilnærming som har spart meg tid - både i utvikling og i kommentar - er å skrive en oversikt i kommentarene først:

 

Som du kan se, uten å skrive en enkelt linje med kode, vet jeg allerede nesten nøyaktig hva filen vil se ut. Best av alt, du kan planlegge en hel applikasjon på denne måten, og hvis du kommer til et punkt der en funksjon krever en funksjonalitet, tweak til en annen, alt du trenger å gjøre er å endre kommentaren.

Det krever et skifte i måten du nærmer deg utvikling, men det vil gjøre prosjektorganisasjonens ferdigheter gå gjennom taket.

MERK: Noen av disse kommentarene er ikke nødvendige; noen av dem vil forandre seg; andre må legges til - det er forventet. Dette er som å skrive en oversikt for et papir eller skrive en dagligvareliste: det holder deg bare på rett spor når du går for å fullføre jobben.


Du kommenterer ikke noe

Men det eneste verste problemet med de fleste koden jeg møter er at det er dårlig kommentert, eller ikke kommentert i det hele tatt.

Det gjør meg trist at jeg må skrive dette ned. Når noe er like enkelt som å kommentere, bør det ikke være noe vi må minne om hverandre å gjøre.

Men det eneste verste problemet med de fleste koden jeg møter er at det er dårlig kommentert, eller ikke kommentert i det hele tatt. Dette gir ikke bare en god del tid til min første kjennskap til prosjektet, men det garanterer ganske godt at en løsning som gjøres ved hjelp av en ukonvensjonell metode ut av nødvendighet, vil forvirre meg. Så, hvis jeg ender med å gjøre noen refactoring, vil jeg ved et uhell ødelegge appen fordi jeg ikke har møtt de formildende omstendighetene som krevde fikset.

Denne prosessen kan ta alt fra 10 minutter til 6 timer. (Og du har gjort dette til meg, jeg vet hvor du bor. Jeg kommer til deg.)

Så si dette høyt:

Jeg, [angi navnet ditt], Herved sværger å gi kommentarer i enhver situasjon der formålet med koden jeg har skrevet ikke er umiddelbart tydelig.

"Umiddelbart tilsynelatende" refererer til kode som ikke kan være selvdokumenterende (fordi det ikke ville være rimelig å gjøre det) og / eller ikke fullfører en døde enkel oppgave. Tenk på det på denne måten: Hvis du måtte stoppe og tenke på løsningen din i mer enn noen sekunder, fortjener det sannsynligvis en rask forklaringslinje.

For å illustrere poenget mitt, skal jeg bruke et eksempel fra en artikkel jeg skrev nylig for nybegynnere. Vurder følgende:

 $ pieces = explode ('.', $ image_name); $ extension = array_pop ($ pieces);

Hva gjør det? Måtte du stoppe og tenke på det? Vet du fortsatt ikke sikkert hva som er lagret i $ forlengelse?

Se på den kilden igjen, men med en rask kommentar:

 // Få forlengelsen av bildefilen $ pieces = explode ('.', $ Image_name); $ extension = array_pop ($ pieces);

Fem sekunder om gangen vil legge opp på en stor måte.

Nå kaster du på denne koden ikke noe ekstra hjernekraft: du ser kommentaren, ser koden, og trenger aldri å stille spørsmål om dens hensikt.

Det kan bare spare deg fem sekunder med kontemplasjon, men hvis du har en kompleks app, vil fem sekunder av gangen legge opp på en stor måte.

Så slutte å gjøre unnskyldninger. Skriv den jævla kommentaren.


Du ofrer klarhet for åpenhet

Gode ​​eksempler på å ofre klarhet for korthet inkluderer uklare variable navn og slippe de krøllete armbåndene.

Det er en universell fristelse å få noe gjort i så få tegn som mulig, men den fristelsen er snill som fristelsen til bare å ha ett par undertøy: sikkert, klesvasket blir gjort raskt, men problemene som oppstår fra ditt valg enormt oppveie fordelene.

Gode ​​eksempler på å ofre klarhet for korthet inkluderer korte, uklare variable navn (for eksempel $ a - hva gjør $ a butikk?) og slippe de krøllete armbåndene.

Fjerning av krøllete hengsler fra kontrollstrukturer er en bestemt kjære av mine. Hvis du ikke liker curly braces, bytt til Python. I PHP er det bare for lett å miste meningen uten dem.

For eksempel, se på dette settet av nestede if-else utsagn uten krøllete braces:

5) ekko "Større enn 5!"; Ellers ekko "Mindre enn 5!"; Ellers ekko "Større enn 10!"; ekko "
Et annet notat. ";

På et øyeblikk ser det ut til at den siste linjen bare skal brenne hvis verdien av $ foo er større enn 10. Men det som faktisk skjer, er et tilfelle av feil innrykning; Den siste ekko uttalelsen vil brenne uansett hva
$ foo butikker.

Kan du finne ut om du ser på det i noen sekunder og vet at hvis-ellers utsagn uten krøllete braces bare påvirker nærmeste neste linje? Selvfølgelig.

Skal du kaste bort energien som regner ut det? Absolutt ikke.

Legge til krøllete braces legger til noen linjer, men det klargjør setningen utrolig, selv med den merkelige innrykket:

5) echo "Større enn 5!";  ellers echo "Mindre enn 5!";  else echo "Greater than 10!";  ekko "
Et annet notat. ";

Ja, det er en god ting å holde koden konsis, men ikke på bekostning av klarhet. Det er verdt de ekstra linjene for å sikre at ingen må knuse hodet mot et tastatur som prøver å sile gjennom koden din.


Du følger ikke en kodingsstandard

Velg en standard og hold deg til den.

Å bli søt med formateringen kan tilfredsstille dine kunstneriske drømmer, men det gjør det ikke bra for noen. Velg en standard (jeg anbefaler PEAR-kodingsstandarden) og hold deg til den. Alle vil takke deg. (Inkluderer deg selv, en dag.)

Stol på meg. Jeg var den fyren en gang - jeg ønsket å ha en "signaturstil" - og jeg spilte mange timer på å fikse min forferdelige formatering senere. Det er en tid å være annerledes og en tid til å gjøre det som alle andre.

Når det gjelder programmering, tenk på det som et snakkespråk. Grammatikk og tegnsetting eksisterer av en grunn: så vi kan tydelig forstå hverandre når vi skriver ting ned. Tenk på kodingsstandarder som en geeky versjon av Strunk & White's Elements of Style. Følg retningslinjene for at folk forstår hva du prøver å si, ikke at du er en kjedelig person.


Du Kopier kode

Du gjør det feil.

Prøv å se på hvert enkelt stykke app som noe som må endres på et tidspunkt. Hvis det gjør det, må du oppdatere mer enn én fil? Hvis du svarte ja, er det på tide å revurdere hvordan du skriver kode.

Hvis du har kode som gjør det samme på mer enn ett sted i appen din, gjør du det feil.


Du følger ikke et utviklingsmønster

Du bør alltid ha en struktur når du kodes.

Du bør alltid ha en struktur når du kodes. Jeg mener ikke å bety at du må følge MVC-mønsteret eller noe like stivt, men jeg mener at du bør vite hvordan du skal klassifisere komponenter og hvor de skal gå.

Ved å følge et logisk utviklingsmønster blir mange avgjørelser automatiske, og noen som kommer inn i koden trenger ikke å gjette mye når man ser etter en bestemt funksjonalitet i kodebase.

Det tar ikke lang tid, og det vil virkelig klargjøre appene dine på en stor måte.


Du er for klok for ditt eget gode

Den enkleste løsningen er vanligvis den mest hensiktsmessige

Det er en fin linje mellom en smidig løsning og en komplisert løsning.

Det er alltid fristende å prøve ut noe søtt nytt triks du har lært, men vi må motstå trang til å tvinge en kompleks løsning til et rom hvor en enkel er tilstrekkelig.

På grunnleggende nivå er den enkleste løsningen vanligvis den mest hensiktsmessige. Du prøver å komme fra punkt A til punkt B - tar en omkjøring gjennom punkt fantastisk er morsomt, men legger virkelig ikke til noen fordeler.

Din super søte løsning utgjør imidlertid et problem der noen andre kanskje ikke har sett den bestemte løsningen, og vil bare gå seg vill. Det er ikke fordi de ikke er så smarte som deg heller; Det er sannsynlig fordi de ikke så den aktuelle artikkelen eller ikke prøvde å tvinge et firkantet konsept til et rundt problem.

Ikke dum deg selv, men husk å unngå overkompliserende ting "bare".


Du er en Wang

Unngå å gjøre koden din vanskelig å forstå for enhver pris.

Da jeg først kom inn i utviklingen, jobbet jeg med en fyr som var en selvutnevnt "ekspert" -programmerer. Hver gang jeg hadde spørsmål om et konsept, ga han meg aldri et rett svar; For å få svaret på mitt opprinnelige spørsmål måtte jeg svare på et par foreløpige spørsmål for å "bevise at du kan takle svaret."

Denne fyren var også veldig god til å skrive kode som var kryptisk, obfuscated, og bare generelt forvirrende.

Filer som hans er resultatet av programmerere som tror at de trenger å gjøre koden vanskelig å lese for å "holde idioter ute."

Den generelle filosofien bak dette har en tendens til å være, "Hvis du ikke er smart nok til å forstå denne koden, bør du ikke være i den i utgangspunktet."

Dette er en dårlig misguided og anti-sosial tilnærming til programmering. Det er en veldig elitistisk måte å se på ting, og det viser at programmereren har mistet kontakten med sine nybegynnerrøtter, da han selv trengte hjelp.

Unngå å gjøre koden din vanskelig å forstå for enhver pris. Det gir deg ikke noe kjøligere eller smartere, og det forsterker ikke respekt. Det gjør deg bare en wang.


Dude, hva snakker du om?

Hvis du slutter å lære, så er prosjektene du jobber med, fast i hvilken tid du bestemte deg for å bosette seg.

I tillegg til snarveiene og generell latskap ovenfor, er en annen ting som kan holde deg tilbake, mangel på fortsatt læring og fremdrift.

Teknologi endres ikke fordi samfunnet generelt kjeder seg og vi bestemte oss for å pusse opp; de fleste nye teknologier dukker opp til å effektivisere og enkelt løse eksisterende problemer. Å velge å ignorere fremgang er å velge å starte den langsomme prosessen med å marginalisere ferdighetene dine.

Her er noen ting vi alle kan slutte å gjøre for å sikre at våre ferdigheter er oppdatert, alt uten å gi opp våre helger.


Du prøver å gjøre alt selv

Finn ut hvilken av disse programmererne har en lignende tilnærming, og la dem fylle deg på de store nyhetene.

Du kan ikke holde tritt med hele samfunnet. Som alle som noensinne har prøvd å fortsette med et abonnement på 200 + tech blogger, vil de fortelle deg at det ganske enkelt ikke kan gjøres innen rimelig tid.

Heldigvis er det de i samfunnet som dedikerer sin tid til å se utviklingen av teknologi og rapportere sine funn. Hvis du tar deg tid til å finne ut hvilken av disse programmererne har en lignende tilnærming og stil, kan du la dem fylle deg på de store nyhetene.

Å se 2-5 av disse "tidlig adopter" -bloggene kan være mer fordelaktig enn å abonnere på hver techblogg du kommer over av flere grunner:

  • Hvis du stoler på deres mening, vil de vise teknologier for deg.
  • Hvis en teknologi dukker opp på mer enn en av disse bloggene, vet du at du bør ta et par minutter for å lære mer om det fordi det er åpenbart populært.
  • Ofte vil disse bloggene inneholde en rask introduksjonsveiledning, som kan spare deg for hodepine for å starte fra null med en ny teknologi.

Blant PHP bloggere jeg stoler på er David Walsh og Chris Shiflett.


Du er ikke ute av din komfortsone

Jeg mener bare at du vil føle deg mer oppfylt som programmerer og se dine talenter fremgang mer og mer hvis du velger å alltid se på neste nivå av programmering.

Hvis du ikke gjør noe som utfordrer deg, er noe galt. Å finne nye utfordringer innen prosjekter er det meste av det som gjør programmering givende (eller i det minste bør det være).

Prøv å stille deg selv følgende spørsmål når du begynner å se på nye prosjekter:

  • Er det en ny teknologi som interesserer meg som gjelder her?
  • Har jeg lært av en bedre måte å gjøre dette siden sist jeg tok på et prosjekt som dette?
  • Er det en god praksis jeg må håndheve som jeg kunne sørge for å følge gjennom hele prosjektet?

Husk: Jeg snakker ikke om å gjøre noe grovt komplisert, her.

Det kan være like enkelt som å huske å legge til Docblocks på objektene dine, eller så komplisert som å gjøre appen din kompatibel med XMLRPC, slik at det er lettere for brukerne å legge inn oppdateringer.

Bare prøv å ikke bosette seg og overbevise deg selv, du har lært alt du skal lære. Da begynner det å bli stygg for deg.


Du deler ikke

Alltid diskutere koden med andre programmerere.

Den beste måten å forbedre på er å diskutere koden med andre programmerere. Dette kan gjøres via flere veier: hvis du føler deg spesielt utgående, skriv en opplæring eller slipp et åpen kildekodeprosjekt; hvis du ikke føler deg opp til noe av den størrelsen, kanskje du kan henge ut på et fellesskap forum og tilby hjelp til nykommerne.

"Hvordan hjelper det med noobs å hjelpe meg?" du spør. Vanligvis, hvis du legger inn en løsning som kan optimaliseres, kommer andre erfarne programmører til å hoppe inn og tilby tweaks. Så denne tilnærmingen er en dobbel-whammy av awesomeness: du hjelper ikke bare med å utvikle samfunnet ved å tilby kunnskap til nybegynnere, men du skarpe din egen ferdigheter ved å hakke koteletter ut for alle å se og hjelpe deg med å utvikle.


Du har ikke noen sideprosjekter

Hvis du ønsker å komme inn i noe nytt og kult det er litt for involvert å sette inn et virkelig prosjekt, er den beste måten å lære å starte et sideprosjekt som bruker nevnte teknikk.

På den måten kan du utvikle seg i ditt eget tempo, på fritiden, og risikerer aldri å savne en frist eller "gjøre feil".


Vi er alle skyldige

Hvis vi gjør det riktig, bør vi alltid være bedre. Og logikk forteller oss at hvis vi er bedre nå, så var vi verre før. Og hvis vi følger den resonnementet langt nok, var det et punkt der vi var forferdelige.

Jeg vet at når jeg ser tilbake på noen av koden jeg skrev tidligere, er jeg forferdet.


Så ... Stopp det.

Vi vil aldri være perfekt. Men vi kan gjøre alt vi har for å sikre at vi kommer så nært som mulig.

Hva er kjæledyret ditt når du arbeider med andre utvikleres kode? Gi meg beskjed i kommentarene!