
Harry James
3290
14976
273
Kad započnete s i više o razvoju softvera, često nailazite na frazu “čisti kod”. U svom najčišćem obliku, ovo je kôd koji drugi ljudi lako čitaju. Ekspresivan je i lijep, a njegovu namjeru lako možete razaznati jednostavno gledajući ga.
Pisanje čistog koda lakše je reći nego učiniti.
Bez obzira jeste li Arduino Prvi koraci s Arduinom: Vodič za početnike Početak rada s Arduinom: Vodič za početnike Arduino je platforma za prototiranje elektronike otvorenog koda koja se temelji na fleksibilnom, jednostavnom hardveru i softveru. Namijenjen je umjetnicima, dizajnerima, hobistima i svima koji su zainteresirani za stvaranje interaktivnih objekata ili okruženja. tinkerer, ili gradite Raspberry Pi Raspberry Pi: Neslužbeni udžbenik Raspberry Pi: Neslužbeni vodič Bez obzira jeste li trenutni vlasnik Pi-a koji želi saznati više ili ste potencijalni vlasnik ovog uređaja veličine veličine kreditne kartice, to nije vodič koji želite propustiti. aplikacija s Python-om ili ste čak i web programer, postoje neki korisni savjeti koji će drugima olakšati čitanje koda.. Evo što trebate znati.
Budite dosljedni
Možda je prvi i najočitiji savjet dosljedan u onome što radiš. Dobar primjer za to je slijediti iste obrasce prilikom imenovanja funkcija Apsolutne osnove programiranja za početnike (2. dio) Apsolutne osnove programiranja za početnike (2. dio) U 2. dijelu našeg apsolutnog vodiča za programiranje početnika, bit ću koji pokrivaju osnove funkcija, povratne vrijednosti, petlje i uvjeti. Provjerite da ste pročitali prvi dio prije nego što se pozabavite tim problemom, gdje sam objasnio… i varijable Osnove računalnog programiranja 101 - Promjenjive i podatkovne vrste Osnove računalnog programiranja 101 - Promjenjive i podatkovne vrste Nakon što ste se malo upoznali i razgovarali o objektno orijentiranom programiranju prije i odakle dolazi njegov imenjak, mislio sam da je vrijeme da prođemo kroz apsolutne osnove programiranja na nejezički specifičan način. Ovo…. Trebali biste odabrati konvenciju o imenovanju i držati se toga.
Dakle, kakvu konvenciju o imenovanju trebate koristiti?
Pa, ako pišete Python za Raspberry Pi, odgovor je jasan. Standard PEP-8 (barometar za dobar, čisti Python kod) kaže da bi imena varijabli trebala biti mala slova, a svaka riječ odvojena podvlakom. Na primjer: gpio_input i moisture_sensor_reading.
Vodič za Arduino stil podrazumijeva da bi trebali napisati svoje varijable u onome što je poznato kao slučaj Camel. Ovdje se riječi ne odvajaju ničim, već se prvo slovo svake riječi velikim slovom, osim prve riječi. Na primjer: buttonPressed i temperatureReading.
Postoje, naravno, i drugi stilovi imenovanja varijabli. Navedeno jednostavno preporučuju službeni vodiči za stil. Ali što god odlučite, pazite da se toga pridržavate i koristite istu konvenciju o imenovanju u cijelom programu.
Napišite smislene komentare
Komentari su sjajan način objašnjavanja vašeg programa. Možete navesti što svaka funkcija radi i svaku varijablu predstavlja svojim riječima. To trećoj strani olakšava čitanje koda, ali i olakšava održavanje koda jer ga u konačnici i bolje razumijete.
Ali ako svoje komentare ne pišete na očigledan i ekspresivan način, možda se nećete toliko gnjaviti.
Kada pišete komentare, pokušajte objasniti zašto kod, osim načina. Pokušajte obznaniti obilato i recite nešto o kôdu koji ne može sam izgovoriti. Dakle, umjesto:
// ažuriranje čitanja
Razmislite o pisanju:
// Ažurirajte broj razbijanja laserskog snopa prije nego što ga uklonite
Obavezno pišite cjelovite, gramatički ispravne rečenice. Pored toga, PEP-8 standard za Python kaže da bi uvijek trebali pisati svoje komentare i varijable na engleskom jeziku. To olakšava drugima suradnju s vama, ukoliko se odlučite pustiti kôd kao otvoreni kod, jer je engleski jezik itekako lingua franca razvoja softvera.
Vodič za Arduino stil ide još dalje i kaže da morate komentirati svaki blok koda, svaki za petlju i svaku deklaraciju varijable.
Osobno mislim da je to pomalo ekstremno. Ako pišete višestruke, izražene nazive varijabli, vaš je kôd već samo dokumentovanje. Ipak, ne oklijevajte dodati komentare tamo gdje mislite da su potrebni. Koristite svoje dobro prosuđivanje.
Pojednostavite svoj kôd
Kada se prvi put učite razvijati Kako naučiti programiranje bez svih stresova Kako naučiti programiranje bez ikakvog stresa Možda ste se odlučili baviti programiranjem, bilo za karijeru ili samo kao hobi. Sjajno! Ali možda se počinjete osjećati preplavljeno. Nije tako sjajno. Evo pomoći da vam olakša putovanje. , često ste ispunjeni neizmjernim naletom entuzijazma. Pročitali ste sve što možete o vašem odabranom jeziku, okviru ili platformi. Počinjete nailaziti na koncepte koje nikad prije niste znali i previše ste željni da ih upotrijebite u vlastitom kodu.
Stvari poput ternarnih operatora, koje vam omogućuju da kondenzirate logiku an “ako izjava” poput ove:
int x = 5; ako (x < 10) y = 1; else y = 0;
U jednu liniju, poput ove:
int x = 5; int y = (x < 10) ? 1 : 0; printf("%i\n", y);
Ternarski operatori su sigurno cool, a ja vas savjetujem da ih pročitate. No, kada pišete kôd koji drugi lako čitaju, najbolje ih je izbjegavati. To je, međutim, samo jedan primjer.
Vodič za Arduino stil također vas potiče da izbjegavate pokazivače, #define izjave i vrste podataka koji nisu standardni: boolean, char, byte, int, unsigned int, long, unsigned long, float, double, string, array i void. Trebali biste izbjegavati vrste podataka poput uint8_t, jer se one rjeđe koriste, nisu objašnjene u dokumentaciji i nisu užasno kratke.
Uvlačite i iskoristite prednost Whitespacea
Kada je u pitanju pisanje čistog koda, Python korisnici su u prednosti, jer standardni tumač Python-a nalaže da svi kodovi mora biti razumno strukturiran i razveden. Ako se ne stavite uvlačiti nakon svake funkcije i klase deklaracije i uvjetne izjave, vaš se program jednostavno neće pokrenuti.
Na Arduinu vas ništa ne sprečava u pisanju nestrukturiranog, zbijenog koda. To je, u konačnici, teško pročitati i teško je održati.
Ali ni vas ništa ne sprečava da strukturirate svoj kôd.
Prvo utvrdite za koliko ćete namjeravati ući. Ključ s karticama trebali biste koristiti razborito, jer svaki uređivač teksta tretira ASCII kôd za karticu drugačije, a ako svoj kôd dijelite s nekim drugim, postoji šansa da oni mogu nenamjerno uvesti nedosljednosti u svoj urez. Te nedosljednosti mogu slomiti vaš program, pogotovo ako koristite jezik osjetljiv na bijeli prostor poput CoffeeScript CoffeeScript Je li JavaScript bez glavobolje. JavaScript je JavaScript bez glavobolje. Nikad nisam volio pisati JavaScript toliko puno. Od dana kada sam napisao svoj prvi redak korištenjem, oduvijek mi je zamjeralo da sve što napišem u njemu uvijek izgleda poput Jacksona ... ili Pythona. Ovaj članak OpenSourceHacker detaljnije objašnjava zašto treba izbjegavati ključ s karticama.
Obično koristim četiri razmaka za svaku alineju, ali sve ovisi o vama. Sve dok ste dosljedni.
Možete konfigurirati svoj IDE i uređivač teksta da svaku karticu tretira kao zadani broj razmaka, omogućujući vam da upotrebljavate tipku tablice bez rizika da unesete probleme. Ako koristite Sublime Text 2, pogledajte njihovu službenu dokumentaciju. Ako koristite Vim, samo uredite svoj .vimrc datoteka s ovim linijama. Arduino uređivač to automatski radi umjesto vas i ubacuje dva mjesta kad god pritisnete karticu.
Potom jednostavno trebate znati gdje uvlačiti kôd. Kao dobro pravilo, uvijek biste trebali dodati uvlake nakon svake deklaracije funkcije i nakon svake ako, drugo, za, dok, prekidač, i slučaj izjava.
Mnogi urednici imaju mogućnost uvlačenja čitavih blokova koda odjednom. Ako koristite Sublime Text 2, možete postaviti kombinaciju prečaca ili tipke. Inače možete koristiti zadanu kombinaciju koja je (na OS X) Ctrl + [. U uređivaču Arduino uvlačenje datoteke možete automatski popraviti pritiskom Ctrl + T na Windows i Linux i Ctrl + T na OS X.
To u potpunosti ovisi o vašem uredniku, tako pročitajte priručnik!
Ne ponavljajte sebe
Jedna od najvažnijih mantri dobrog razvoja softvera je ne ponavljaj se, koja se često skraćuje na SUHI.
Pisanje DRY koda nevjerojatno je važno jer osigurava da je logika vašeg programa dosljedna, omogućava vam da promijenite mjesto na jednom mjestu i da se to odrazi na globalnoj razini, a manje vremena trošite na pisanje iste stvari iznova i iznova.
Najbolji način da ostanete DRY je uz liberalnu i velikodušnu upotrebu funkcije - obuhvaćajući ponovljeni zadatak blokom koda koji možete pozivati ponovo i ponovo - i osigurati da je svaki zaseban i dobro napisan.
Dobra funkcija je kratka; Vodič za PEP-8 kaže malo o duljini funkcije, ali Clean Code: Priručnik o agilnom obrtu softvera Boba Martina (visoko preporučeno) kaže da “funkcije jedva da bi ikada trebale biti duge od 20 linija”. Po mogućnosti, bili bi još kraće od toga.
Funkcije također trebaju činiti točno jednu stvar. Trebate funkciju koja radi dvije stvari? Napišite dvije funkcije.
Ovi savjeti olakšavaju praćenje tijeka programa i krajnje uklanjanje pogrešaka ako je potrebno. Tu je i dodatna korist za Arduino korisnike, koji su strogo ograničeni ograničenjem pohrane, jer se viškovi uklanjaju. To rezultira manjim programima.
Budite eksplicitni
Druga je važna mantra razvoja softvera “eksplicitno je bolje nego implicitno”. To znači da bi vaš kôd trebao prilično vikati što radi na prvi pogled. Vodič za Arduino stil kaže da ovakvu stvar treba izbjegavati:
ako (gumbPress) doSomething ();
Umjesto toga, trebalo bi očito što se događa. Umjesto toga, napišite nešto ovako:
if (gumbPress == True) doSomething ();
Izađi i kod (dobro)
Pisanje čistog koda iznenađujuće je jednostavno. Jednostavno morate biti dosljedni u svemu što radite, izbjegavati viškove i biti eksplicitni. Zapamtite, čisti kod je samo čitljiv kod.
Puno je sjajnih materijala za čitanje na ovu temu. Izvrsno je polazište Arduino vodiči i API stilovi, a slijedi PEP-8 standard ako gradite Python aplikacije za Raspberry Pi. Ako koristite neki drugi jezik (kao što je Javascript na Tesselovoj ploči Gradnja Interneta stvari, Tessel: Razvojni odbor za Node.js, izgradnja Interneta stvari, Tessel: Razvojni odbor Node.js Tessel je nova pasmina razvojna ploča koja u potpunosti radi na Node.js, a nakon uspješnog Kickstartera sada su dostigli točku da budu dostupni svima.), provjerite Google za službeni vodič za stil.
Ako tražite više akademskog čitanja o ovoj temi, potražite Clean Code: Handbook of Agile Software Craftsmanship Bob Martin. Spomenuo sam ga ranije u ovom članku, i dolazi vrlo preporučljivo. Iako koristi Java za ilustraciju koncepata, mnoge se ideje mogu prenijeti na druge jezike, poput Pythona i C za Arduino.
Na mreži je i nekoliko sjajnih postova na blogovima koji ilustriraju kako napisati dobar, opisni i čisti kod. Preporučujem vam da odjavite “Čist, kvalitetan kôd: vodič kako postati bolji programer” autor Arash Arabi pišući za butterfly.com.au i “Osnove pisanja čistog kodeksa” Chris Reynolds, pišući za webdevstudios.com.
Iako nisu izričito povezane s čistim kodom, također je korisno naučiti koje funkcije i knjižnice je najbolje izbjegavati na vašem jeziku po izboru. Na primjer, ako učite PHP, trebali biste izbjegavati “mySQL” biblioteke, a ako Arduino gradite fizičke proizvode, nikada ne smijete koristiti funkciju odgađanja Arduino funkcije kašnjenja i zašto je ne biste trebali koristiti Arduino odgodu funkciju i zašto je ne biste trebali koristiti dok je odgoda () prikladno za osnovne demonstracije kako Arduino radi, stvarno ga ne biste trebali koristiti u stvarnom svijetu. Evo zašto i što biste trebali koristiti umjesto toga. .
Zapamtite, kôd koji je lakše čitati lakše se održava. Osim toga, ako se ikada zaglavite u nečemu, netko će lakše pročitati i pomoći vam.
Imate li kakav savjet za pisanje čistog koda? Jesam li nešto propustila? Reci mi! Ostavite mi komentar ispod i javite mi.
Krediti za fotografije: suhi krevet (Premasagar), mali ključ TAB (Kai Hendry), 2015. (Wikilogia)