Rossz gyakorlat a felesleges kód írása?


Legjobb válasz

Igen, ugyanazokat a fajta és keresési és karakterlánc-kezelési funkciókat több ezer alkalommal fogod írni, mindegyik csak kiskorú legutóbbi variációja.

Ez annyira igaz, hogy az egyetemeken olyan „józanság-megtakarítási filozófia” merült fel, amely ezt tagadja, „Ne ismételje meg önmagát”, amely úgy tesz, mintha lenne mód arra, hogy ne írja át ugyanazt a kódot és több.

Ezt a hülye mantrát valóban ki kell verni az emberekből.

Az intelligens tervezés azt jelenti, hogy nem kell minden alkalommal a semmiből indulnunk, az intelligens kódolás pedig azt, hogy tudjuk, mikor kell valamit írni. új és mikor kell újrafelhasználni a kódot.

A kód újrafelhasználása időtakarékos, hibakeresést megtakarító intézkedésként megvan, ha elérhető. Ez olyan hasznos eszközökké fejlődött, mint a generikusok és a sablonok, valamint az öröklődés és az univerzális API-k fogalma, így a rendezés és a keresés általános lesz, ahelyett, hogy minden típusú tömbhöz vagy listához új keresési funkciót kellene írni.

A kódszöveg másolását a legrosszabb hibának tekintik, mert hibákat másol és felduzzasztja a kódot, és elsősorban ezt tekintik feleslegesnek.

Itt ragyog az öröklés mint kódcsökkentési stratégia. Az alosztályoknak nem kell az alaposztályaik drága átírása, ha az összes alosztályra jellemző funkcionalitás nagy része az alaposztályba kerül. Sokszor az alosztály meghívhatja az alaposztályfüggvényt, majd néhány módosítást elvégezhet, ahelyett, hogy az egész függvényt újratelepítené. Erről beszélnek.

De a „Ne ismételd meg önmagad” kultikus státuszt nyert az ilyen fórumokon, mint valamilyen ideális kódolási és tervezési mód, és ez egyszerűen nem igaz vagy praktikus vagy a valós világ bármely jelentős kódtagjának része.

A túltervezés a nyelv fejlesztőinek, elméleti szakembereknek és a Framework alkotóinak szól. A gyakorlati kódolók csak írnak működő kódot, és ha a programodnak két osztálya van, amelyek mind bináris keresést valósítanak meg, akkor mi van. Tényleg szüksége van egy harmadik osztályra, amely alosztályokkal rendelkezik a másik két adatosztály bináris keresésének kezeléséhez? Lehet, de ez az adatosztályok nagyságrendjének növeléséről szól, bináris keresés szükségességével, akkor valós idejű és hibakímélővé válik, ha van olyan osztályunk, amely ezt helyesen végzi, és amely alosztályba sorolható az adatosztályok igényeinek kezeléséhez. Látja?

A nagy programozás sokkal több tervezést és munkamegosztás elemzést igényel, mint a kis munkák és eszközök programozása. Tehát igen, ha több mint 1000 soros kóddal rendelkező projektje van, nézze át a tervet, és találjon felesleges algoritmusokat és függvényeket, és döntse el, hogy összegyűjtheti-e őket egy vagy két funkcionális segédprogram osztályba, és megoszthatja-e az összes adatobjektum kódját. De ne váljon belőle a végleges redundancia-megszüntetés vallási törekvése. És ne higgyen azoknak, akik ezt teszik.

Válasz

Ha ez a leghatékonyabb lehetőség, akkor ez nem rossz gyakorlat. bármi elvégzése, amelynek egyszerűbb, elegánsabb megoldása van, de a rossz gyakorlat .

Ebben az esetben egy óriási kapcsolót gyakran fel lehet cserélni egy interfésszel, vagy megengedni, hogy az osztály felelős legyen stb.

Például, ha van valami hasonló :

Ez működni fog . A kód eléggé robusztus lesz, mindaddig, amíg az értékeket csak hozzáadják és nem szerkesztik, és valójában még elég hatékony is, mivel a bitek összehasonlítása gyakorlatilag nulla időt vesz igénybe. De ez megszabadul az irányítástól, nehezen kezelhető, és már mindenképpen meg kell határoznia ezeket az autóosztályokat.

Ehelyett kezdjük ilyesmivel:

Ismételten valószínűleg így is volt, csak a numberOfCylinders módszer nélkül, és így most az első A módszer csak így néz ki:

Most képzelje el egy pillanatra, hogy nemzeti autóalkatrész-üzlet vagyunk, és szó szerint többféle autó, különböző gyártmányúak, modellek, kárpitok, stb. Ha óriási szörnyeteggé válna, lehetetlen olvasni, rendkívül nehéz biztonságosan hozzáadni vagy eltávolítani stb.

Tehát még egyszer , ez nem mindig rossz gyakorlat, és néha nagy kapcsolóra vagy ilyesmire lesz szükségünk, hanem

SZERKESZTÉS: sok hozzászólás van a n rendkívül sok autó kombináció (potenciálisan millió a történelem során) és az autót megvalósító osztályok itt megbuknak. Természetesen egy bizonyos ponton az osztályok nem fognak működni, és Ön lapos fájlokat tárolna egy adatbázisban, és egy hozzáférést használna.

A válaszom azt kívánta megmutatni, hogy a nagyon hosszú feltételes utasítások, nem pedig tényleges kísérlet az autóalkatrész-áruház architektúrájának felépítésére.Ha nagyobb autóüzletnél dolgozik, kérjük, ne az egyszerű válaszomat vegye alapul a szoftverarchitektúrájához 🙂

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük