Oglas
Bez sumnje je programiranje naporno. To je jedna stvar naučiti jezike i studirati algoritmi, ali to je sasvim druga zvijer koja pokušava kodirati složenu radnu aplikaciju, što ne bi htjelo da iskopčate oči.
Na neki način pisanje čistog koda mnogo sliči crtanju, kuhanju ili fotografiji - izgleda lakše nego što zapravo jest. Pa zašto se gnjaviti? Pa, jer su prednosti koje vrijede:
- Problemi se lakše rješavaju. Jednom kada počnete razmišljati u čistom kodu, mijenja se i vaš pristup rješavanju problema. Umjesto brzih rješenja, vaši algoritmi i dizajn softvera postaju elegantniji i intencionalniji.
- Manje vremena trošite na održavanje. Čisti kôd je lakše čitati i razumjeti, tako da trošite manje vremena pokušavajući shvatiti što određeni segmenti zapravo rade, a više vremena za popravljanje, reviziju, produljenje, itd.
- Ideje se jasnije saopštavaju. Ako radite s drugim programerima, čisti kôd smanjuje vjerojatnost nesporazuma među svima vama, što također znači manje pogrešaka na duže staze.
Evo kako možete početi pisati čisti kôd.
1. Koristite opisna imena
Što su varijable, klase i funkcije? Na to postoji mnogo načina, ali kada stvarno razmislite, te stvari nisu ništa drugo do sučelje programera i osnovne logike aplikacije.
Pa kad upotrebljavate nejasna i nekakrivna imena za varijable, klase i funkcije, u osnovi zamračujete logiku aplikacije od bilo kojeg programera koji čita kôd, uključujući i sebe.
"Nisam sjajan programer; Ja sam samo dobar programer s sjajnim navikama. "
- Kent Beck
Što znači varijabla s imenom dxy
zapravo znači? Tko zna. Vjerojatno ćete morati pročitati cijeli dio koda da biste preispitali njegovo značenje. S druge strane, značenje varijable poput distanceBetweenXY
odmah je prepoznatljiv.
Isto vrijedi i za klase i funkcije. Ne slažite se CalcTan ()
kad možete ići CalculateTangent ()
ili CalcTangentAngle ()
umjesto toga.
2. Dajte svakom razredu / funkciji jednu svrhu
Jeste li ikada zavirili u funkciju koja je dugačka stotinama ili čak tisućama? Ako imate, onda znate koliko boli može pregledavati, razumjeti i uređivati. Komentari mogu pomoći, ali samo u ograničenom stupnju.
"Programiranje razdvaja jedan veliki nemogući zadatak na nekoliko mogućih zadataka."
- Jazzwant
Čisti kod razgrađuje se na atomske komade. Svaka funkcija treba imati za cilj napraviti jednu jedinu stvar, a svaki razred treba težiti predstavljanju jednog određenog koncepta. Ovo je naravno pojednostavljenje, ali kad je u nedoumici, jednostavnije je čistije.
U praksi složeni izračun poput GetCreditScore ()
možda treba razbiti na nekoliko pomoćnih funkcija poput GetCreditReports ()
, ApplyCreditHistoryAge ()
, i FilterOutstandingMarks ()
.
3. Izbrišite nepotreban kôd
Ova loša navika je ona s kojom se još uvijek borim s vremena na vrijeme. Obično se događa ovako: Želim popraviti ili optimizirati komad koda, pa ga komentiram i napravim prepisivanje odmah ispod njega - i iako radi, zadržavam stari kod tamo za svaki slučaj.
"Je li moguće da softver nije poput bilo čega drugog, da ga se misli odbaciti: da je smisao uvijek biti u tome što je mjehurić sapuna?"
- Alan J. Perlis
S vremenom nagomilam čitav niz komentiranih blokova koda koji više nisu potrebni i skupljaju se moje izvorne datoteke. A smiješna je stvar što se u mnogim slučajevima okolni kôd razvio tako da komentirani kôd ne bi djelovao čak i ako se obnovi.
Stvar je u tome što je ova praksa komentiranja "rezervnog koda" zastarjela kontrola izvora. Ako ne upotrebljavate nešto poput Gita ili Mercurial, to morate odmah započnite s korištenjem kontrole izvora. Očekuje vas čistač koda.
Ne zaboravite, također je važno izbjegavati pisanje koda koji se ponavlja, što možete lako postići pomoću web okvira. Evo nekoliko web okvira vrijednih učenja kao programera 5 Web okvira vrijedno učenja za programereZainteresirani za učenje naprednog web-razvoja? Izbjegavajte da umjesto toga pišete ponavljajuće kodeuse ove okvire za web razvoj. Čitaj više .
4. Čitljivost> Spretnost
Previše programera povezuje "čisti kod" s "pametnim kodom", kao da je sažimanje deset linija u jedan nekako čistije. Naravno, zauzima manje prostora na ekranu, ali je li zapravo lakše razumjeti? Ponekad, možda. Ali većinu vremena? Ne.
„Svi znaju da je uklanjanje pogrešaka dvostruko teže od pisanja programa. Dakle, ako ste pametni koliko god možete pisati, kako ćete to ikad ukloniti? "
- Brian W. Kernighan
Mislim da programeri vole pametan kod jer se osjeća kao riješena zagonetka ili zagonetka. Pronašli su poseban i jedinstven način da nešto implementiraju - "prečac" ako hoćete - i gotovo djeluje kao potvrda sposobnosti programera.
Ali da biste napisali čistu šifru, svoj ego morate ostaviti na vratima.
Uvijek optimizirajte kôd za sljedeću osobu koja će ga čitati, jer je vjerovatno da je sljedeća osoba ustvari ćeš biti TI i nema ništa sramotnije od toga da ne znaš čitati ili razumjeti svoje oštroumnost.
5. Držite dosljedan stil kodiranja
imam ništa protiv dobrih programskih tutorijala Što je dobar vodič za programiranje?Nisu svi programski udžbenici jednaki. Neke koristi vam, a drugima iscrpljuju vaše vrijeme. Evo što potražiti u kvalitetnom programskom vodiču. Čitaj više , ali jedna od nedostataka je ta što novorođenče pokupaju pokupiti širok raspon sukobljenih navika, pogotovo ako se odnose na stil kodiranja.
Nisam ovdje da bih izjavljivao da je jedan stil bolji od drugog. Ako želite narukvice na njihovim vlastitim linijama, idite na to. Ako želite prethoditi pozivima metoda s razmacima, u redu. Ako više volite tabove za razmake, ne dopustite da vas uvjerim u suprotno.
Ali što god radili, budite dosljedni!
Lijepa je bolja nego ružna.
Eksplicitna je bolja nego implicitna.
Jednostavno je bolje nego složeno.
Kompleks je bolji nego kompliciran.
Stan je bolji nego ugniježđen.
Rijetki su bolji od gustih.
Čitljivost se računa.
- Tim Peters, Zen Pythona
Ako namjeravaš koristiti camelCaseNaming
za varijable nemojte je preljubiti underscore_naming
. Ako koristite GetThisObject ()
ni na jednom mjestu, nemoj ići s tim FetchThatObject ()
negdje drugdje. A ako miješate jezičke i razmake, zaslužili ste da vam se oduzme tipkovnica.
Odlučite što ćete raditi od samog početka i pridržavajte se svega toga. Neki jezici, poput Pythona i C #, sadrže vodiče za sve jezične stilove koje možda želite slijediti.
6. Odaberite pravu arhitekturu
Postoji mnogo različitih paradigmi i arhitektura koje možete koristiti za izradu svojih projekata. Imajte na umu kako se ovaj savjet odnosi na odabir pravo jedan za vaše potrebe, a ne o odabiru najbolje jedan vani. Nema tu "najboljeg".
"Bez zahtjeva i dizajna, programiranje je umjetnost dodavanja pogrešaka u praznu tekstualnu datoteku."
- Louis Srygley
Na primjer, obrazac Model-View-Controller (MVC) vrlo je popularan upravo u web razvoju jer pomaže u održavanju koda organiziranim i dizajniranim na način koji minimizira napore u održavanju.
Slično tome, obrazac Entity-Component-System (ECS) vrlo je popularan upravo u razvoju igara, jer je pomaže u modularizaciji podataka i logike igara na lakši način čuvanja, a istovremeno stvara kôd koji je lakši čitati.
7. Ovladajte jezičnim idiomima
Jedna od poteškoća u savladavanje novog programskog jezika 7 korisnih trikova za savladavanje novog programskog jezikaU redu je biti preopterećen kada učite kodirati. Vjerojatno ćete stvari zaboraviti čim ih naučite. Ovi savjeti mogu vam pomoći da bolje zadržite sve te nove informacije. Čitaj više uči nijanse koje ga odvajaju od svih ostalih jezika. Te nijanse mogu biti razlika između ružnog, zbunjenog koda i lijepog, lako održavajućeg koda.
Razmotrite Python, Java i JavaScript. Svi su oni međusobno izuzetno različiti, do stupnja koji zahtijeva a različit način razmišljanja ovisno o tome koji jezik odlučite koristiti.
"Jezik koji ne utječe na način na koji razmišljate o programiranju ne vrijedi znati."
- Alan J. Perlis
Dok Python govori o kompaktnom tipkanju koda i patki, Java je više na strani verbosnosti i eksplicitnosti. Svaki jezik ima idiome (poput poimanja popisa u Pythonu) koji potiču određeni način kodiranja. Dobro bi ih naučili.
Postoje također „anti-obrasci“ koje trebate brinuti, a to su u osnovi sub-optimalni obrasci dizajna koji rezultiraju neefikasnim, nepouzdanim ili na drugi način lošim kodom. Proučite i naučite sve uobičajene anti-obrasce povezane s odabranim jezikom.
8. Proučite kodeks magistara
Ako želite napisati čist kod, najbolje što možete učiniti je vidjeti kako izgleda čisti kod i pokušati shvatite zašto je takav kakav jest - i nema boljeg načina za to od proučavanja izvornih datoteka majstori industrije.
Očito je da ne možete jednostavno ući u Microsoftovo sjedište i zaviriti u njihove projekte, ali uvijek možete pregledavanje poznatih projekata otvorenog koda Kako pregledati i urediti izvorni kod aplikacije otvorenog kodaDok izlazak s otvorenim kodom može biti dobar izbor, također ćete trebati uložiti u pravu zajednicu. GitHub je jedno od najboljih mjesta za to, ne samo zbog čiste količine ... Čitaj više . Ne znate odakle započeti? Probajte izloženi projekti na Githubu.
"Svaka budala može napisati kôd koji računalo može razumjeti. Dobri programeri pišu kôd koji ljudi mogu razumjeti. "
- Martin Fowler, Refactoring: poboljšanje dizajna postojećeg koda
Napokon, to je jedan od razloga zašto postoje projekti otvorenog koda Zašto ljudi sudjeluju u projektima otvorenog koda?Razvoj otvorenog koda budućnost je softvera. Korisnicima je izvrstan jer je softver otvorenog koda obično dostupan besplatno i često sigurniji za upotrebu. Ali što prisiljava programere da besplatno dodaju kod? Čitaj više : tako da i drugi mogu učiti od njih. A ako odlučite pridonijeti takvom projektu, može ubrzati proces učenja 5 projektnih ideja koje će vam pomoći da naučite brže programiranjePostoji nekoliko načina za olakšavanje krivulje učenja za programiranje. Prljajte ruke i brže učite uz sporedne projekte koje možete započeti bilo kada. Igrajte se s ovih petorica. Čitaj više .
Osobno, prvi put kad sam vidio zaista čisti kôd je kada sam naišao na izvjesni projekt hobista Python otvorenog koda. Kod je bio toliko neodoljivo elegantan da sam gotovo prestao s programiranjem, ali na kraju me naučio puno.
9. Napišite dobre komentare
"Napiši dobre komentare" najstariji je savjet u programu programiranja. U stvari, čim se u početnike upoznaju komentari, oni se prilično ohrabruju da komentiraju što češće.
Ali gotovo se osjeća kao da smo se predaleko zakretali u suprotnom smjeru. Novopečeni ljudi, posebno, imaju tendenciju prekomjernog komentiranja - opisujući stvari koje ne treba opisivati i propuštaju poantu onoga što je zapravo "dobar komentar".
"Uvijek se kodirajte kao da će tip koji završi u održavanju vašeg koda biti nasilni psihopat koji zna gdje živite."
- John Woods
Evo dobrog pravila: komentari postoje kako bi se objasnilo ZAŠTO postoji komad koda a ne ŠTA kod zapravo postoji. Ako je kôd napisan dovoljno čisto, trebalo bi mu objasniti što to čini - komentar bi trebao rasvijetliti namjeru koja je bila napisana.
Komentari mogu biti dobri za upozorenja (tj. "Uklanjanje ove slike pokvarit će A, B i C"), ali uglavnom bi trebalo biti otkriti stvari koje nije moguće odmah ukloniti iz koda (tj. "upotrijebite ovaj parametar jer su X, Y i Z”).
10. Refactor, Refactor, Refactor
Baš kao što je uređivanje dio procesa pisanja, refaktoring je dio procesa kodiranja. Averzija prema refaktoringu najbrži je način da se na kraju ne može postići neizvedivi kod, pa je to na mnogo načina najvažniji savjet koji treba uzeti u obzir.
Ukratko, refaktoring je samo maštovit termin čišćenja koda bez utjecaja na njegovo stvarno ponašanje.
"Kad god moram razmišljati o razumijevanju onoga što kôd radi, pitam se mogu li korificirati kôd da bi to razumijevanje bilo očiglednije."
- Martin Fowler, Refactoring: poboljšanje dizajna postojećeg koda
Jedino malo mudrosti koja je ostala sa mnom je izreka: „Ne komentiraj loš kôd. Prepiši to. " Kao što Fowler objašnjava u gornjem citatu, ako se kôd ikada dovoljno zbunjuje da biste ga trebali komentirati, možda ga zapravo trebate ponovno prilagoditi.
Nadalje, dok ovdje i tamo u toku projekta uređujete bitove koda, uvijek ostavite kod u boljem stanju nego kad ste ga prvi put pronašli. U trenutku se može činiti smetnja, ali dugoročno će se isplatiti (i čak može spriječiti mentalno izgaranje Programiranje izgaranja: kako povratiti izgubljenu motivacijuPisanje svih tih redaka koda može se iscrpiti fizički i emocionalno. Sve što trebate da se vratite je svijest da se motivacija može povratiti. Čitaj više ).
Uvijek ima nešto novo za naučiti
Programer koji uči pisati čistu šifru sličan je romanopiscu koji uči pisati čistu prozu: ne postoji ispravan način da to učinite, ali postoji puno pogrešnih načina da to učinite i trebat će vam godine da ovladati; majstorski.
Neki nemaju što je potrebno na kraju zauvijek napuste programiranje 6 Znakovi da ne treba biti programerNisu svi sigurni da su programeri. Ako niste sasvim sigurni da ste namijenjeni programeru, evo nekoliko znakova koji vas mogu usmjeriti u pravom smjeru. Čitaj više - i to je u redu, jer ih ima dosta ostale tehnicke poslove koji ne ukljucuju kodiranje Kodiranje nije za svakoga: 9 tehničkih poslova koje možete dobiti bez njegaNemojte se obeshrabriti ako želite biti dio tehničkog područja. Puno je poslova za ljude bez vještina kodiranja! Čitaj više . Ali za sve ostale, čisti kôd je nešto čemu apsolutno treba težiti, čak i ako vam treba tamo cijeli život.
Joel Lee ima B.S. u računalnim znanostima i preko šest godina profesionalnog pisanja. Glavni je urednik MakeUseOf-a.