CodeGym/Java tanfolyam//Antiminták

Antiminták

Szint, Lecke
Elérhető

Bevezetés az anti-mintázatokba

Az anti-mintázatok pontosan az ellentétei a mintáknak. Emlékezzünk vissza, hogy a tervezési minták a jó programozási gyakorlat példái, azaz bizonyos problémák megoldásának mintái. De az anti-minták a teljes ellentétük, vagyis a különböző problémák megoldása során elkövetett hibák mintái.

A helyes programozási gyakorlat része éppen az anti-mintázatok elkerülése. Ne gondolja, hogy ez egy ilyen érthetetlen elméleti szemét – ezek olyan konkrét problémák, amelyekkel szinte minden fejlesztő találkozott. Aki tisztában van, fel van fegyverkezve!

Nézzünk meg néhány anti-mintát, amelyek gyakoriak a kezdők körében:

  • Varázslatos számok és húrok
  • isten osztály
  • Korai optimalizálás
  • a kerékpár feltalálása
  • Az egykerekű feltalálása

Varázslatos számok és húrok

A bűvös szám valamire (leggyakrabban adatazonosításra) a kódban használt konstans, amelynek magának a számnak nincs értelme a megfelelő megjegyzés nélkül. A számoknak egyáltalán nincs szemantikája.

Amikor számok kezdenek megjelenni a projekt kódjában, amelyek jelentése nem egyértelmű, az nagyon rossz. Egy programozó, aki nem a szerzője egy ilyen kódnak, nehezen tudja elmagyarázni, hogyan működik. Idővel még a mágikus számokkal rendelkező kód szerzője sem fogja tudni megmagyarázni.

A számok megnehezítik a kód megértését és újrafeldolgozását. Ennek a hibának a fő oka a fejlesztési sietség és a programozási gyakorlat hiánya. Ezt az anti-mintázatot a fejlesztés megkezdése előtt meg kell szüntetni a numerikus állandók használatának előírásával.

A probléma megoldásához létre kell hozni egy változót, amelynek neve megmagyarázza a numerikus állandó célját, és hozzá kell rendelni a kívánt értéket.

isten osztály

Az isteni tárgy egy anti-minta, ami elég gyakori az OOP fejlesztők körében. Egy ilyen objektum túl sok funkciót tölt be és/vagy szinte az összes adatot tárolja. Ennek eredményeként van egy nem hordozható kódunk, amelyet ráadásul nehéz megérteni.

Ráadásul egy ilyen kódot meglehetősen nehéz karbantartani, tekintve, hogy az egész rendszer szinte kizárólag tőle függ. A hiba okai: fejlesztői inkompetencia, egy fejlesztő a munka nagy részét átvállalja (különösen, ha a munka mennyisége meghaladja a fejlesztő tapasztalati szintjét).

Ezt a megközelítést úgy kell kezelni, hogy a feladatokat részfeladatokra bontják, amelyekkel a különböző fejlesztők foglalkozhatnak.

Korai optimalizálás

Az idő előtti optimalizálás olyan optimalizálás, amelyet azelőtt hajtanak végre, hogy a programozó birtokában lenne minden szükséges információnak ahhoz, hogy megalapozott döntéseket hozzon arról, hol és hogyan tegye.

A gyakorlatban nehéz megjósolni, hogy hol lép fel szűk keresztmetszet. Az empirikus eredmények megszerzése előtti optimalizálási kísérletek a kód bonyolultságához és hibák megjelenéséhez vezetnek, de nem járnak semmilyen előnnyel.

Hogyan lehet elkerülni? Először is írjon tiszta, olvasható, működő kódot jól ismert és bevált algoritmusok és eszközök segítségével. Ha szükséges, használjon profilkészítő eszközöket a szűk keresztmetszetek megtalálásához. Mérésekre hagyatkozzon, ne találgatásokra és feltételezésekre.

Példák és jellemzők

Gyorsítótár a profilalkotás előtt. Összetett és nem bizonyított heurisztikák használata matematikailag helyes algoritmusok helyett. Új, nem tesztelt keretrendszerek válogatása, amelyek terhelés alatt rosszul működhetnek.

Mi a nehézség

Nem könnyű megállapítani, hogy az optimalizálás mikor korai. Fontos, hogy előre teret hagyjunk a növekedésnek. Olyan megoldásokat és platformokat kell választania, amelyek lehetővé teszik az egyszerű optimalizálást és növekedést. Néha az idő előtti optimalizálás ürügyként szolgál a rossz kódra. Például csak azért vesznek fel egy O(n2) algoritmust, mert az algoritmus O(n) nehezebb lenne.

a kerékpár feltalálása

Ennek az antimintának az a jelentése, hogy a programozó saját megoldást dolgoz ki egy olyan problémára, amelyre már léteznek megoldások, és gyakran sokkal sikeresebbek is.

A fejlesztő okosabbnak tartja magát, ezért minden feladatra igyekszik saját megoldást találni az elődök tapasztalata ellenére. Leggyakrabban ez csak időveszteséghez és a programozó hatékonyságának csökkenéséhez vezet. Végül is a megoldás valószínűleg szuboptimális lesz, ha egyáltalán megtalálják.

Természetesen nem lehet teljesen elvetni a független megoldás lehetőségét, mivel ez közvetlen módon másolás-beillesztés programozáshoz vezet. A fejlesztőnek el kell navigálnia az előtte felmerülő feladatokat, hogy azokat kompetens módon tudja megoldani, kész megoldásokkal vagy saját kitalálásával.

Ennek az antimintának nagyon gyakran az egyszerű időhiány az oka. Az idő pedig pénz.

A négyszögletes kerekű kerékpár találmánya

Ez az antiminta nagyon szorosan kapcsolódik a kerék egyszerű újrafeltalálásához – saját rossz megoldás létrehozásához, ha létezik jobb megoldás.

Ez az anti-mintázat kétszer annyi időt vesz igénybe: először a saját megoldás kitalálására és megvalósítására, majd annak újrafaktorizálására vagy cseréjére telik az idő.

A programozónak tisztában kell lennie azzal, hogy bizonyos feladatokra különféle megoldások léteznek , és vezérelnie kell azok előnyeit és hátrányait.

Az összes probléma, amellyel programozóként szembe kell néznie, két részre osztható:

  • okos emberek 30 éve megoldották ezt a problémát
  • okos emberek 50 éve megoldották ezt a problémát

A legtöbb programozási problémát sikeresen megoldották, mielőtt még megszületett . Nem kell feltalálni semmit - csak tanulmányozza mások tapasztalatait (a könyvek erre vannak írva).

2022-ben a következő születésnapokat ünnepelhetjük:

  • Programozási nyelvek
    • 50 éves a C nyelv (1972)
    • A Java nyelv 27 éves lett (1995)
    • A Python 31 éves (1991)
  • Kapcsolat
    • Az internet 39 éves lett (1983)
    • A mobiltelefon 49 éves lett (1973)
    • Az első SMS-t 30 éve küldték el (1992)
  • Minták
    • Az MVC minta 44 éves lett (1978)
    • Az SQL-t 48 éve találták fel (1974)
    • A Java babot 26 éve találták fel (1996)
  • Könyvtárak
    • A hibernálást 21 éve találták fel (2001)
    • A tavaszt 20 éve találták fel (2002)
    • A Tomcat 23 éve jelent meg (1999)
  • OS
    • A Unix 51 éve jelent meg (1971)
    • A Windows 37 éve látta meg a napvilágot (1985)
    • A Mac OS 21 éve jelent meg (2001)

És mindezeket a dolgokat nem csak kitalálták, hanem olyan problémák megoldásaként fejlesztették ki, amelyek akkoriban nagyon gyakori és aktuálisak voltak.

Hozzászólások
  • Népszerű
  • Új
  • Régi
Hozzászólás írásához be kell jelentkeznie
Ennek az oldalnak még nincsenek megjegyzései