ProgaOra/cleancode

179 lines
6.5 KiB
Plaintext
Raw Normal View History

2025-01-24 10:21:41 +00:00
Tiszta kód
A tiszta kód olyan programkód, amely olvasható, könnyen érthető és karbantartható.
Ennek elérése érdekében a tiszta kód az egyszerűség, átláthatóság és megfelelő struktúra elveit követi.
A tiszta kód elengedhetetlen a hosszú távú karbantartás és fejlesztás szempontjából.
Egy tiszta kódbázis segít a csapatot a hatékony együttműködésében, és csökkenti a hibák ekletkezésének esélyét.
Olvashatóság A kódot más fejlesztők könnyen megérthetik.
egyszerűség A bonyolultság csökkentése gyorsabb hibajavítást és fejlesztést tesz lehetővé.
karbantarthatóság A kód hosszú távon fenntartható és módosítható marad.
Olvashatóság
Azt jelenti, hogy a kód könnyen érthető mind a fejlesztők, mind a tesztelők számára.
Ennek érdekében:
használjunk értelmes változó és függvényneveket.
struktruáljuk a kódot logikus blokkokra.
használjunk megfelelő indentálást és sorhosszúságot.
egyszerűség:
Az egyszerűség elve szerint a kódot a lehető legegyszerűbben kell megírni, miközben minden szükséges funkcionalitást megvalósít.
Kerüljük:
A felesleges bonyolultságot,
A fölösleges vagy redundáns kódrészeket
karbantarthatóság
A karbantarthatóság érdekében a kódnak modulárisnak kell lennie, és megfelelően dokumentáltnak.
Ez azt jelenti, hogy a kódrészleteket könnyen újra lehet használni és módosítani.
Kódolási szokások kialakítása
Kód átalakítása olvashatóbbá
Eredeti:
public int Szamol(int x, int y){
return x * y + 10;
}
átalakított:
public int TeljesArSzamitas(int mennyiseg, int egysegar){
const int ado = 10;
return mennyiseg * egysegar + ado;
}
indentálás és sorhosszúság
Indentálás:
Kövessük a nyelv által javasolt szabványokat
(C# esetáben 4 szóközel vagy tab karakterrel igazítjuk a sor elejét)
Sorhosszúság:
Tartsuk a sorokat 80 - 100 karakter között,
hogy a kód olvasható maradjon minden eszközön.
Fehérterek XDDDD
Whitespace-ek és kommentek helyes használata
Hagyjunk üres sorokat a logikai blokkok között a kód strukturájának kiemelésére.
Használjunk szóközöket az operátorok körül a kód olvashatóságának javítása éredkében.
Kommentek
A kommentek a kód megértését segítik, de csak akkor használjuk őket, ha valóban szükséges.
A fölösleges kommentek zavaróak lehetnek, és csökkentik az olvashatóságot.
//A termék árának kiszámítása adóval
public int TeljesArSzamitas(int mennyiseg, int egysegar){
const int ado = 10;
return mennyiseg * egysegar + ado;
}
Megnevezési konvenciók és kódstruktúra
Változók és metódusok elnevezése
Válasszunk beszédes neveket, amelyek egyértelműen leírják a változó vagy metódus célját
Kerüljük a rövidítéseket és az érthetetlen neveket
rossz:
int c = 100;
jó:
int tetelszam = 100;
Projekt struktúrája
Osztályokat és metódusokat rendezzünk logikus modulokba és csomagokba.
Egy fájl egyetlen felelősséget lásson el.
Függvények és metódusok tisztasága
Az egyetlen felelősség elve
Egy függvény vagy metódus csak egy dolgot végezzen, és azt jól végezze el.
Rövidség és egyszerűség
A függvények legyenek rövidek, és kerüljük a túlzott összetettséget.
Ha egy függvény túl hosszú, osszuk fel kisebb részekre.
Rossz:
public void ProcessData(string data){
LoadData(data);
ValidateData(data);
SaveData(data);
}
Jó:
public void LoadData(string data){
}
public void ValidateData(string data){
}
public void SaveData(string data){
}
public void ProcessData(string data){
LoadData(data);
ValidateData(data);
SaveData(data);
}
Hibakezelés alapelvei
Try-catch blokkok helyes használata
Csak ott használjunk hibakezelést, ahol szükséges.
Adjunk pontos és érthető hibaüzeneteket.
Rossz:
try {
int eredmeny = 10 / 0;
} catch {
Console.WriteLine("hiba");
}
Jó:
try {
int eredmeny = 10 / 0;
} catch (DivideByZeroException ex){
Console.WriteLine($"Hiba történt: {ex.Message}");
}
Rossz:
try {
streamreader ...
file.Close();
} catch (FileNotFoundException){
CW("A fájl nem található")
}
Jó:
try {
using(streamreader file = new streamreader("data.txt")){
string tartalom = file.ReadToEnd();
}
} catch (FileNotFoundException){
CW("A fájl nem található")
}
Refaktorálás
A refaktorálás célja a kód minőségének javítása anélkül, hogy megváltoztatnánk annak viselkedését.
Ez segít az olvashatóság és karbantarthatóság növelésében.
Gyakori refaktoráláso lépések
Változók és függvények átnevezése
Redundáns kód eltávolítása
Hosszú függvények felosztása kisebbekre
Kódszagok felismerése és javítása
Kódszagok definíciója
A kódszag olyan kódrészlet, amely potenciális problémára utal.
Ezek közé tartozik:
Hosszú függvények
Redundancia
Túl sok paraméter
Solid alapelvek alkalmazása
S: Egyszeri felelősség elve (Single Responsibility Principle)
Egy osztály csak egy dolgot csináljon, és annak felelőssége jól körülhatárolható legyen.
O: Nyitott/zárt elv (open/closed Principle)
Egy osztály legyen nyitott a bővítésre, de zárt a módosításra
L: Liskov-helyettesítési elv (Liskov Substitution Principle)
Egy származtatott osztály heléyettesíthető legyen az alaposztályával anélkül, hogy a program helytelenül működne.
I: Interfész-szegregációs elv (Interface Segregation Principle)
Az interfészek legyenek kisebbel és specifikusabbak, hogy az implementáló osztályok ne legyenek
kénytelenek fölösleges metódusokat megvalósítani.
D: Függőség-inverzió elve (Dependency Inversion Principle)
A magas szintű modulok ne függjenek alacsony szintű moduloktól, mindkettő absztrakciótól függjön.