7.dia Objektumorientált tervezési alapelvek Flashcards

(17 cards)

1
Q

Statikus kódelemzés fogalma

A

A programkód elemzése annak futtatása nélkül. Kereshetünk hibákat vagy ellenőrízhetjük, hogy a kód megfelel-e a szabványoknak.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Példák statikus kódelemző eszközökre

A

Statikus kódelemző: Statikus kódelemzést véző eszköz.
Pl.:
C# : InferSharp, Roslyn Analyzers, Roslynator
C++ : Cppcheck
Java : Checkstyle
Python : Pylint
Több nyelvet támogató eszközök : Coala, Infer, MegaLinter, PMD, Semgrep
(PMD - IDE-kben pluginokkal)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

A DRY elv

A

Ne ismételd magad! - Don’t repeat yourself!
Ismétlések fajtái:
- Kényszerített ismétlés : A fejlesztők úgy érzik, hogy nincs más választás, a környezet úgy tünik, hogy megköveteli.
- Nem szándékos ismétlés : A fejlesztők nem veszik észre.
- Türelmetlen ismétlés : A fejlesztő lusta, és az ismétlés tünik a könnyebbik útnak.
- Fejlesztők közötti ismétlés : Egy csapatban is megeshet.
Kódismétlés : Azonos forráskódrész, amely egynél többször fordul elő egy programban.
- Reprezentációs ismétlés : Külső API-kból vagy adatforrásokból származó ismétlés.
PMD támogatás: (Copy and Paste Detector) CPD
Finding duplicated code with CPD (C/C++, C#, ECMAScript, Java, Kotlin, Python)
Intellij IDEA: Analyze duplicates
Információ ismétlés az is, ha ki lehet számítani valamit mégis megismételjük:
pont_helye - másik_pont_helye - !(távolságuk) (Mondjuk néha a teljesítmény érdekében tárolhatunk ilyet.)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

A KISS elv

A

Keep it simple, stupid
Egyszerűségre való törekvés.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

A YAGNI elv

A

Nem lesz rá szükség! - You Aren’t Gonna Need It!
(XP alapelv)
Csak akkor implementálj valamit, ha szükség van rá, nem akkor, ha úgy gondolod. Hiszen ez kötséges.
Olyan képességekre vonatkozik amely feltételes lehetőség támogatását teszik lehetővé, és nem arra, hogyha a módosítását próbáljuk könnyíteni.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Csatoltság fogalma

A

Egy szoftvermodul függésének mértéke egy másik szoftvermodultól.
Tehát azt írja le, hogy a kapcsolatuk mennyire szoros.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Laza és Szoros csatoltság fogalma

A

Szoros csatoltság:
Növeli a bonyolultságot, és nehezíti a kód módosítását és karbantartását. Nem teszi lehetővé az újrafelhasználhatóságot.
Laza csatoltság:
Lehetővé teszi a nyitva zárt elvnek megfelelő kód írását.
Kiterjeszthető és karbantartható kód jön létre.
Lehetséges a párhuzamos fejlesztés.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Demeter Törvénye

A

Don’t talk to strangers!
Egy objektumnak ne legyen hozzáférése közvetett módon más osztályok mezőihez és műveleteihez.
Class form, Object form

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

GoF alapelvek

A

2 alapelv:
Interfészre programozzunk, ne implementációra.
Részesítsük előnyben az objektum-összetételt az öröklődéssel szemben.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Öröklés és objektum-összetétel

A

Saját megfogalmazásban:
Az öröklés túl szoros.
Objektum összetétel:
A másik osztály megkap egy osztály objektumot, és nem örökli a műveleteket. Azon az objektumon hívja a saját műveleteit.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

egyszeres felelősség elve (SOLID alap elvek)

A

Egy felelősség egy ok a változásra. Ha egy felelőssége változik elronthatja a többit is.
Egy osztálynak csak egy oka legyen a változásra.
Később így fogalmazták meg: Egy modul egy, és csak egyetlen aktornak van alárendelve. Emberekhez köthető műveletek is legyenek elválasztva (Könyvelő, Bérügyi osztály…).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

nyitva zárt elv (SOLID alap elvek)

A

A szoftver entitások (osztályok, modulok, függvények…) legyenek bővíthetők de ne legyenek módosíthatóak.
Nyitott bővítésre: Modul viselkedése legyen kiterjeszthető.
Zárt módosításra: A bővítés ne változtassa a forrás- vagy bináris kódot.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Liskov-féle helyettesítési elv (SOLID alap elvek)

A

Ha egy típus egy másik leszármazottja, akkor a leszármazott típusban mindenhol használható a másik típus is.
(Téglalap - Négyzet)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Interfész szétválasztási elv (SOLID alap elvek)

A

A vastag interfészekkel (sok barát, függvény) foglalkozik.
Ezek kényszerítik a klienseket olyan metódusok használatára amelyeket nem használnak. (Nyomtató példa.)
Ha egy ilyen interfésszel rendelkezik az osztály, akkor nem lesznek koherensek. Több különböző klienst szolgálnak ki.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Függőség megfordítási elv (SOLID alap elvek)

A

Magas szintű modulok ne függjenek alacsony szinű moduloktól, mindkettő absztraciótó függjön. Az absztrakció pedig ne függjön részletektől, hanem fordítva.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Függőség befecskendezés

A

A vezérlés megfordítása nevű architekturális minta alkamazásának egy speciális esete, amely lazán csatoltá teszi a kódot..
Vannak keretrendszerek amik ezt más kódra bízzák.
Objektumok függhetnek egymástól és ez a kapcsolat tranzitív.
Függőség: A kliens a feladatának elvégzéséhez egy szolgáltatásra van szüksége.
Függő: Maga a kliens objektum.
Objektum gráf: Függő objektumok és függőségeik összessége.
Befecskednezés: Egy kliens függőségeinek megadását jelenti.
DI konténerek: Program könyvtár, amely befecskednez.
Tiszta DI: DI konténer nélküli alkalmazása az elvnek.

17
Q

Függőség befecskendezés Javában

A

Szabványos annotációkat biztosít hozza : Jakarta Dependency Injection.
Keretrendszerek:
Dagger, Spring Framework