Gyakorlat – Kódblokkok eltávolítása a ha utasításból
A szoftverfejlesztők imádják, ha olyan kódot írhatnak, amely anélkül takarít meg billentyűleütéseket és vizuális helyet, hogy feláldozná az olvashatóságot. Csak akkor alkalmazza a "kevesebb több" kifejezést a fejlesztési folyamatban, ha a kód olvashatóbbá és érthetőbbé válik.
Ha egy kódblokknak csak egy kódsorra van szüksége, valószínűleg nem kell kapcsos zárójelekkel formális kódblokkot definiálnia. Bár gyakorlatilag nem is kell több sorra különítenie a kódot, az egy sorban lévő utasítások kombinálásával nehezen olvashatóvá teheti a kódot.
A kapcsos zárójelek eltávolítása, ahogy fent említettük, olyan stílusbeli változás, amely nem befolyásolja a kód működését. Azonban lépéseket kell tennie annak érdekében, hogy a módosítások ne befolyásolják negatívan a kód olvashatóságát. Értékelheti a kapcsos zárójelek és a szabad terület eltávolításának hatását, majd visszatérhet az eredeti kódhoz, ha úgy találja, hogy a módosítások kevésbé olvashatóvá tették a kódot.
Példa létrehozása kódblokkot használó if utasításra
Győződjön meg arról, hogy egy üres Program.cs fájl van megnyitva a Visual Studio Code-ban.
Ha szükséges, nyissa meg a Visual Studio Code-ot, majd végezze el a következő lépéseket egy Program.cs fájl szerkesztéséhez a Szerkesztőben:
A Fájl menüben válassza a Mappa megnyitása lehetőséget.
A Mappa megnyitása párbeszédpanelen lépjen a CsharpProjects mappára, majd nyissa meg azt.
A Visual Studio Code EXPLORER ablakban válassza a Program.cs-t.
A Visual Studio Code Selection menüjében válassza az Összes kijelölése lehetőséget, majd nyomja le a Delete billentyűt.
Írja be a következő kódot a Visual Studio Code Editorba:
bool flag = true; if (flag) { Console.WriteLine(flag); }Mentse a kódfájlt, majd a Visual Studio Code használatával futtassa a kódot.
Írja be
dotnet runa terminál parancssorából a kód futtatásához.Ellenőrizze, hogy a következő kimenet jelenik-e meg:
TrueA kód jó kiindulási pontot jelöl, de van egy kódblokkja, amely egyetlen kódsort tartalmaz. Ebben az esetben szükség van kódblokk meghatározására?
Távolítsa el a kapcsos zárójeleket
A fenti kód akkor hajt végre egy kódblokkot, amikor a flagtrue. Mivel ez a kódblokk egyetlen kódsort tartalmaz, lehetősége van eltávolítani a kapcsos zárójeleket.
Frissítse a kódot a Visual Studio Code Editorban az alábbiak szerint:
bool flag = true; if (flag) Console.WriteLine(flag);Megjegyzés:
A kapcsos zárójelek eltávolítása nem változtat azon a tényen, hogy a
Console.WriteLine(flag);kódrészlet aifutasításhoz tartozik.Mentse a kódfájlt, majd a Visual Studio Code használatával futtassa a kódot.
Figyelje meg, hogy a kimenet ugyanaz, mint korábban.
Továbbra is a következő kimenetnek kell megjelennie:
TrueAzonban két kisebb sornyi kód van. Ami a legfontosabb, hogy a kódsor a
ifbehúzás alatt van, a kód továbbra is könnyen olvasható.
Az egysoros feltételes utasítások olvashatóságának vizsgálata
Ebben a lépésben egy olyan esetet fog megvizsgálni, amelyben a kód olvashatósága negatívan befolyásolható.
Mivel mind az if utasítás, mind a Console.WriteLine() metódus hívása rövid, előfordulhat, hogy egyetlen sorban szeretné őket egyesíteni. Végül is az if utasítás C#-szintaxisa lehetővé teszi az utasítások ilyen módon történő kombinálására.
Frissítse a kódot a Visual Studio Code Editorban az alábbiak szerint:
bool flag = true; if (flag) Console.WriteLine(flag);Mentse a kódfájlt, majd a Visual Studio Code használatával futtassa a kódot.
Figyelje meg, hogy a kimenet továbbra is ugyanaz.
Szánjon egy percet a kód olvashatóságának megfontolására.
Képzelje el az előző két kódmintát egy nagyobb kódszakaszba ágyazva. A kódkivonatok kombinálása (ahogyan a 4. lépésben tette) megnehezítheti az olvasást.
Ha egy
ifegyutas kódblokkot tartalmazó utasítást implementál, a Microsoft a következő konvenciók használatát javasolja:- Soha ne használjon egysoros formátumot (például: if (jelző) Console.WriteLine(jelző);
- A kapcsos zárójelek használata mindig elfogadott, és kötelező, ha egy ha/else if/.../else összetett utasítás bármely blokkja kapcsos zárójelet használ, vagy ha egyetlen utasítástörzs több sorra is kiterjed.
- A kapcsos zárójelek csak akkor hagyhatók ki, ha a ha/else if/.../else összetett utasításhoz társított összes blokk törzse egyetlen sorban van elhelyezve.
A nagyobb if-elseif-else szerkezetek olvashatósági hatásának vizsgálatához frissítse a kódot az alábbiak szerint:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");Mentse a kódfájlt, majd a Visual Studio Code használatával futtassa a kódot.
A kód futtatásakor a következő kimenetnek kell lennie:
Found SteveA kód fut, de ezek a kódsorok sűrűk és nehezen olvashatók. Érdemes lehet újraformálni a kódot, hogy sortörést tartalmazzon a ,
iféselse ifazelseutasítások után.Hasonlítsa össze az imént futtatott kódot a következő kóddal:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");Figyelje meg, hogy mennyivel könnyebb elolvasni a második kódmintát.
Összefoglalás
Íme néhány fontos dolog, amit meg kell jegyezni az utasításkódblokkokról és az olvashatóságról if :
- Ha észreveszi, hogy a kódblokk az
if-elseif-elseutasításon belül csak egyetlen kódsort tartalmaz, eltávolíthatja a kódblokk kapcsos zárójeleit és a szóközöket. A Microsoft azt javasolja, hogy a kapcsos zárójeleket következetesen használja azif-elseif-elseadott utasítás összes kódblokkjában (akár jelen vannak, akár következetesen el vannak távolítva). - Csak akkor távolítsa el a kódblokk kapcsos zárójelét, ha az olvashatóbbá teszi a kódot. A kapcsos zárójelek mindig elfogadhatók.
- Csak akkor távolítsa el a soremelést, ha az olvashatóbbá teszi a kódot. A Microsoft azt javasolja, hogy a kód olvashatóbb legyen, ha minden utasítás a saját kódsorára kerül.