Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet "felszeletelni"...

Hogyan lehet "felszeletelni" a kódot?

Figyelt kérdés

Junior programozó vagyok és mindig azt veszem észre a megírt funkciókon, hogy nagyon hosszúra sikerül megírnom.

Hogy lehet úgy, gondolkodni, hogy amikor belekezdek egy feature megírásába akkor ne több száz soros osztályokat, funkciókat gyártsak le hanem minél jobban legyen szét szedve több osztályra/funkcióra.

Jelenleg úgy gondolkodom, hogy ami ismétlődni szokott a kódban azt kiemelem külön funkcióba de még így is több száz soros funkciók jönnek össze.



2021. júl. 27. 14:36
 1/8 anonim ***** válasza:
65%

Akkor még jobban fel kell szeletelni. Ennyi a megoldás :)

Kis egységekben gondolkozz. Bár nem tudom milyen nyelven csinálod, de általában meg lehet oldani, hogy 1-1 metódus/függvény 20-25 sornál ne legyen hosszabb... Bár a bölcsek még ennél is sokkal kevesebbre esküsznek, de nyilván nem mindig jön össze, amikor az ember belemerül.


De nyilván a több 100 soros metódusok, az rossz úgy.


Induljunk ki mondjuk egy letöltőprogramból:


- Kiszervezném mondjuk a csatlakozást a hosthoz, és paraméterként várnék egy URL-t

- Az oldalbejárást is kiszervezném amennyire csak lehet

- Lenne egy kis egység, ami csak az adott oldalon kutat, és lementi az adatokat, pl. képeket.

- Ezután kiszervezném külön mondjuk egy fájlba írást is, ami lementi a képeket.

- De akár ha használni akarsz customer header-öket a csatlakozáshoz, azt is kiszervezném.

- Vagy maga a letöltési folyamatot, akár külön osztályba is, ami kapna több adatot is.


Máris kész egy egyszerű Python letöltő program, ami fel van darabolva, és átlátható :D


Ez kb 200 sor összesen, és mennyi részből áll? Egy jó párból. Bár ha mondjuk Javazol, akkor ott több kód van, de ott is szépen szét lehet szeparálni.

2021. júl. 27. 15:06
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
93%

Egyrészt, ha megvan a működőképes kód az már elve tök jó. Kisebb, egyszerűbben tesztelhető függvények írására rá lehet szokni. Ha végiggondolod az algoritmusod, pontokba szeded, hogy milyen sorrendben mi történik, akkor minden egyes pont lehet egy önálló függvény, Ha adatot kell megosztani az egyes függvények között, akkor azok egy objektum metódusai lesznek, amiket meghívsz egy adott darab adaton.


Magát a meglévő kódot kisebb egységekre szeletelni nem nagy ördöngősség ha valamilyen IDE-t használsz: VSCode-on itt megmutatja a srác: https://www.youtube.com/watch?v=0GiyKv6ozP8

2021. júl. 27. 15:36
Hasznos számodra ez a válasz?
 3/8 A kérdező kommentje:

Köszönöm a segítséget és a példát is! :)

Azt kifelejtettem PHP/TypeScript-el foglalkozom.

2021. júl. 27. 15:36
 4/8 anonim ***** válasza:
100%

ahhoz hogy egy darab kódot kiszervezz egy függvénybe, nem feltétlen kell, hogy ismétlödjön.


Ajánlok egy heurisztikát:

Ha látsz egy pár soros kódot, aminek tudsz nevet adni, azt szervezd ki külön függvénybe.

2021. júl. 27. 21:42
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:
22%
Ha egy függvény 18-20 sornál hosszabb, akkor ott már valami nagyon el lett baxva.
2021. júl. 27. 22:19
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:
100%

"Ha látsz egy pár soros kódot, aminek tudsz nevet adni, azt szervezd ki külön függvénybe"

Szerintem itt ez a leghasznosabb tanács.

2021. júl. 27. 23:38
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:
9%

A leghasznosabb tanács úgy hangzik, hogy tanulja meg, micsoda az a függvény.


Nem névadó ünnepség ez, banyek.

2021. júl. 27. 23:41
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:
100%
Olvasd el a Clean Code című könyvet.
2021. júl. 29. 09:04
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!