Facebook Pixel
Searching...
Čeština
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 stran
4.37
22k+ hodnocení
Poslouchat
Listen to Summary

Klíčové body

1. Pište čistý kód, který je čitelný a udržovatelný

Jediným platným měřítkem kvality kódu: WTFs/minutu

Čitelnost je zásadní. Čistý kód by měl být snadno pochopitelný pro ostatní vývojáře. Měl by být jednoduchý, elegantní a bez zbytečného nepořádku. Snažte se psát kód, který jasně vyjadřuje svůj záměr bez potřeby rozsáhlých komentářů. Používejte smysluplné názvy proměnných a funkcí, udržujte funkce malé a zaměřené a organizujte kód logicky.

Udržovatelnost umožňuje evoluci. Kód, který je obtížné měnit, se stává zátěží. Navrhněte svůj kód tak, aby byl flexibilní a modulární, aby se mohl přizpůsobit měnícím se požadavkům. Dodržujte principy jako DRY (Nepo repeatujte se) a SOLID, abyste vytvořili volně spojené, vysoce kohezivní systémy. Neúprosně refaktorujte, abyste zlepšili strukturu kódu, aniž byste měnili jeho chování.

Čistý kód se vyplácí. I když psaní čistého kódu vyžaduje více úsilí na začátku, v dlouhodobém horizontu ušetří značný čas a starosti. Čistý kód je snazší ladit, rozšiřovat a udržovat. Umožňuje vývojářům pracovat efektivněji a snižuje riziko zavádění chyb během změn. Učiňte čistý kód základní součástí své vývojové praxe.

2. Dodržujte smysluplné konvence pojmenování

Název proměnné, funkce nebo třídy by měl odpovědět na všechny důležité otázky. Měl by říct, proč existuje, co dělá a jak se používá.

Používejte názvy, které odhalují záměr. Vyberte názvy, které jasně vyjadřují účel a chování proměnných, funkcí a tříd. Vyhněte se jednopísmenným názvům nebo kryptickým zkratkám. Používejte vyslovitelné názvy, které lze snadno vyhledat. Například:

  • Špatně: d (uplynulý čas v dnech)
  • Dobře: elapsedTimeInDays

Buďte konzistentní a přesní. Používejte konzistentní konvence pojmenování v celém vašem kódu. Buďte přesní, abyste se vyhnuli nejednoznačnosti – například používejte smysluplné rozdíly jako getActiveAccounts() a getActiveAccountInfo(). Vyhněte se kódování nebo předponám, které přidávají šum bez hodnoty. Názvy tříd by měly být podstatná jména, názvy metod by měly být slovesa.

Délka názvu by měla odpovídat rozsahu. Používejte delší, popisné názvy pro proměnné a funkce s větším rozsahem. Krátké názvy jsou přijatelné pro malé, lokální rozsahy. Délka názvu by měla být úměrná jeho rozsahu použití. Optimalizujte pro čitelnost a porozumění v kontextu, kde je název používán.

3. Udržujte funkce malé a zaměřené

Funkce by měly dělat jednu věc. Měly by to dělat dobře. Měly by to dělat pouze.

Malé je krásné. Funkce by měly být malé – obvykle 5-10 řádků dlouhé. Měly by se vejít na jednu obrazovku a být okamžitě pochopitelné. Extrahujte kód do dobře pojmenovaných pomocných funkcí, místo abyste psali dlouhé, složité funkce. Malé funkce jsou snazší na pochopení, testování a údržbu.

Dělejte jednu věc dobře. Každá funkce by měla mít jeden jasný účel. Pokud funkce dělá více věcí, extrahujte je do samostatných funkcí. Znaky, že funkce dělá příliš mnoho, zahrnují:

  • Více úrovní abstrakce
  • Více sekcí nebo bloků kódu
  • Mnoho parametrů

Udržujte jednu úroveň abstrakce. Všechny příkazy uvnitř funkce by měly být na stejné úrovni abstrakce. Nemíchejte logiku na vysoké úrovni s detaily na nízké úrovni. Extrahujte operace na nižší úrovni do samostatných funkcí. To zlepšuje čitelnost tím, že udržuje funkce zaměřené a konceptuálně jednoduché.

4. Praktikujte správné formátování a organizaci

Formátování kódu je o komunikaci a komunikace je prvořadým úkolem profesionálního vývojáře.

Konzistentní formátování je důležité. Používejte konzistentní odsazení, zalomení řádků a mezery v celém vašem kódu. To zlepšuje čitelnost a snižuje kognitivní zátěž. Dohodněte se na standardech formátování se svým týmem a používejte automatizované nástroje k jejich prosazení. Klíčové pokyny pro formátování zahrnují:

  • Správné odsazení
  • Konzistentní umístění závorek
  • Logické zalomení řádků
  • Přiměřený bílý prostor

Organizujte kód logicky. Skupinujte související kód dohromady a oddělujte nesouvisející kód. Používejte prázdné řádky k vytvoření "odstavcových" přestávek mezi logickými sekcemi. Umístěte související funkce blízko sebe. Udržujte soubory zaměřené na jeden koncept nebo komponentu. Rozdělte velké soubory na menší, více zaměřené, když je to vhodné.

Dodržujte standardní konvence. Držte se standardních konvencí pro váš jazyk a komunitu. To činí váš kód známější a přístupnější pro ostatní vývojáře. Například v Javě:

  • Názvy tříd používají PascalCase
  • Názvy metod používají camelCase
  • Konstanty používají ALL_CAPS

5. Spravujte závislosti a vyhněte se duplicitě

Duplicitní kód může být kořenem všeho zla v softwaru.

Odstraňte duplicitu. Duplicitní kód je promarněná příležitost pro abstrakci. Když vidíte duplicitu, extrahujte společný kód do znovupoužitelné funkce nebo třídy. To zlepšuje udržovatelnost centralizací logiky a snižováním rizika nekonzistentních změn. Typy duplicity, na které si dejte pozor:

  • Identické bloky kódu
  • Podobné algoritmy s drobnými variacemi
  • Opakované switch/case nebo if/else řetězce

Pečlivě spravujte závislosti. Minimalizujte závislosti mezi moduly, abyste snížili spojení. Používejte injekci závislostí a inverzi řízení, abyste učinili kód modulárnějším a testovatelnějším. Dodržujte princip inverze závislostí – závislost na abstrakcích, nikoli na konkrétních implementacích. To činí váš kód flexibilnějším a snadněji měnitelným.

Používejte princip nejmenší znalosti. Modul by neměl znát vnitřnosti objektů, které manipuluje. To snižuje spojení mezi moduly. Například používejte Zákon Demeter – metoda by měla volat metody pouze na:

  • Svém vlastním objektu
  • Objektech předaných jako parametry
  • Objektech, které vytváří
  • Svých přímých komponentních objektech

6. Zpracovávejte chyby elegantně

Zpracování chyb je důležité, ale pokud zakrývá logiku, je to špatně.

Používejte výjimky místo chybových kódů. Výjimky jsou čistší a nezatěžují hlavní logiku vašeho kódu. Umožňují oddělit zpracování chyb od šťastné cesty. Při používání výjimek:

  • Vytvářejte informativní chybové zprávy
  • Poskytujte kontext s výjimkami
  • Definujte třídy výjimek na základě potřeb volajícího

Nevracejte null. Vrátit null vede k výjimkám null pointer a zaneřádí kód kontrolami null. Místo toho:

  • Vraťte prázdné kolekce místo null pro seznamy
  • Používejte vzor Null Object
  • Používejte Optional v Javě nebo Maybe ve funkčních jazycích

Napište try-catch-finally příkazy jako první. Začněte s try-catch-finally, když píšete kód, který by mohl vyvolat výjimky. To pomáhá definovat rozsah a očekávání pro volající kód. Zajišťuje, že jsou zdroje správně spravovány a uvolňovány, i v případě chyb.

7. Pište důkladné jednotkové testy

Testovací kód je stejně důležitý jako produkční kód.

Dodržujte tři zákony TDD. Test-Driven Development (TDD) zlepšuje kvalitu a design kódu:

  1. Napište selhávající test před tím, než napíšete jakýkoli produkční kód
  2. Napište pouze tolik testu, aby prokázal selhání
  3. Napište pouze tolik produkčního kódu, aby test prošel

Udržujte testy čisté a udržovatelné. Používejte stejné standardy kvality kódu pro své testy jako pro svůj produkční kód. Pravidelně refaktorujte a zlepšujte testovací kód. Dobře strukturované testy slouží jako dokumentace a umožňují bezstarostné refaktoringy produkčního kódu.

Snažte se o komplexní pokrytí testy. Pište testy, které pokrývají okrajové případy, hraniční podmínky a scénáře chyb – nejen šťastnou cestu. Používejte nástroje pro pokrytí kódu, abyste identifikovali mezery v pokrytí testy. Pamatujte, že 100% pokrytí nezaručuje bezchybnost kódu, ale poskytuje důvěru při refaktoringu a změnách.

8. Nepřetržitě refaktorujte kód

Nechte tábořiště čistší, než jste ho našli.

Refaktorujte příležitostně. Zlepšujte strukturu kódu, kdykoli pracujete na určitém kódu. Dodržujte pravidlo skauta: nechte kód lepší, než jste ho našli. Malé, postupné zlepšení se časem sčítají a zabraňují hnilobě kódu. Běžné techniky refaktoringu zahrnují:

  • Extrakci metod nebo tříd
  • Přejmenování pro jasnost
  • Zjednodušení složitých podmínek
  • Odstranění duplicity

Refaktorujte bezpečně s testy. Vždy mějte solidní sadu testů před refaktoringem. Provádějte malé, postupné změny a často spouštějte testy. To vám dává důvěru, že vaše změny neporušují existující funkčnost. Používejte automatizované nástroje pro refaktoring, když jsou k dispozici, abyste snížili riziko zavedení chyb.

Vyvažujte refaktoring s dodáváním hodnoty. I když je kontinuální refaktoring důležitý, nenechte se jím paralyzovat. Snažte se o "dostatečné" místo dokonalosti. Zaměřte úsilí o refaktoring na nejproblematičtější nebo nejčastěji měněné oblasti kódu. Komunikujte hodnotu refaktoringu zainteresovaným stranám, abyste zajistili podporu pro pokračující zlepšování kódu.

9. Aplikujte principy objektově orientovaného a funkčního programování

Objekty skrývají svá data za abstrakcemi a vystavují funkce, které na těchto datech operují. Datové struktury vystavují svá data a nemají žádné smysluplné funkce.

Používejte principy objektově orientovaného programování moudře. Aplikujte principy jako zapouzdření, dědičnost a polymorfismus, abyste vytvořili flexibilní, modulární návrhy. Dodržujte principy SOLID:

  • Princip jediné odpovědnosti
  • Princip otevřenosti a uzavřenosti
  • Princip substituce Liskov
  • Princip segregace rozhraní
  • Princip inverze závislostí

Využívejte koncepty funkčního programování. I v objektově orientovaných jazycích mohou techniky funkčního programování vést k čistšímu kódu:

  • Čisté funkce bez vedlejších efektů
  • Neměnná data
  • Funkce vyššího řádu
  • Skládání funkcí

Zvolte správný přístup k problému. Objektově orientované a funkční paradigmata mají každé své silné a slabé stránky. Používejte objektově orientovaný design, když potřebujete modelovat složité domény s chováním. Používejte funkční přístupy pro transformaci dat a zpracovatelské pipeline. Mnoho moderních jazyků podporuje hybridní přístup, což vám umožňuje použít nejlepší nástroj pro každou část vašeho systému.

10. Pečlivě zvažte souběžnost

Souběžnost je strategie odpojení. Pomáhá nám oddělit, co se dělá, od toho, kdy se to dělá.

Pochopte výzvy souběžnosti. Souběžné programování zavádí složitost a potenciál pro jemné chyby. Běžné problémy zahrnují:

  • Podmínky závodu
  • Zablokování
  • Zmeškané signály
  • Problémy s viditelností paměti

Oddělte obavy o souběžnost. Udržujte svůj kód související se souběžností oddělený od ostatního kódu. To usnadňuje uvažování a testování. Používejte abstrakce jako Executors, Futures a Actors k řízení souběžnosti místo práce s hrubými vlákny.

Preferujte neměnnost a čisté funkce. Neměnné objekty a čisté funkce jsou inherentně bezpečné pro vlákna. Eliminují mnoho problémů se souběžností tím, že se vyhýbají sdílenému mutabilnímu stavu. Když je mutabilní stav nezbytný, používejte správné techniky synchronizace a zvažte použití atomových proměnných nebo souběžných kolekcí.

Poslední aktualizace:

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.

Recenze

4.37 z 5
Průměr z 22k+ hodnocení z Goodreads a Amazonu.

Čistý kód získává převážně pozitivní hodnocení za své principy psaní čitelného a udržovatelného kódu. Čtenáři oceňují praktické rady týkající se pojmenování, funkcí a testování. Mezi běžné kritiky patří zaměření na Javu a některé příliš přísné pokyny. Mnozí považují tuto knihu za nezbytné čtení pro vývojáře, i když někteří ji považují za méně užitečnou pro zkušené programátory. Případové studie a příklady refaktoringu jsou některými chváleny, ale jiní je kritizují jako přehnané. Celkově se recenzenti shodují, že kniha nabízí cenné poznatky o kvalitě kódu, i když ne všechny návrhy jsou univerzálně použitelné.

O autorovi

Robert Cecil Martin, známý jako Uncle Bob, je renomovaný softwarový inženýr a konzultant. Prosazuje metody agilního vývoje a je prezidentem společnosti Object Mentor Inc. Martinova odbornost zahrnuje objektově orientované návrhy, vzory, UML a eXtreme Programming. Pracoval s klienty po celém světě a sdílí své znalosti prostřednictvím konzultací a přednášek. V letech 1996 až 1999 byl šéfredaktorem časopisu C++ Report. Je významnou osobností v komunitě softwarového vývoje, často vystupuje na mezinárodních konferencích a veletrzích. Jeho vliv přesahuje jeho konzultační činnost díky jeho knihám a článkům o řemeslné kvalitě softwaru a osvědčených postupech.

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 →