Jak psát kvalitní kód v jazyce C sharp?
Poznej základy psaní čistého kódu v C# a zefektivni svou práci
Programovací jazyk C# nabízí širokou škálu využití. Můžeš v něm vytvářet webové aplikace i počítačové hry. Počítat ale musíš tím, že je potřeba zapracovat na svých programátorských skills. Pokud nebudeš psát kvalitní kód, bude pro tebe nebo tvého kolegu obtížné s ním v budoucnu pracovat.
V článku jsme si pro tebe připravili několik osvědčených postupů, které ti zaručeně pomohou psát kvalitní kód v jazyce C sharp. Ať už jsi začátečník, nebo už za sebou máš nějaké projekty, níže uvedené postupy se určitě vyplatí aplikovat do tvé praxe.
Snadno zapamatovatelné názvy
Zaměř se na to, aby názvy proměnných byly snadno zapamatovatelné. Jde o poměrně častou chybu, kterou programátoři dělají. Tu zpravidla způsobuje nutkání zakomponovat do kódu více informací, než je potřeba.
Proto pamatuj, že při definici proměnné je lepší používat smysluplný název, který se snadno pamatuje i vyslovuje.
Špatný způsob:
var yyyymmddstr = DateTime.Now.ToString("YYYY/MM/DD");
Dobrý způsob:
var currentDate = DateTime.Now.ToString("YYYY/MM/DD");
Máš pocit, že jde o naprostou banalitu? Jakmile začneš pracovat na větším projektu, přibude více proměnných. Až se budeš po čase vracet ke své práci, budeš ještě rád*a, že sis na názvech dal*a záležet.
Drž se osvědčených zásad pojmenování
Řada programovacích jazyků má své osvědčené zásady pojmenování, které usnadňují čitelnost kódu, jeho srozumitelnost a udržitelnost. Zapamatuj si, že v jazyce C# se používá:
- pascal case pro pojmenování třídy, rozhraní, struktury nebo typu delegáta. V tomhle případě je vždy první písmeno slova velké.
- camel case pro zápis argumentu metody, místní proměnné a soukromé pole. Tento způsob zápisu má první písmeno slova malé, další pak jsou velká.
Příklad:
// PascalCase
public string FirstName { get; set; }
public string LastName { get; set; }
// camelCase
string firstName = "Alice";
string lastName = "Smith";
Vyhni se opakování
Další častou chybou, s níž se může setkat tvůj kód, je nadměrné opakování jmen nebo slov. Pokud se tento mnohdy nevědomý sklon k pojmenování neodnaučíš, zbytečně jím zaneseš svou práci. V rámci čitelnosti a udržitelnosti kódu je dobré, když se odnaučíš opakovat tam, kde to není třeba.
Špatný způsob
Bike MountainBike = new(){
bikeBrand = "Trek",
bikeModel = "MX Mountain",
bikeColor = "Green"
};
void paintBike(Bike mountainBike, string color){
mountainBike.bikeColor = color;
}
Dobrý způsob:
Bike MountainBike = new(){
brand = "Trek",
model = "MX Mountain",
color = "Green"
};
void paintBike(Bike mountainBike, string color){
mountainBike.color = color;
}
Už na první pohled vidíš, že příklad ukazující dobrý způsob je snáze čitelný.
Používej jednotné názvy pro proměnné
Řada vývojářů při definování proměnné má tendenci vytvářet odlišnou strukturu. Jednoduše se dá říct, že pro označení stejné proměnné se používá jiný lexikální význam.
Při psaní kódu je zapotřebí, abys usiloval*a o jednoduchost. Proto měj na paměti, že bys v rámci jedné proměnné měl*a používat stejná slova, nikoliv jejich synonyma.
Špatný způsob
getUserInfo();
getClientData();
getCustomerRecord();
Špatný způsob
getUser();
V ilustračním příkladu vidíš, jak takové nadužívání synonymních výrazů vypadá. Tento postup může být časem matoucí jak pro tebe, tak pro vývojáře, který bude s tvým kódem pracovat.
Vyhni se magic numbers a strings
Hodnota, která je napevno zakódována přímo v kódu, se označuje jako tzv. „magic numbers“ nebo „magic strings“, což může ztížit údržbu i úpravu. Předejít možným chybám se dá tak, že hodnotu definuješ jako konstantu nebo enum.
Tento postup zlepšuje udržitelnost kódu, protože centralizuje hodnotu a zaručuje snazší aktualizaci i úpravu kódu do budoucna.
Špatný způsob
if (userRole == "Admin")
{
// logic in here
}
Dobrý způsob
const string ADMIN_ROLE = "Admin"
if (userRole == ADMIN_ROLE)
{
// logic in here
}
Tímto způsobem zabráníš tomu, aby se řetězce duplikovaly a způsobovaly chyby v případě, že v některém z nich provedeš změnu.
Omezení vnořování bloků kódu
Pro zlepšení čitelnosti a udržitelnosti kódu je nezbytné omezit hloubku vnořených bloků. Nadměrné vnořování může způsobit, že kód bude nepřehledný a náročný na sledování.
Z toho důvodu složitou logiku rozděl do samostatných metod nebo tříd a dodržuj princip jediné odpovědnosti (SRP). Tento postup podporuje opakované použití kódu, jeho čitelnost a úpravu.
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class EmployeeRegistration
{
public void Register(Employee employee)
{
StaticData.Employees.Add(employee);
}
}
public class StaticData
{
public static List Employees { get; set; } = new List();
}
V tomto příkladu třída Employee uchovává údaje o zaměstnancích, třída EmployeeRegistration uchovává registrační operace a třída StaticData uchovává údaje o zaměstnancích.
Využívej efektivní komentáře kódu
Komentáře hrají důležitou roli při dokumentování kódu a napomáhají jeho pochopení. Přidáním popisných poznámek přidáváš kontext a vysvětluješ, co kód dělá. Ostatní vývojáři mohou snáze pochopit tvůj záměr a efektivněji udržovat nebo upravovat kódovou základnu.
Nezapomínej na jasné pravidlo. Tvůj komentář musí být stručný, jasný a aktuální.
Kontrola null pomocí příkazu if
Příkaz if může mít značné množství funkcí a způsobů využití. Jedním z nich je jeho použití při kontrole null. Nedá se říct, že by šlo vyloženě o chybu, ale přílišné nadužívání if může vést k chybám.
Špatný způsob:
if (application != null)
{
if (application.protected != null)
{
return application.protected.shieldLastRun;
}
}
Dobrý způsob:
return application?.protected?.shieldLastRun;
Vše se dá vyřešit null-conditionalem (?.), který kód výrazně zkracuje, zamezuje chybám a je udržitelnější.
Využití generik a LINQ
Generika a LINQ jsou klíčové funkce jazyka C#, které vám umožňují psát efektivní a opakovaně použitelný kód. Generika nabízejí možnost vytvářet algoritmy a datové struktury, které jsou schopné pracovat s libovolnými datovými typy, čímž zvyšují flexibilitu a znovupoužitelnost tvého kódu.
Language Integrated Query poskytuje výkonný a stručný způsob, jak se dotazovat a manipulovat s kolekcemi dat, což zahrnuje pole, seznamy, a dokonce i zdroje dat, jako jsou databáze nebo XML soubory.
Použitím LINQ můžeš psát dotazy, které jsou snadno čitelné a údržbové, zatímco generika ti umožní psát obecnější kód, jenž se dá snáze znovu použít a a adaptovat na různé typy dat.
Způsobů, jak psát kvalitní kód, je více
V článku jsme ti shrnuli základní postupy, které ti zaručeně pomohou při psaní kvalitního kódu. Nezapomínej ale, že jde o proces učení, jenž tě bude provázet na tvé cestě vývojáře. Proto je dobré rozšiřovat své znalosti v oblasti psaní kvalitního i čistého kódu. S tím ti může pomoci náš kurz Clean code & design patterns.
Pro více tipů a novinek ze světa IT, programování či umělé inteligence sleduj náš blog nebo sociální sítě.
Autor: Martin Šlat