Facebook Pixel
Searching...
Magyar
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
írta Robert C. Martin 2007 464 oldal
4.37
22k+ értékelések
Hallgatás
Listen to Summary

Fő tanulság

1. Írj tiszta, olvasható és karbantartható kódot

A kódminőség egyetlen érvényes mérése: WTFs/perc

Az olvashatóság elsődleges. A tiszta kódot más fejlesztőknek könnyen érthetőnek kell lennie. Egyszerűnek, elegánsnak és zűrzavartól mentesnek kell lennie. Törekedj arra, hogy olyan kódot írj, amely világosan kifejezi a szándékát, anélkül, hogy kiterjedt megjegyzésekre lenne szükség. Használj jelentőségteljes változó- és függvényneveket, tartsd a függvényeket kicsinek és fókuszáltnak, és logikusan szervezd meg a kódot.

A karbantarthatóság lehetővé teszi az evolúciót. Az a kód, amelyet nehéz megváltoztatni, felelősséggé válik. Tervezd meg a kódodat rugalmasan és modulárisan, hogy alkalmazkodni tudjon a változó követelményekhez. Kövesd az olyan elveket, mint a DRY (Ne ismételd meg magad) és a SOLID, hogy lazán összekapcsolt, magasan kohéziós rendszereket hozz létre. Ne habozz refaktorálni, hogy javítsd a kód struktúráját anélkül, hogy megváltoztatnád a viselkedést.

A tiszta kód megtérül. Bár a tiszta kód írása kezdetben több erőfeszítést igényel, hosszú távon jelentős időt és fejfájást takarít meg. A tiszta kód könnyebben hibakereshető, bővíthető és karbantartható. Lehetővé teszi a fejlesztők számára, hogy hatékonyabban dolgozzanak, és csökkenti a hibák bevezetésének kockázatát a változtatások során. Tedd a tiszta kódot a fejlesztési gyakorlatod alapvető részévé.

2. Kövesd a jelentőségteljes elnevezési konvenciókat

Egy változó, függvény vagy osztály neve minden fontos kérdésre választ kell adjon. Meg kell mondania, miért létezik, mit csinál, és hogyan használják.

Használj szándékot kifejező neveket. Válassz olyan neveket, amelyek világosan közvetítik a változók, függvények és osztályok célját és viselkedését. Kerüld az egybetűs neveket vagy titkos rövidítéseket. Használj kiejthető neveket, amelyeket könnyen kereshetsz. Például:

  • Rossz: d (eltelt idő napokban)
  • Jó: elapsedTimeInDays

Légy következetes és precíz. Használj következetes elnevezési konvenciókat a kódodban. Légy precíz, hogy elkerüld az ambiguítást - például használj jelentős megkülönböztetéseket, mint a getActiveAccounts() és a getActiveAccountInfo(). Kerüld az olyan kódolásokat vagy előtagokat, amelyek zajt adnak hozzá érték nélkül. Az osztálynevek főnevek legyenek, a metódusnevek igék.

A név hossza illeszkedjen a terjedelemhez. Használj hosszabb, leíró neveket a nagyobb terjedelmű változók és függvények esetén. Rövid nevek elfogadhatók a kis, helyi terjedelmekhez. A név hossza arányos legyen a használati terjedelmével. Optimalizálj az olvashatóság és a megértés érdekében abban a kontextusban, ahol a nevet használják.

3. Tartsd a függvényeket kicsinek és fókuszáltnak

A függvényeknek egy dolgot kell csinálniuk. Azt jól kell csinálniuk. Csak azt.

A kicsi szép. A függvényeknek kicsiknek kell lenniük - jellemzően 5-10 sor hosszúak. Egy képernyőre kell férniük, és azonnal érthetőnek kell lenniük. Kódot jól elnevezett segédfüggvényekbe kell kiemelni, ahelyett, hogy hosszú, bonyolult függvényeket írnál. A kis függvények könnyebben érthetők, tesztelhetők és karbantarthatók.

Csak egy dolgot csinálj jól. Minden függvénynek egyetlen, világos célja kell, hogy legyen. Ha egy függvény több dolgot csinál, azokat külön függvényekbe kell kiemelni. Azt jelzi, hogy egy függvény túl sokat csinál, ha:

  • Több absztrakciós szintet tartalmaz
  • Több szakasz vagy kódrészlet van
  • Számos paramétert használ

Tartsd meg az egy szintű absztrakciót. A függvényen belüli állításoknak mind ugyanazon absztrakciós szinten kell lenniük. Ne keverd a magas szintű logikát az alacsony szintű részletekkel. Az alacsonyabb szintű műveleteket külön függvényekbe kell kiemelni. Ez javítja az olvashatóságot azáltal, hogy a függvényeket fókuszáltan és konceptuálisan egyszerűen tartja.

4. Gyakorold a megfelelő formázást és szervezést

A kódformázás a kommunikációról szól, és a kommunikáció a professzionális fejlesztő elsődleges feladata.

A következetes formázás fontos. Használj következetes behúzást, sortöréseket és térközöket a kódodban. Ez javítja az olvashatóságot és csökkenti a kognitív terhelést. Állapodj meg a csapatoddal a formázási szabványokról, és használj automatizált eszközöket azok érvényesítésére. A kulcsformázási irányelvek közé tartozik:

  • Megfelelő behúzás
  • Következetes zárójelek elhelyezése
  • Logikus sortörések
  • Megfelelő fehér tér

Szervezd logikusan a kódot. Csoportosítsd a kapcsolódó kódokat együtt, és válaszd el azokat, amelyek nem kapcsolódnak egymáshoz. Használj üres sorokat a "bekezdés" törések létrehozásához a logikai szakaszok között. Helyezd a kapcsolódó függvényeket egymás közelébe. Tartsd a fájlokat egyetlen koncepcióra vagy komponensre fókuszálva. Nagy fájlokat bonts le kisebb, fókuszáltabb fájlokra, ha szükséges.

Kövesd a standard konvenciókat. Tartsd be a nyelved és közösséged standard konvencióit. Ez ismerősebbé és hozzáférhetőbbé teszi a kódodat más fejlesztők számára. Például Java esetén:

  • Az osztálynevek PascalCase-t használnak
  • A metódusnevek camelCase-t használnak
  • Az állandók ALL_CAPS-t használnak

5. Kezeld a függőségeket és kerüld a duplikációt

A duplikáció lehet a szoftverek minden rosszának gyökere.

Szüntesd meg a duplikációt. A duplikált kód egy kihagyott lehetőség az absztrakcióra. Amikor duplikációt látsz, emeld ki a közös kódot egy újrahasználható függvénybe vagy osztályba. Ez javítja a karbantarthatóságot azáltal, hogy központosítja a logikát és csökkenti az inkonzisztens változtatások kockázatát. A figyelendő duplikáció típusai:

  • Azonos kódrészletek
  • Hasonló algoritmusok enyhe eltérésekkel
  • Ismételt switch/case vagy if/else láncok

Kezeld a függőségeket gondosan. Minimalizáld a modulok közötti függőségeket a kapcsolódás csökkentése érdekében. Használj függőséginjekciót és vezérlésinverziót, hogy a kód modulárisabb és tesztelhetőbb legyen. Kövesd a Függőséginverziós Elvet - absztrakciókra támaszkodj, ne konkrétumokra. Ez rugalmasabbá és könnyebben változtathatóvá teszi a kódodat.

Használj minimális tudás elvét. Egy modulnak nem szabad tudnia az általa manipulált objektumok belső működéséről. Ez csökkenti a modulok közötti kapcsolódást. Például használd a Demeter törvényt - egy metódusnak csak az alábbi objektumok metódusait szabad hívnia:

  • A saját objektumát
  • Az átadott paraméterként kapott objektumokat
  • Az általa létrehozott objektumokat
  • A közvetlen komponens objektumait

6. Kezeld a hibákat elegánsan

A hiba kezelés fontos, de ha elhomályosítja a logikát, akkor rossz.

Használj kivételeket a hiba kódok helyett. A kivételek tisztábbak, és nem zavarják a kód fő logikáját. Lehetővé teszik a hiba kezelésének elkülönítését a boldog úttól. Kivételek használatakor:

  • Készíts informatív hibaüzeneteket
  • Adj kontextust a kivételekhez
  • Határozz meg kivétel osztályokat a hívó igényei alapján

Ne adj vissza nullát. A null visszaadása null pointer kivételekhez vezet, és zavarossá teszi a kódot a null ellenőrzésekkel. Ehelyett:

  • Visszaadhatsz üres gyűjteményeket null helyett listák esetén
  • Használj Null Object mintát
  • Használj Optional-t Java-ban vagy Maybe-t funkcionális nyelvekben

Írd a try-catch-finally állításokat először. Kezdj a try-catch-finally-vel, amikor olyan kódot írsz, amely kivételeket dobhat. Ez segít meghatározni a hatókört és az elvárásokat a hívó kód számára. Biztosítja, hogy az erőforrásokat megfelelően kezeljék és felszabadítsák, még hiba esetén is.

7. Írj alapos egységteszteket

A tesztkód éppolyan fontos, mint a termelési kód.

Kövesd a TDD három törvényét. A Teszt-vezérelt Fejlesztés (TDD) javítja a kód minőségét és tervezését:

  1. Írj egy hibás tesztet, mielőtt bármilyen termelési kódot írnál
  2. Írj csak annyit a tesztből, hogy demonstrálja a hibát
  3. Írj csak annyit a termelési kódból, hogy a tesztet átmenjen

Tartsd a teszteket tisztán és karbantarthatónak. Alkalmazd a kódminőség ugyanazokat a szabványait a tesztjeidre, mint a termelési kódodra. Refaktoráld és javítsd a tesztkódot rendszeresen. A jól struktúrált tesztek dokumentációként szolgálnak, és lehetővé teszik a termelési kód félelem nélküli refaktorálását.

Cél a széleskörű tesztlefedettség. Írj teszteket, amelyek lefedik a szélsőséges eseteket, határfeltételeket és hibahelyzeteket - nem csak a boldog utat. Használj kódlefedettségi eszközöket a tesztlefedettség hiányosságainak azonosítására. Ne feledd, hogy a 100%-os lefedettség nem garantálja a hibamentes kódot, de bizalmat ad a refaktorálásban és a változtatásokban.

8. Refaktoráld a kódot folyamatosan

Hagyj a táborhelyen tisztábban, mint ahogy találtad.

Refaktorálj opportunisztikusan. Javítsd a kód struktúráját, amikor csak egy darab kódon dolgozol. Kövesd a Boy Scout Szabályt: hagyd a kódot jobban, mint ahogy találtad. A kis, fokozatos javítások idővel összeadódnak, és megakadályozzák a kód elöregedését. A gyakori refaktorálási technikák közé tartozik:

  • Metódusok vagy osztályok kiemelése
  • Nevek átnevezése a világosság érdekében
  • Bonyolult feltételek egyszerűsítése
  • Duplikáció eltávolítása

Refaktorálj biztonságosan tesztekkel. Mindig legyen egy szilárd tesztcsomagod a refaktorálás előtt. Végezzen kis, fokozatos változtatásokat, és futtasd a teszteket gyakran. Ez bizalmat ad abban, hogy a változtatásaid nem törik meg a meglévő funkciókat. Használj automatizált refaktoráló eszközöket, amikor csak lehetséges, hogy csökkentsd a hibák bevezetésének kockázatát.

Egyensúlyozd a refaktorálást az érték szállításával. Bár a folyamatos refaktorálás fontos, ne hagyd, hogy megbénítsa a haladást. Cél a "megfelelő" helyett a tökéletesség. A refaktorálási erőfeszítéseket a legproblémásabb vagy leggyakrabban változó kódterületekre összpontosítsd. Kommunikáld a refaktorálás értékét az érdekelt felek felé, hogy biztosítsd a folyamatos kódjavítás támogatását.

9. Alkalmazd az objektum-orientált és funkcionális programozási elveket

Az objektumok elrejtik az adataikat absztrakciók mögött, és olyan függvényeket kínálnak, amelyek azokon az adatokon működnek. Az adatszerkezetek felfedik az adataikat, és nincsenek jelentős funkcióik.

Használj objektum-orientált elveket bölcsen. Alkalmazd az olyan elveket, mint az enkapszuláció, öröklődés és polimorfizmus, hogy rugalmas, moduláris terveket hozz létre. Kövesd a SOLID elveket:

  • Egységes Felelősség Elve
  • Nyitott-Zárt Elve
  • Liskov Helyettesítési Elve
  • Interfész Szegregációs Elve
  • Függőséginverziós Elve

Használj funkcionális programozási fogalmakat. Még objektum-orientált nyelvekben is a funkcionális programozási technikák tisztább kódhoz vezethetnek:

  • Tiszta függvények mellékhatások nélkül
  • Immutable adatok
  • Magasabb rendű függvények
  • Függvénykompozíció

Válaszd ki a megfelelő megközelítést a problémához. Az objektum-orientált és funkcionális paradigmák egyaránt rendelkeznek erősségekkel és gyengeségekkel. Használj objektum-orientált tervezést, amikor bonyolult domainokat kell modellezni viselkedéssel. Használj funkcionális megközelítéseket az adatok átalakítására és feldolgozási csövekre. Sok modern nyelv támogatja a hibrid megközelítést, lehetővé téve, hogy a rendszer minden részéhez a legjobb eszközt használd.

10. Gondolj a párhuzamosságra gondosan

A párhuzamosság

Utoljára frissítve:

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.

Vélemények

4.37 -ból/-ből 5
Átlagosan 22k+ értékelések a Goodreads és az Amazon oldaláról.

A Tiszta Kód című könyv elsősorban pozitív visszajelzéseket kap a jól olvasható és karbantartható kód írására vonatkozó elveivel kapcsolatban. Az olvasók értékelik a gyakorlati tanácsokat a névadás, a funkciók és a tesztelés terén. A könyv Java fókusza és néhány túlságosan szigorú irányelve gyakori kritikák tárgyát képezi. Sokan alapműnek tartják a fejlesztők számára, bár egyesek szerint tapasztalt programozók számára kevésbé hasznos. Az esettanulmányokat és a refaktorálási példákat egyesek dicsérik, míg mások túlságosan kidolgozottnak találják őket. Összességében a bírálók egyetértenek abban, hogy a könyv értékes betekintést nyújt a kód minőségébe, még ha nem is minden javaslat alkalmazható univerzálisan.

A szerzőről

Robert Cecil Martin, akit csak Uncle Bob-ként ismernek, elismert szoftvermérnök és tanácsadó. Az Agile fejlesztési módszerek mellett érvel, és az Object Mentor Inc. elnöke. Martin szakértelme kiterjed az objektum-orientált tervezésre, mintákra, UML-re és az eXtreme Programozásra. Világszerte dolgozott ügyfelekkel, tudását tanácsadói és előadói szerepein keresztül osztotta meg. 1996 és 1999 között a C++ Report főszerkesztője volt. A szoftverfejlesztő közösség kiemelkedő alakja, aki gyakran tart előadásokat nemzetközi konferenciákon és szakmai kiállításokon. Hatása túlmutat tanácsadói munkáján, könyvein és cikkein keresztül, amelyek a szoftverkészítés mesterségéről és a legjobb gyakorlatokról szólnak.

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 →