Facebook Pixel
Searching...
Slovenčina
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
od Robert C. Martin 2007 464 strán
4.37
22k+ hodnotenia
Počúvať
Listen to Summary

Kľúčové body

1. Píšte čistý kód, ktorý je čitateľný a udržiavateľný

Jediným platným meraním kvality kódu: WTFs/minúta

Čitateľnosť je kľúčová. Čistý kód by mal byť ľahko pochopiteľný pre ostatných vývojárov. Mal by byť jednoduchý, elegantný a bez zbytočného neporiadku. Snažte sa písať kód, ktorý jasne vyjadruje svoj zámer bez potreby rozsiahlych komentárov. Používajte zmysluplné názvy premenných a funkcií, udržujte funkcie malé a zamerané a organizujte kód logicky.

Udržateľnosť umožňuje evolúciu. Kód, ktorý je ťažké zmeniť, sa stáva záťažou. Navrhnite svoj kód tak, aby bol flexibilný a modulárny, aby sa mohol prispôsobiť meniacim sa požiadavkám. Dodržiavajte princípy ako DRY (Nerobte si zbytočne) a SOLID, aby ste vytvorili voľne prepojené, vysoko koherentné systémy. Nezľutujte sa pri refaktoringu, aby ste zlepšili štruktúru kódu bez zmeny správania.

Čistý kód sa vypláca. Hoci písanie čistého kódu si vyžaduje viac úvodného úsilia, v dlhodobom horizonte ušetrí značný čas a nervy. Čistý kód je ľahšie laditeľný, rozšíriteľný a udržiavateľný. Umožňuje vývojárom pracovať efektívnejšie a znižuje riziko zavedenia chýb počas zmien. Urobte z čistého kódu základnú súčasť svojej vývojovej praxe.

2. Dodržiavajte zmysluplné konvencie pomenovania

Názov premennej, funkcie alebo triedy by mal odpovedať na všetky dôležité otázky. Mal by vám povedať, prečo existuje, čo robí a ako sa používa.

Používajte názvy, ktoré odhaľujú úmysel. Vyberte si názvy, ktoré jasne vyjadrujú účel a správanie premenných, funkcií a tried. Vyhnite sa názvom s jedným písmenom alebo kryptickým skratkám. Používajte vysloviteľné názvy, ktoré sa dajú ľahko vyhľadávať. Napríklad:

  • Zlé: d (uplynulý čas v dňoch)
  • Dobré: elapsedTimeInDays

Buďte konzistentní a presní. Používajte konzistentné konvencie pomenovania v celom kóde. Buďte presní, aby ste sa vyhli nejednoznačnosti - napríklad používajte zmysluplné rozlíšenia ako getActiveAccounts() a getActiveAccountInfo(). Vyhnite sa kódovaniu alebo predponám, ktoré pridávajú šum bez hodnoty. Názvy tried by mali byť podstatné mená, názvy metód by mali byť slovesá.

Dĺžka názvu by mala zodpovedať rozsahu. Používajte dlhšie, popisnejšie názvy pre premenné a funkcie s väčším rozsahom. Krátke názvy sú prijateľné pre malé, lokálne rozsahy. Dĺžka názvu by mala byť úmerná jeho rozsahu použitia. Optimalizujte pre čitateľnosť a porozumenie v kontexte, kde sa názov používa.

3. Udržujte funkcie malé a zamerané

Funkcie by mali robiť jednu vec. Mali by to robiť dobre. Mali by to robiť len to.

Malé je krásne. Funkcie by mali byť malé - typicky 5-10 riadkov dlhé. Mali by sa zmestiť na jednu obrazovku a byť okamžite pochopiteľné. Extrahujte kód do dobre pomenovaných pomocných funkcií namiesto písania dlhých, zložitých funkcií. Malé funkcie sú ľahšie pochopiteľné, testovateľné a udržiavateľné.

Robte jednu vec dobre. Každá funkcia by mala mať jeden jasný účel. Ak funkcia robí viacero vecí, extrahujte ich do samostatných funkcií. Znaky, že funkcia robí príliš veľa, zahŕňajú:

  • Viacero úrovní abstrakcie
  • Viacero sekcií alebo blokov kódu
  • Početné parametre

Udržujte jednu úroveň abstrakcie. Všetky príkazy v rámci funkcie by mali byť na rovnakej úrovni abstrakcie. Nemiešajte vysokú logiku s nízkou úrovňou detailov. Extrahujte operácie nižšej úrovne do samostatných funkcií. To zlepšuje čitateľnosť tým, že udržuje funkcie zamerané a konceptuálne jednoduché.

4. Praktizujte správne formátovanie a organizáciu

Formátovanie kódu je o komunikácii a komunikácia je prvým poriadkom práce profesionálneho vývojára.

Konzistentné formátovanie je dôležité. Používajte konzistentné odsadenie, zalomenia riadkov a medzery v celom kóde. To zlepšuje čitateľnosť a znižuje kognitívnu záťaž. Dohodnite sa na formátovacích štandardoch so svojím tímom a používajte automatizované nástroje na ich presadzovanie. Kľúčové formátovacie pokyny zahŕňajú:

  • Správne odsadenie
  • Konzistentné umiestnenie zložených zátvoriek
  • Logické zalomenia riadkov
  • Primerané biele miesta

Organizujte kód logicky. Skupinujte súvisiaci kód dohromady a oddelujte nesúvisiaci kód. Používajte prázdne riadky na vytvorenie "odsekov" medzi logickými sekciami. Umiestnite súvisiace funkcie blízko seba. Udržujte súbory zamerané na jeden koncept alebo komponent. Rozdeľte veľké súbory na menšie, zamerané, keď je to vhodné.

Dodržiavajte štandardné konvencie. Držte sa štandardných konvencií pre váš jazyk a komunitu. To robí váš kód známejším a prístupnejším pre ostatných vývojárov. Napríklad v Jave:

  • Názvy tried používajú PascalCase
  • Názvy metód používajú camelCase
  • Konštanty používajú ALL_CAPS

5. Spravujte závislosti a vyhýbajte sa duplicite

Duplicita môže byť koreňom všetkého zla v softvéri.

Eliminujte duplicitu. Duplicovaný kód je premeškaná príležitosť na abstrakciu. Keď vidíte duplicitu, extrahujte spoločný kód do znovupoužiteľnej funkcie alebo triedy. To zlepšuje udržateľnosť centralizovaním logiky a znižovaním rizika nekonzistentných zmien. Typy duplicity, na ktoré si dajte pozor:

  • Identické bloky kódu
  • Podobné algoritmy s drobnými variáciami
  • Opakované switch/case alebo if/else reťazce

Starostlivo spravujte závislosti. Minimalizujte závislosti medzi modulmi, aby ste znížili prepojenosť. Používajte injekciu závislostí a inverziu kontroly, aby ste spravili kód modulárnejším a testovateľnejším. Dodržiavajte princíp inverzie závislostí - závisí na abstrakciách, nie na konkrétnych implementáciách. To robí váš kód flexibilnejším a ľahšie zmeniteľným.

Používajte princíp minimálneho poznania. Modul by nemal poznať vnútornosti objektov, ktoré manipuluje. To znižuje prepojenosť medzi modulmi. Napríklad, používajte Zákon Demeter - metóda by mala volať metódy iba na:

  • Svojom vlastnom objekte
  • Objektoch predaných ako parametre
  • Objektoch, ktoré vytvára
  • Svojich priamych komponentných objektoch

6. Riešte chyby elegantne

Riešenie chýb je dôležité, ale ak zakrýva logiku, je to zlé.

Používajte výnimky namiesto chybových kódov. Výnimky sú čistejšie a nezapĺňajú hlavnú logiku vášho kódu. Umožňujú oddeliť spracovanie chýb od šťastnej cesty. Pri používaní výnimiek:

  • Vytvorte informatívne chybové správy
  • Poskytnite kontext s výnimkami
  • Definujte triedy výnimiek na základe potrieb volajúceho

Nevracajte null. Vracanie null vedie k výnimkám null pointer a zapĺňa kód kontrolami null. Namiesto toho:

  • Vracajte prázdne kolekcie namiesto null pre zoznamy
  • Používajte vzor Null Object
  • Používajte Optional v Jave alebo Maybe vo funkčných jazykoch

Píšte try-catch-finally vyhlásenia najprv. Začnite s try-catch-finally pri písaní kódu, ktorý by mohol vyvolať výnimky. To pomáha definovať rozsah a očakávania pre volajúci kód. Zabezpečuje, že zdroje sú správne spravované a uvoľnené, aj v chybových scenároch.

7. Píšte dôkladné jednotkové testy

Testovací kód je rovnako dôležitý ako produkčný kód.

Dodržiavajte tri zákony TDD. Test-Driven Development (TDD) zlepšuje kvalitu a dizajn kódu:

  1. Napíšte zlyhávajúci test predtým, ako napíšete akýkoľvek produkčný kód
  2. Napíšte len toľko testu, aby ste preukázali zlyhanie
  3. Napíšte len toľko produkčného kódu, aby ste prešli testom

Udržujte testy čisté a udržiavateľné. Používajte rovnaké štandardy kvality kódu pre svoje testy ako pre produkčný kód. Pravidelne refaktorujte a zlepšujte testovací kód. Dobre štruktúrované testy slúžia ako dokumentácia a umožňujú bezstarostný refaktoring produkčného kódu.

Snažte sa o komplexné pokrytie testami. Píšte testy, ktoré pokrývajú okrajové prípady, hraničné podmienky a chybové scenáre - nie len šťastnú cestu. Používajte nástroje na pokrytie kódu, aby ste identifikovali medzery v pokrytí testami. Pamätajte, že 100% pokrytie nezaručuje bezchybový kód, ale poskytuje dôveru pri refaktoringu a zmenách.

8. Neustále refaktorujte kód

Nechajte táborisko čistejšie, než ste ho našli.

Refaktorujte príležitostne. Zlepšujte štruktúru kódu vždy, keď pracujete na nejakom úseku kódu. Dodržiavajte pravidlo skautov: nechajte kód lepší, než ste ho našli. Malé, postupné zlepšenia sa časom sčítajú a zabránia hnilobe kódu. Bežné techniky refaktoringu zahŕňajú:

  • Extrakciu metód alebo tried
  • Premenovanie pre jasnosť
  • Zjednodušenie zložitých podmienok
  • Odstránenie duplicity

Refaktorujte bezpečne s testami. Vždy majte solídny súbor testov pred refaktoringom. Robte malé, postupné zmeny a často spúšťajte testy. To vám dáva dôveru, že vaše zmeny neporušujú existujúcu funkčnosť. Používajte automatizované nástroje na refaktoring, keď sú k dispozícii, aby ste znížili riziko zavedenia chýb.

Vyvážte refaktoring s dodávaním hodnoty. Hoci je neustály refaktoring dôležitý, nenechajte sa ním paralyzovať. Snažte sa o "dostatočne dobré" namiesto dokonalosti. Zamerajte úsilie o refaktoring na najproblémovejšie alebo najčastejšie menené oblasti kódu. Komunikujte hodnotu refaktoringu zainteresovaným stranám, aby ste zabezpečili podporu pre pokračujúce zlepšovanie kódu.

9. Používajte princípy objektovo orientovaného a funkčného programovania

Objekty skrývajú svoje dáta za abstrakciami a vystavujú funkcie, ktoré na týchto dátach operujú. Dátové štruktúry vystavujú svoje dáta a nemajú žiadne zmysluplné funkcie.

Používajte objektovo orientované princípy rozumne. Aplikujte princípy ako enkapsulácia, dedičnosť a polymorfizmus na vytvorenie flexibilných, modulárnych dizajnov. Dodržiavajte princípy SOLID:

  • Princíp jednotnej zodpovednosti
  • Princíp otvorenosti a uzavretosti
  • Princíp substitúcie Liskov
  • Princíp segregácie rozhraní
  • Princíp inverzie závislostí

Využívajte koncepty funkčného programovania. Aj v objektovo orientovaných jazykoch môžu techniky funkčného programovania viesť k čistejšiemu kódu:

  • Čisté funkcie bez vedľajších účinkov
  • Nemenné dáta
  • Funkcie vyššieho poriadku
  • Kompozícia funkcií

Vyberte správny prístup pre problém. Objektovo orientované a funkčné paradigmy majú každé svoje silné a slabé stránky. Používajte objektovo orientovaný dizajn, keď potrebujete modelovať zložité domény so správaním. Používajte funkčné prístupy na transformáciu dát a spracovateľské pipeline. Mnohé moderné jazyky podporujú hybridný prístup, ktorý vám umožňuje použiť najlepší nástroj pre každú časť vášho systému.

10. Starostlivo zvažujte súbežnosť

Súbežnosť je stratégia oddeľovania. Pomáha nám oddeliť, čo sa robí, od toho, kedy sa to robí.

Pochopte výzvy súbežnosti. Súbežné programovanie zavádza zložitosti a potenciálne jemné chyby. Bežné problémy zahŕňajú:

  • Pretečenia
  • Zablokovania
  • Premeškané signály
  • Problémy s viditeľnosťou pamäte

Oddelujte obavy o súbežnosť. Udržujte svoj kód súvisiaci so súbežnosťou oddelený od iného kódu. To uľahčuje jeho pochopenie a testovanie. Používajte abstrakcie ako Executors, Futures a Actors na správu súbežnosti namiesto práce s surovými vláknami.

Preferujte nemennosť a čisté funkcie. Nemenné objekty a čisté funkcie sú inherentne bezpečné pre vlákna. Eliminujú mnohé problémy so súbežnosťou tým, že sa vyhýbajú zdieľanému meniteľnému stavu. Keď je meniteľný stav nevyhnutný, používajte správne techniky synchronizácie a zvážte použitie atomických premenných alebo súbežných kolekcií.

Posledná aktualizácia:

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.

Recenzie

4.37 z 5
Priemer z 22k+ hodnotenia z Goodreads a Amazonu.

Čistý kód získava prevažne pozitívne hodnotenia za svoje princípy písania čitateľného a udržateľného kódu. Čitatelia oceňujú praktické rady týkajúce sa pomenovania, funkcií a testovania. Zameranie knihy na Javu a niektoré príliš prísne smernice sú bežné kritiky. Mnohí ju považujú za nevyhnutné čítanie pre vývojárov, hoci niektorí ju považujú za menej užitočnú pre skúsených programátorov. Prípadové štúdie a príklady refaktoringu sú niektorými chválené, ale iní ich kritizujú ako prehnané. Celkovo recenzenti súhlasia, že kniha ponúka cenné poznatky o kvalite kódu, aj keď nie všetky návrhy sú univerzálne použiteľné.

O autorovi

Robert Cecil Martin, známy ako Uncle Bob, je renomovaný softvérový inžinier a konzultant. Zastáva metódy agilného vývoja a je prezidentom spoločnosti Object Mentor Inc. Martinova odbornosť zahŕňa objektovo orientovaný dizajn, vzory, UML a eXtreme Programming. Pracoval s klientmi po celom svete, pričom zdieľal svoje vedomosti prostredníctvom konzultácií a prednášok. V rokoch 1996 až 1999 pôsobil ako šéfredaktor časopisu C++ Report. Je významnou osobnosťou v komunite softvérového vývoja, často vystupuje na medzinárodných konferenciách a veľtrhoch. Jeho vplyv presahuje jeho konzultačnú činnosť, a to prostredníctvom jeho kníh a článkov o remesle softvéru a osvedčených praktikách.

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 8,
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
Find a barcode to scan

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