Gyakorlatilag egyetlen eljárás az egész, ahhoz szeretnék tanácsot kérni, hogy hogyan érdemes szétdarabolni kisebb részekre, már ha érdemes. Leírom nagyjából miket csinál.
Bemenetként 2 listát vár, egyikben az egyenletek, a másikban az ismeretlen függvények nevei. Az egyenleteket első körben átrendezi, majd jön az első ellenőrzés, hogy meg tudja-e oldani.
Ezután elkezdeni szépen kiszedegetni belőlük a megfelelő információkat, eközben szintén ellenőrzi, hogy nem tartalmaznak-e olyan elemeket, ami miatt nem tudná megoldani.
Ha ezen is túljutott, akkor a kinyert információkból felír és megold néhány egyenletrendszert, majd ezek megoldásaiból összerakja az eredeti függvényegyenlet-rendszer megoldásait. A kimenet pedig kétféle formában is lehet, az egyik esetben szépen kiírja a kiderített összefüggéseket és az keresett függvények általános alakját szép formázott kimenetként, a másik esetben pedig csak két listát/halmazt ad vissza amik a függvények általános alakját és az összefüggéseket tartalmazzák.
Jelenleg igazából még csak egy kis szösszenet az egész 200 sor, de ez még csak egy elég speciális esettel tud megbirkózni Ahogy tisztázódnak az elméleti eredmények úgy folyamatosan bővíteni kellene majd, ezért jó lenne kicsit ésszerűbbre alakítani.
- _Borisz_ blogja
- A hozzászóláshoz be kell jelentkezni
- 1033 megtekintés
Hozzászólások
Saját tapasztalatom:
- egy függvény ne legyen hosszabb, mint ami a képernyőre kifér (persze, ezt időnként meg kell szegni.)
- ha valami kezd nagyon hosszúvá vállni, bontsuk több, kisebb, kezelhetőbb részre, ha nem érint nagyon semmit. (Normális C++ fordító pl. az ilyet helyből kioptimalizálja, sajnos a dinamikusabb, reflectionnal megtámogatott nyelvek pl. C# nemannyira).
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
80x24? :)
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
Kezdetnek:
Ha ilyen jól fel tudtad sorolni, hogy mi mindent csinál az egy darab eljárásod, akkor ez azt jelentheti, hogy ezek jól elkülöníthető de egymásra épülő munkafolyamatok.
Különítsd őket el szépen sorba: azaz minden munkafolyamat legyen külön függvény. A fő eljárásod meg sorban meghívogatja őket, azaz a fő eljárás csak azt logikát tartalmazza ahogy az egyes munkafolyamatok egymáshoz kapcsolódnak.
Ha valamelyik részmunkafolyamat függvényét még mindig nagynak és átláthatatlannak találod, azt ugyanilyen eljárással próbáld meg felbontani több darabra. (Elkülöníteni benne az eltérő részfeladatokat stb...)
Aztán triviális még:
Ha felfedezel ismétléseket a kódodban (pláne olyanokat amit ha módosítasz akkor mindig az összes helyen módosítanod kell), gondolkozz el nem ésszerű-e azt külön eljárásként megírni valamilyen beszédes névvel. Aztán azokon a helyeken ahol eddig a kódduplikáció volt csak az eljárást hívni: ezután egy helyen kell módosítanod a dolgokat ha változás van.
Ha nincsenek ilyen ismétlődő funkciók, akkor törekedj arra, hogy legyenek. ;) Azaz ha egy részfeladatot A,B,C módon is meg tudnál oldani, de egy másik részfeladatot már megoldottál A módon, akkor a saját munkádat könnyíted meg ha A-t kiemeled mint eljárás mert akkor kétszer is felhasználhatod...
- A hozzászóláshoz be kell jelentkezni
Mivel ugylatszik tudod az egesz munkamenetet, javaslom hogy rajzold fel a folyamatabrat, az sokat tud segiteni.
- A hozzászóláshoz be kell jelentkezni
Még egy fontos alapvető dolog:
Kerüld a globális változókat, amikor részfüggvényekre/eljárásokra bontod a munkád.
- A hozzászóláshoz be kell jelentkezni
én is hadd okoskodjak.
Pl ha OO-val csinálod, akkor csinálj a bemenetni érvényesség-ellenőrzésekre egy abstract osztályt, és az összeset úgy dolgozzad fel. Sokat fog könnyíteni a modulokban történő építkezéshez. Ha nem OO, akkor is probáldd meg valami listába szervezni őket, hogy könnyen bővíthető legyen. De ugyanez érvényes az összes egymáshoz nagyon hasonló feladatokra.
- A hozzászóláshoz be kell jelentkezni