Kako odabrati najbolje konvencije koda za vas i vaš tim

Okončajte beskrajnu raspravu

- "Slušajte, te bi privatne varijable trebale ići za javnim!"

- "Nema šanse! Javne varijable idu ispred privatnih! "

- "Pitajmo Deb, a ona neka odluči"

- "Čekaj, zašto ove konstante nisu obrubljene devama?"

? ‍♂? ‍♀

Podignite ruku ako ste se i prije našli u ovakvoj raspravi. Ok, nemojte to stvarno podizati, ali nešto mi govori da ste neki od vas možda sudjelovali u ovom scenariju jednom ili dvaput.

Kao programer u proteklom desetljeću, našao sam se u dosta, možda nekih previše, rasprava o konvencijama koda. Te rasprave, koliko god bile korisne, ponekad se pogoršavaju do beskrajne filozofske besmislice. A onda se počinju prebacivati ​​na teme u rasponu od uvlačenja do strukture mape.

To može biti bolno.

Pa, kako doista odlučiti koja je najbolja konvencija, i još bolje, postoje li uopće najbolje konvencije? Izložit ću to ovdje, tako da možete jednom zauvijek odmoriti te filozofske brbljarije.

Pa zašto su nam uopće potrebne konvencije?

Da bismo utvrdili koja je najbolja konvencija i postoje li uopće, prvo moramo shvatiti zašto su nam uopće potrebne konvencije.

Postoji više od nekoliko razloga, ali usredotočit ću se na najvažniji: čitljivost .

Što ako bih se odlučio prebaciti na pisanje samo velikih slova. OVAKO, KOJE MOŽE ČINITI ČUDNO. To odmah primijetite i vaš mozak počinje obrađivati ​​ono što je drugačije.

Uzmite ovaj jednostavan primjer i razmislite o imenovanju varijabli ili uvlačenju. Da se svaki put kad se vratite na kôd i on bude drugačije napisan, bilo bi kao da započinjete s kvadrata. Ali kod kodiranja prema konvencijama, vaš je kôd lakše razumjeti, a time i čitljiv, čak i ako je napisan prije nekoliko mjeseci.

To postaje još važnije kada radite na timu programera, gdje svaki piše vlastiti kôd sa željenom konvencijom. Količina vremena utrošenog za razumijevanje i pregled međusobnog koda potrajat će ... pa ... shvatili ste poantu.

Da biste učinkovito i kvalitetno surađivali s drugim programerima, morate imati zajedničku konvenciju.

"Programi moraju biti napisani tako da ih ljudi mogu čitati, a samo usput za izvršavanje strojeva." - Hal Abelson

Kako odabrati najbolju konvenciju koda

Bez obzira jeste li tek započeli s kodiranjem ili ste dio kickass razvojnog tima ili ako ste tek postali tehnički direktor, kako odabirete svoje konvencije koda?

Evo mog vodiča za odabir najbolje konvencije koda:

  1. Dobijte inspiraciju od razvojnih timova kojima se divite: ništa nije bolje od iskustva, a neke od najvećih i najpametnijih tvrtki objavljuju svoje smjernice za kodiranje. Na primjer, Airbnb je objavio svoje vodiče za stil javascripta i rubina, a Google je objavio vlastite vodiče za stil Java i Python. Bez obzira sviđaju li vam se ove tvrtke ili ne, ako zbrojite dugogodišnje iskustvo svakog od njihovih programera, to iznosi oko milijun. Pokušajte primijeniti neke od stilskih vodiča ovih tvrtki na svoj tim.
  2. Znanje o Crowdsourceu od svojih vršnjaka: Sretni smo što smo dio takve dinamične zajednice. Zapravo, jedna od najvećih prednosti biti programer danas je naša zajednica. Bilo na Slacku, Spectrumu, Discordu ili bilo kojoj platformi za kolabiranje, uvijek možete pronaći upućene grupe koje će odmah poslati pitanje o konvencijama koda i dobiti odgovore od programera iz cijelog svijeta.
  3. Zanemarite uzorke koda. Da, samo ih ignorirajte. Svako malo naletim na kod koji je kopiran / zalijepljen iz odgovora na Stackoverflow ili nešto slično. Ono što ljudi ponekad zaborave jest da su uzorci koda koje su upravo kopirali vjerojatno napisani kao odgovor na tehničko pitanje ili kao objašnjenje neke biblioteke. U većini slučajeva pisac nije mislio, niti je imao vremena za rješavanje kodeksa.

Ovi savjeti trebali bi vam pomoći da započnete i mogu postaviti temelje za uvođenje konvencija koda za vaš razvojni tim.

A sada malo filozofije.

Postoje li uopće najbolje konvencije?

To ovisi o tome što znači "najbolje". Ako Airbnb ili Google koriste određenu konvenciju ili ako vam je 10 različitih tehničkih direktora reklo da je njihova konvencija najbolja - znači li to da je to najbolja konvencija za vas?

Štoviše, konvencije se mogu mijenjati. Može li se nešto što se s vremenom promijeni ikada nazvati 'najboljim'?

Kad sam započeo Lemonade kao jedini front-end programer, bilo mi je teško pročitati kod koji je napisao prethodni dev. Možda je to bila najbolja konvencija za njega, ali nije za mene. Tako sam prepisao svaki dio koda na kojem sam radio koristeći svoje konvencije. S vremenom se timu pridružilo još programera i naše konvencije su evoluirale.

Svaki je programer došao iz raznolike pozadine, s različitim standardima i konvencijama. Da bismo formalizirali naše konvencije, kao polazište koristili smo Airbnbov vodič za stil JavaScript-a. Pregledali smo konvencije u tom vodiču i promijenili ili uklonili one s kojima se nismo složili te usvojili one koji su nam se svidjeli. Čak smo usvojili konvencije koje su proizašli iz vlastitog iskustva i integrirali ih u našu glavnu konvenciju.

Proces ocjenjivanja svake konvencije i odlučivanja trebamo li je usvojiti, ne samo da je poboljšao čitljivost koda, već i timski rad. (Više o tome u budućem postu!)

Evo tvrde istine: ne postoji univerzalna definicija najboljih konvencija, jer one jednostavno ne postoje.

Za razliku od onoga što su vas učili u školi, ne postoji uvijek jedan točan odgovor na svako pitanje. U ovom ih slučaju može biti puno.

Programeri imaju različite načine kako implementirati različite ili čak iste stvari. Neki od nas preferiraju da imena svih članova razreda počinju s prefiksom 'm_'. Neki od nas vole koristiti dvije razmaknice, neki preferiraju kartice, neki bi mogli reći da je korištenje riječi Utilsu nazivu razreda pogrešno. Isuse, ovo je beskrajna rasprava, ali sve te preferencije dolaze s dobrim obrazloženjem.

Na kraju se sve svodi na to koji dogovor poboljšava čitljivost vašeg koda. Koji od njih omogućuje vašem timu bolju komunikaciju, brži napredak i bolju učinkovitost.

Zapamtite, konvencije koda samo su prijedlozi. Da, nakon što se odlučite za konvenciju koju ćete koristiti, trebali biste je slijediti. Ali upamtite: nisu uklesani u kamenu i podložni su promjenama. Dopustite si eksperimentiranje s različitim konvencijama dok ne pronađete najbolji koji odgovara vama i vašem timu.

Pa, koje su najbolje konvencije koda? Lako - vaše!