Ako zaistiť, aby bol váš kód čitateľnejší pomocou abstrakcie

Keď sa učíte programovať, je bežné vidieť ľudí, ktorí používajú výraz nazývaný abstrakcia. Začnete sa pýtať sami seba: čo je to abstrakcia a prečo je to dôležité?

V tomto článku vám vysvetlím koncept abstrakcie a ako ju používať, a uvediem niekoľko príkladov v jazyku Python.

Prvá vec prvá: Čo je to abstrakcia?

Podľa môjho učiteľa Základy programovania:

„Abstrakcia je zjednodušená špecifikácia entity“

To znamená, že abstrakcia je reprezentáciou výpočtovej entity. Je to spôsob, ako skryť svoje konkrétne informácie a poskytnúť iba najrelevantnejšie informácie programátorovi.

Abstrakcia je tiež situačná: každá z nich vyhovuje potrebám, takže si môžete dobrú abstrakciu spojiť s konkrétnym použitím tejto entity.

Pozrime sa na Binárny vyhľadávací strom (Ak neviete, o čo ide, pozrite si môj článok o nich). Uzol môžeme definovať ako entitu s nasledujúcimi vlastnosťami:

A Node has: Node * left Node * right int val

Tu by sme povedali, že Uzol má dva ukazovatele na ďalšie uzly a hodnotu int. Ale ako užitočné je to pre niekoho v porovnaní s funkciou insert(node, value)a bolo by len správne vloženie? Takto by ste to jednoducho museli nazvať a bolo to hotové. Jednoduché.

Takto je abstrakcia užitočná. Všetky knižnice, ktoré používate vo svojich programoch, ju používajú na to, aby sa jej používanie stalo skutočne jednoduchým.

Dobre, ale aká dobrá je Abstrakcia údajov?

Abstrakcia údajov nám umožňuje transformovať zložitú dátovú štruktúru na štruktúru, ktorá je jednoduchá a ľahko použiteľná. Účinkom je to, že program s vysokou úrovňou zložitosti kódu je možné transformovať do podoby, ktorá vyzerá blízko k angličtine (nazvime ju kód na vysokej úrovni ).

Dátový typ sa skladá z 2 vecí: vlastností a metód, ktoré môžu byť verejné alebo súkromné. Jediné spôsoby, ako údaje použiť, sú verejné. Mali by pokrývať všetky funkcie, ktoré podľa vás tieto údaje umožňujú.

Čo sa stane potom, ak používate svoj abstraktný kód? Nezáleží na tom, či sa vaše vnútorné vlastnosti zmenia, pokiaľ metódy stále dostávajú rovnaké argumenty a robia to isté ako predtým. Ak niečo nie je v poriadku, musíte to zmeniť iba raz.

Vyberme príklad a pracujme s ním: Vektory

Budeme predpokladať, že vektory sú:

  • Objekty s 2 hodnotami, xay
  • xay sú nezáporné čísla

Týmto spôsobom sú vektory niečo ako (2, 5), (0, 19) atď.

Dobrým spôsobom, ako vytvárať abstrakcie, je používať objekty. Poskytujú utajenie informácií a anonymitu zastúpenia. To umožňuje používateľovi zachovať abstrakciu.

Začnime definovaním našej triedy (nebudem definovať overenie typu, aby bol kód čistší, ale mali by ste to urobiť):

Takže sme definovali viac metód a teraz máme veľa vecí, ktoré môžeme robiť:

Pre 2D vektor sa to môže zdať jednoduché. Ak to začnete implementovať do väčších a zložitejších programov, všimnete si, že prídu naozaj vhod.

Poďme teraz urobiť inú implementáciu vektora triedy (zmeniť jeho vnútorný stav) na niečo pomocou rovnakých metód, ale s iným kódom:

Ak spustíme rovnaké príkazy, výstup bude stále rovnaký. Je to tak kvôli použitej abstrakcii, aj keď sa kód úplne zmenil. Preto je veľmi dôležité používať abstrakciu. Umožňuje to flexibilitu vášho kódu a nezávislosť od kódu iných ľudí.

Použime teraz ďalší príklad, tentokrát s 2 triedami: Mesto a Občan.

A dostaneme nasledujúce:

### OUTPUT ###City population is 1000, random: Citizen is a female 20 years oldCity population is 1000, random: Citizen is a male 74 years old

Ale teraz si predstavte, že chceme zmeniť fungovanie triedy Citizen vo vnútri. Keby sme nepoužili abstrakciu, museli by sme zmeniť celý kód! To je veľa práce!

Ak je kód znova spustený, vieme, že funguje, aj keď výsledky sú odlišné. Ako vidíte, zmenili sme celú triedu, ale všetko funguje!

Balenie

Spočiatku môže abstrakcia vyzerať, akoby to nebolo potrebné. Čím nižšia je úroveň používaného jazyka, tým dôležitejšie je používať abstrakciu. Tým sa zabráni vzniku zložitého kódu a všetko bude skutočne jednoduché. V jazykoch ako C je to naozaj užitočné. Ak pochybujete, pozrite sa na tento projekt, ktorý som vytvoril, kde som implementoval abstrakciu, a bolo skutočne ľahké pochopiť, o čo ide.

Ak máte akékoľvek otázky alebo niečo, o čom by ste sa chceli rozprávať alebo diskutovať, zanechajte komentár nižšie!

Nezabudnite ma sledovať na Instagrame a Twitteri!