added solid
This commit is contained in:
parent
1c5c967ccf
commit
bf8fe573a3
|
@ -380,4 +380,13 @@ Beszúrásos rendezés
|
|||
Továbbá akkor igen hatékony, ha egy rendezett sorozatot bővítünk és a bővítés után is szeretnénk,
|
||||
hogy a sorozat rendezett maradjon.
|
||||
|
||||
Az algoritmus futási ideje legjobb esetben konstans, legrosszabb esetben négyzetes.
|
||||
Az algoritmus futási ideje legjobb esetben konstans, legrosszabb esetben négyzetes.
|
||||
Pszeudokód:
|
||||
Ciklus i = 6 -tól 1-ig
|
||||
j = i - 1
|
||||
tmp = a[i]
|
||||
AMÍG (j >= 0) és (a[j] > tmp)
|
||||
a[j+1] = a[j]
|
||||
j = j - 1
|
||||
a[j+1] = tmp
|
||||
|
||||
|
|
178
cleancode
Normal file
178
cleancode
Normal file
|
@ -0,0 +1,178 @@
|
|||
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.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user