Facebook Pixel
Searching...
Lietuvių
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Clean Code

Clean Code

A Handbook of Agile Software Craftsmanship
autorius Robert C. Martin 2007 464 puslapiai
4.37
22k+ įvertinimai
Klausyti
Listen to Summary

Svarbiausios išvados

1. Rašykite švarų, skaitomą ir prižiūrimą kodą

Vienintelis galiojantis kodo kokybės matavimas: WTFs/minutę

Skaitomumas yra svarbiausias. Švarus kodas turi būti lengvai suprantamas kitiems programuotojams. Jis turi būti paprastas, elegantiškas ir be nereikalingų detalių. Stenkitės rašyti kodą, kuris aiškiai išreiškia savo ketinimus, nereikalaujant išsamių komentarų. Naudokite prasmingus kintamųjų ir funkcijų pavadinimus, laikykite funkcijas mažas ir orientuotas, ir logiškai organizuokite kodą.

Prižiūrimumas leidžia evoliuciją. Kodo, kurį sunku keisti, tampa našta. Projektuokite savo kodą taip, kad jis būtų lankstus ir modulinis, kad galėtų prisitaikyti prie besikeičiančių reikalavimų. Laikykitės tokių principų kaip DRY (Don't Repeat Yourself) ir SOLID, kad sukurtumėte laisvai sujungtas, labai kohezines sistemas. Nešykite kodo struktūrą be gailesčio, kad pagerintumėte jo struktūrą, nekeisdami elgesio.

Švarus kodas atsiperka. Nors rašyti švarų kodą reikalauja daugiau pradinio pastangų, ilgainiui tai sutaupo daug laiko ir nervų. Švarus kodas yra lengviau derinamas, plečiamas ir prižiūrimas. Tai leidžia programuotojams dirbti efektyviau ir sumažina klaidų įvedimo riziką keičiant kodą. Padarykite švarų kodą pagrindine savo kūrimo praktikos dalimi.

2. Laikykitės prasmingų pavadinimų konvencijų

Kintamojo, funkcijos ar klasės pavadinimas turėtų atsakyti į visus svarbiausius klausimus. Jis turėtų pasakyti, kodėl jis egzistuoja, ką jis daro ir kaip jis naudojamas.

Naudokite ketinimus atskleidžiančius pavadinimus. Pasirinkite pavadinimus, kurie aiškiai perteikia kintamųjų, funkcijų ir klasių tikslą ir elgesį. Venkite vieno simbolio pavadinimų ar paslaptingų santrumpų. Naudokite tariamus pavadinimus, kuriuos lengva ieškoti. Pavyzdžiui:

  • Blogai: d (praeitas laikas dienomis)
  • Gerai: elapsedTimeInDays

Būkite nuoseklūs ir tikslūs. Naudokite nuoseklias pavadinimų konvencijas visame savo kodo bazėje. Būkite tikslūs, kad išvengtumėte dviprasmybių - pavyzdžiui, naudokite prasmingus skirtumus, tokius kaip getActiveAccounts() ir getActiveAccountInfo(). Venkite kodavimo ar prefiksų, kurie prideda triukšmo be vertės. Klasės pavadinimai turėtų būti daiktavardžiai, metodų pavadinimai - veiksmažodžiai.

Pavadinimo ilgis turėtų atitikti apimtį. Naudokite ilgesnius, aprašomuosius pavadinimus kintamiesiems ir funkcijoms, turinčioms didesnę apimtį. Trumpi pavadinimai yra priimtini mažoms, vietinėms apimtims. Pavadinimo ilgis turėtų būti proporcingas jo naudojimo apimčiai. Optimizuokite skaitomumą ir supratimą kontekste, kuriame pavadinimas naudojamas.

3. Laikykite funkcijas mažas ir orientuotas

Funkcijos turėtų daryti vieną dalyką. Jos turėtų daryti tai gerai. Jos turėtų daryti tai tik.

Mažas yra gražu. Funkcijos turėtų būti mažos - paprastai 5-10 eilučių ilgio. Jos turėtų tilpti į vieną ekraną ir būti iš karto suprantamos. Išskirkite kodą į gerai pavadintas pagalbines funkcijas, o ne rašykite ilgas, sudėtingas funkcijas. Mažos funkcijos yra lengviau suprantamos, testuojamos ir prižiūrimos.

Darykite vieną dalyką gerai. Kiekviena funkcija turėtų turėti vieną aiškų tikslą. Jei funkcija atlieka kelis dalykus, išskirkite juos į atskiras funkcijas. Ženklai, kad funkcija daro per daug, apima:

  • Daugiau nei vienas abstrakcijos lygis
  • Daugiau nei viena kodo dalis ar blokas
  • Daug parametrų

Išlaikykite vieną abstrakcijos lygį. Teiginiai funkcijoje turėtų būti visi tame pačiame abstrakcijos lygyje. Nešalinkite aukšto lygio logikos su žemo lygio detalėmis. Išskirkite žemesnio lygio operacijas į atskiras funkcijas. Tai pagerina skaitomumą, išlaikant funkcijas orientuotas ir konceptualiai paprastas.

4. Praktikuokite tinkamą formatavimą ir organizavimą

Kodo formatavimas yra apie komunikaciją, o komunikacija yra profesionalaus programuotojo pirmas reikalas.

Nuoseklus formatavimas yra svarbus. Naudokite nuoseklų įtraukimo, eilučių pertraukimo ir tarpo naudojimą visame savo kode. Tai pagerina skaitomumą ir sumažina kognityvinę apkrovą. Susitarkite su savo komanda dėl formatavimo standartų ir naudokite automatizuotas priemones, kad juos užtikrintumėte. Pagrindinės formatavimo gairės apima:

  • Tinkamą įtraukimo lygį
  • Nuoseklų skliaustų išdėstymą
  • Logiškas eilučių pertraukas
  • Tinkamą tarpą

Organizuokite kodą logiškai. Grupiuokite susijusį kodą kartu ir atskirkite nesusijusį kodą. Naudokite tuščias eiles, kad sukurtumėte „pastraipų“ pertraukas tarp loginių skyrių. Laikykite susijusias funkcijas šalia viena kitos. Laikykite failus orientuotus į vieną koncepciją ar komponentą. Didelius failus padalinkite į mažesnius, labiau orientuotus, kai tai tinkama.

Laikykitės standartinių konvencijų. Laikykitės standartinių konvencijų savo kalbai ir bendruomenei. Tai padaro jūsų kodą labiau pažįstamą ir prieinamą kitiems programuotojams. Pavyzdžiui, Java:

  • Klasės pavadinimai naudoja PascalCase
  • Metodų pavadinimai naudoja camelCase
  • Konstantos naudoja ALL_CAPS

5. Valdykite priklausomybes ir venkite dubliavimo

Dubliavimas gali būti visų blogybių šaknis programinėje įrangoje.

Pašalinkite dubliavimą. Dubliuotas kodas yra praleista galimybė abstrakcijai. Kai matote dubliavimą, išskirkite bendrą kodą į pakartotinai naudojamą funkciją ar klasę. Tai pagerina prižiūrimumą centralizuojant logiką ir sumažinant nesuderinamų pakeitimų riziką. Dubliavimo tipai, kuriuos reikia stebėti:

  • Identški kodo blokai
  • Panašūs algoritmai su nedideliais variantais
  • Pakartotiniai switch/case ar if/else grandinės

Atsargiai valdykite priklausomybes. Minimalizuokite priklausomybes tarp modulių, kad sumažintumėte sujungimą. Naudokite priklausomybės injekciją ir kontrolės inversiją, kad kodas būtų labiau modulinis ir testuojamas. Laikykitės Priklausomybės inversijos principo - priklausykite nuo abstrakcijų, o ne konkretumų. Tai padaro jūsų kodą lankstesnį ir lengviau keičiamą.

Naudokite mažiausio žinojimo principą. Modulis neturėtų žinoti apie objektų, kuriuos jis manipuliuoja, vidinę struktūrą. Tai sumažina sujungimą tarp modulių. Pavyzdžiui, naudokite Demeter įstatymą - metodas turėtų skambinti metodams tik:

  • Jo pačio objekto
  • Objektams, perduotiems kaip parametrai
  • Objektams, kuriuos jis sukuria
  • Jo tiesioginiams komponentų objektams

6. Tvarkykite klaidas maloniai

Klaidos tvarkymas yra svarbus, tačiau jei jis užgožia logiką, tai neteisinga.

Naudokite išimtis, o ne klaidų kodus. Išimtys yra švaresnės ir nesukelia triukšmo pagrindinėje jūsų kodo logikoje. Jos leidžia klaidų tvarkymą atskirti nuo laimingos kelio. Naudodami išimtis:

  • Sukurkite informatyvius klaidų pranešimus
  • Pateikite kontekstą su išimtimis
  • Apibrėžkite išimčių klases pagal skambinančiojo poreikius

Negrąžinkite null. Grąžinimas null sukelia null rodyklių išimtis ir užkemša kodą null patikromis. Vietoj to:

  • Grąžinkite tuščias kolekcijas vietoj null sąrašams
  • Naudokite Null Object modelį
  • Naudokite Optional Java arba Maybe funkcinėse kalbose

Rašykite try-catch-finally teiginius pirmiausia. Pradėkite nuo try-catch-finally, kai rašote kodą, kuris gali sukelti išimtis. Tai padeda apibrėžti apimtį ir lūkesčius skambinančiam kodui. Tai užtikrina, kad ištekliai būtų tinkamai valdomi ir atlaisvinami, net ir klaidų scenarijuose.

7. Rašykite išsamius vienetinius testus

Testų kodas yra toks pat svarbus kaip ir gamybos kodas.

Laikykitės trijų TDD įstatymų. Testų vedama plėtra (TDD) gerina kodo kokybę ir dizainą:

  1. Rašykite nesėkmingą testą prieš rašydami bet kokį gamybos kodą
  2. Rašykite tik tiek, kad parodytumėte nesėkmę
  3. Rašykite tik tiek gamybos kodo, kad praeitumėte testą

Laikykite testus švarius ir prižiūrimus. Taikykite tuos pačius kodo kokybės standartus savo testams, kaip ir gamybos kodui. Reguliariai peržiūrėkite ir gerinkite testų kodą. Gerai struktūrizuoti testai tarnauja kaip dokumentacija ir leidžia drąsiai peržiūrėti gamybos kodą.

Siekiate išsamaus testų aprėpties. Rašykite testus, kurie apima kraštutinius atvejus, ribines sąlygas ir klaidų scenarijus - ne tik laimingą kelią. Naudokite kodo aprėpties įrankius, kad nustatytumėte spragas testų aprėtyje. Atminkite, kad 100% aprėptis negarantuoja be klaidų kodo, tačiau suteikia pasitikėjimo peržiūrint ir keičiant.

8. Nuolat peržiūrėkite kodą

Palikite stovyklavietę švaresnę nei radote.

Peržiūrėkite protingai. Gerinkite kodo struktūrą, kai dirbate su tam tikru kodu. Laikykitės Skautų taisyklės: palikite kodą geresnį nei radote. Maži, palaipsniui atliekami patobulinimai kaupiasi laikui bėgant ir užkerta kelią kodo puvimui. Dažnos peržiūros technikos apima:

  • Metodų ar klasių išskyrimą
  • Pavadinimų keitimą aiškumui
  • Sudėtingų sąlygų supaprastinimą
  • Dubliavimo pašalinimą

Peržiūrėkite saugiai su testais. Visada turėkite tvirtą testų rinkinį prieš peržiūrėdami. Darykite mažus, palaipsniui atliekamus pakeitimus ir dažnai vykdykite testus. Tai suteikia jums pasitikėjimo, kad jūsų pakeitimai nesugriauna esamos funkcionalumo. Naudokite automatizuotas peržiūros priemones, kai jos yra prieinamos, kad sumažintumėte klaidų įvedimo riziką.

Subalansuokite peržiūrą su vertės teikimu. Nors nuolatinė peržiūra yra svarbi, neleiskite, kad ji paralyžiuotų pažangą. Siekite „pakankamai gerai“, o ne tobulumo. Orientuokite peržiūros pastangas į labiausiai problematiškas ar dažnai keičiamas kodo sritis. Komunikuokite peržiūros vertę su suinteresuotaisiais asmenimis, kad užtikrintumėte paramą nuolatiniam kodo tobulinimui.

9. Taikykite objektinio ir funkcinio programavimo principus

Objektai slepia savo duomenis už abstrakcijų ir atskleidžia funkcijas, kurios veikia su tais duomenimis. Duomenų struktūros atskleidžia savo duomenis ir neturi prasmingų funkcijų.

Naudokite objektinio programavimo principus protingai. Taikykite tokius principus kaip kapsuliavimas, paveldėjimas ir polimorfizmas, kad sukurtumėte lanksčius, modulius dizainus. Laikykitės SOLID principų:

  • Vieno atsakomybės principas
  • Atvirkščio uždarymo principas
  • Liskovo pakaitos principas
  • Sąsajų segregacijos principas
  • Priklausomybės inversijos principas

Išnaudokite funkcinio programavimo koncepcijas. Net objektiniuose programavimo kalbose funkcinio programavimo technikos gali lemti švaresnį kodą:

  • Švarios funkcijos be šalutinių efektų
  • Nepriklausomi duomenys
  • Aukštesnio lygio funkcijos
  • Funkcijų sudėtis

Pasirinkite tinkamą požiūrį problemai. Objektinio ir funkcinio paradigmos kiekviena turi stipriąsias ir silpnąsias puses. Naudokite objektinio programavimo dizainą, kai reikia modeliuoti sudėtingas sritis su elgesiu. Naudokite funkcinį požiūrį duomenų transformacijai ir apdorojimo vamzdynams. Daugelis šiuolaikinių kalbų palaiko hibridinį požiūrį, leidžiantį naudoti geriausią įrankį kiekvienai sistemos daliai.

10. Atsargiai apsvarstykite lygiagretumą

Lygiagretumas yra atskyrimo strategija. Tai padeda mums atskirti, kas daroma, nuo to, kada tai daroma.

Supraskite lygiagrečių programavimo iššūkius. Lygiagretus programavimas įneša sudėtingumą ir potencialą subtilioms klaidoms. Dažniausios problemos apima:

  • Varžybų sąlygas
  • Užstrigimus
  • Praleistus signalus
  • Atminties matomumo problemas

Atskirkite lygiagrečių susirūpinimą. Laikykite savo lygiagrečių susijusių kodą atskirai nuo kito kodo. Tai palengvina mąstymą ir testavimą. Naudokite abstrakcijas, tokias kaip vykdytojai, ateities ir aktoriai, kad valdytumėte lygiagretumą, o ne dirbtumėte su žaliomis gijų.

Teikite pirmenybę nekintamumui ir švarioms funkcijoms. Nekintami objektai ir švarios funkcijos yra savaime saugios. Jos pašalina daugelį lygiagrečių problemų, vengdamos bendros kintamos būsenos. Kai

Paskutinį kartą atnaujinta:

FAQ

What's "Clean Code: A Handbook of Agile Software Craftsmanship" about?

  • Focus on Clean Code: "Clean Code" by Robert C. Martin emphasizes writing code that is easy to read, understand, and maintain.
  • Professionalism in Coding: It argues that clean code is a hallmark of professionalism in software development.
  • Practical Advice: The book provides guidelines, examples, and case studies to help developers write clean and efficient code.

Why should I read "Clean Code: A Handbook of Agile Software Craftsmanship"?

  • Improve Coding Skills: It teaches how to write code that is clean, efficient, and maintainable.
  • Learn from Experts: Part of the Robert C. Martin series, known for its technical and pragmatic approach.
  • Long-term Benefits: Writing clean code reduces maintenance costs and makes you a more valuable developer.

What are the key takeaways of "Clean Code: A Handbook of Agile Software Craftsmanship"?

  • Code Readability: Emphasizes that code should be easy to read and understand.
  • Single Responsibility Principle: Advocates for each class or function to have one reason to change.
  • Continuous Improvement: Encourages developers to continuously improve their code, following the Boy Scout Rule.

How does "Clean Code: A Handbook of Agile Software Craftsmanship" define clean code?

  • Elegance and Efficiency: Clean code is described as elegant and efficient, with minimal dependencies.
  • Readable and Maintainable: It should read like well-written prose, making the designer's intent clear.
  • Focused and Single-minded: Each function, class, and module should have a single, clear purpose.

What is the Single Responsibility Principle in "Clean Code: A Handbook of Agile Software Craftsmanship"?

  • One Reason to Change: A class or module should have one, and only one, reason to change.
  • Improves Cohesion: Ensures that classes are cohesive, with closely related methods and variables.
  • Facilitates Maintenance: Makes the code easier to maintain and extend, reducing the impact of changes.

What is the "Boy Scout Rule" mentioned in "Clean Code: A Handbook of Agile Software Craftsmanship"?

  • Continuous Improvement: Suggests leaving the codebase cleaner than you found it.
  • Small, Incremental Changes: Encourages making small improvements, like renaming variables or breaking up functions.
  • Professional Responsibility: Presented as a professional responsibility to ensure maintainability.

How does "Clean Code: A Handbook of Agile Software Craftsmanship" approach Test-Driven Development (TDD)?

  • Fundamental Discipline: TDD is crucial for writing clean, reliable code.
  • Three Laws of TDD: Write a failing test first, write code to pass the test, then refactor.
  • Benefits: Helps catch bugs early and improves code design.

What are "code smells" according to "Clean Code: A Handbook of Agile Software Craftsmanship"?

  • Definition: Indicators of potential problems that hinder readability or maintainability.
  • Examples: Long methods, large classes, and duplicated code.
  • Addressing Smells: Provides heuristics and refactoring techniques to improve code quality.

How does "Clean Code: A Handbook of Agile Software Craftsmanship" suggest handling exceptions?

  • Prefer Exceptions: Use exceptions instead of error codes for better context and management.
  • Provide Context: Include meaningful messages and context when throwing exceptions.
  • Avoid Checked Exceptions: Suggests using unchecked exceptions for cleaner code.

What role do unit tests play in "Clean Code: A Handbook of Agile Software Craftsmanship"?

  • Ensure Code Quality: Unit tests ensure code works as intended and remains maintainable.
  • Test-Driven Development: Advocates writing tests before production code.
  • Clean and Readable Tests: Tests should be as clean and readable as production code.

What is the role of refactoring in "Clean Code: A Handbook of Agile Software Craftsmanship"?

  • Continuous Improvement: Refactoring improves code structure and readability without changing functionality.
  • Techniques: Provides techniques like Extract Method and Rename Variable to enhance code quality.
  • Fearless Refactoring: With comprehensive tests, developers can refactor confidently.

What are the best quotes from "Clean Code: A Handbook of Agile Software Craftsmanship" and what do they mean?

  • "Clean code does one thing well." Emphasizes focus and clarity in code.
  • "Leave the campground cleaner than you found it." Encourages continuous improvement of the codebase.
  • "You know you are working on clean code when each routine you read turns out to be pretty much what you expected." Highlights the importance of readability and predictability.

Atsiliepimai

4.37 iš 5
Vidurkis iš 22k+ įvertinimai iš Goodreads ir Amazon.

Švarus kodas sulaukia daugiausia teigiamų atsiliepimų dėl savo principų, kaip rašyti skaitomą ir palaikomą kodą. Skaitytojai vertina praktiškus patarimus dėl pavadinimų, funkcijų ir testavimo. Knygos dėmesys Java kalbai ir kai kurios pernelyg griežtos gairės yra dažni kritikos taškai. Daugelis laiko ją būtina skaityti programuotojams, nors kai kurie mano, kad ji mažiau naudinga patyrusiems programuotojams. Atvejų analizės ir kodų pertvarkymo pavyzdžiai yra girti kai kurių, tačiau kiti juos kritikuoja kaip per daug išpūstus. Apskritai, recenzentai sutinka, kad knyga siūlo vertingų įžvalgų apie kodo kokybę, net jei ne visi pasiūlymai yra universaliai taikomi.

Apie autorių

Robertas Cecil Martin, dar žinomas kaip Dėdė Bobas, yra žinomas programinės įrangos inžinierius ir konsultantas. Jis propaguoja Agilias kūrimo metodikas ir yra „Object Mentor Inc.“ prezidentas. Martino ekspertizė apima objektinį dizainą, šablonus, UML ir ekstremalų programavimą. Jis dirbo su klientais visame pasaulyje, dalindamasis savo žiniomis per konsultacijas ir pranešimus. Nuo 1996 iki 1999 metų Martin buvo C++ Report vyriausiasis redaktorius. Jis yra žinoma asmenybė programinės įrangos kūrimo bendruomenėje, dažnai pristatantis savo idėjas tarptautinėse konferencijose ir parodose. Jo įtaka tęsiasi ne tik per konsultacijas, bet ir per knygas bei straipsnius apie programinės įrangos meistriškumą ir geriausias praktikas.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Home
Library
Get App
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Recommendations: Get personalized suggestions
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Apr 6,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Scanner

Point camera at a book's barcode to scan

Scanning...

Settings
General
Widget
Appearance
Loading...
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →