HTML

Projektmenedzsment, alkalmazásfejlesztés

Online projektmenedzsment rendszerek, webes alkalmazások fejlesztése, refactoring.

Friss topikok

Linkblog

Refactoring, avagy a forráskód minőségének javítása

2010.07.25. 15:24 develop

Az alkalmazások fejlesztése során utasításokat, parancsokat írunk le. Ezekből állítjuk össze a kívánt algoritmust, amiből aztán az üzleti logikának megfelelő folyamat keletkezik.


Ugyanakkor nem mindegy, hogy a keletkezett forráskód milyen minőséget képvisel.

Az áttekinthetetlen, logikátlan forráskód nemcsak a mindennapi munkát nehezítheti meg, hanem az egyes továbbfejlesztések alkalmával is felesleges időveszteséget okoz.

Ennek a problémának a kiküszöbölésére, megelőzésére ajánlom a refactoringot, mint technikát.

Nagyjából másfél, két éve vettem meg Martin Fowler Refactoring című könyvét, amit idő hiányában néhány hónapig a polcon tartottam.

Elolvasása után ma már jobban figyelem a kódok minőségét, és hiszem, hogy a refactoring technikáit a mindennapi programozásban nem csak javasolt, hanem szükséges is alkalmazni.

A könyvben vázolt megoldásokkal kódjainkat rugalmasabbá, könnyebben továbbfejleszthetővé tehetjük, de általa a tesztelés is nagymértékben egyszerűbbé válik.


A legnagyobb problémának a kódismétlést tartom, így elsődleges cél legyen, hogy a kódot szabadítsuk meg ezektől a felesleges duplikációktól. Itt elsősorban azokra a kódbázisokra kell gondolni, amit copy-paste módszerrel hoztunk létre. (Ezt elkerülendő, még néhány soros kódot se másoljunk.)

Ha felderítettük az ismételt kódrészleteket, akkor ezeket emeljük ki egy-egy metódusba.

Ha az első lépésen túljutottunk, akkor igyekezzünk a hosszú, sok, kisebb részfeladatot ellátó metódusainkat kisebb, egyenként egy-egy funkciót ellátó metódusra bontani.

A kódismétlés, és a funkciók kiemelése egyszerű művelet, így ezeket megfelelő körültekintéssel aránylag könnyel el lehet végezni.

Tapasztalatom szerint már az első két lépés is nagymértékben megkönnyíti a kód olvashatóságát, javítja a kód minőségét.

4 komment

Címkék: refactoring

A bejegyzés trackback címe:

https://develop.blog.hu/api/trackback/id/tr982174772

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

deejayy · http://deejayy.hu/ 2011.02.02. 08:16:03

Szerencsére én általában így dolgozom, viszont találkoztam már olyan esettel, amikor a kiemeléshez olyan bonyolult paraméterátadásokra lenne szükség, hogy nem nagyon éri meg.

Szóval mérlegelni kell, de általában használ.

develop 2011.02.05. 15:26:50

@deejayy:

Robert C. Martin Tiszta kód című könyve azt írja, hogy legjobb, ha nincs szükség paraméter átadására. Az 1, 2 - esetleg 3 - paraméter átadása még megengedett, de ha több paraméterre van szükség, akkor ott nyomós oknak kell lenni.

Azt gondolom, hogy ha a kód nagy része betartja ezt a szabályt (max 3 paraméter), akkor annyira nincs nagy baj a hívásokkal.

Ha egy hívás során sok (4, 5, ...) paraméter átadására van szükség, akkor ott már a kód többi része sincs rendben.

deejayy · http://deejayy.hu/ 2011.02.21. 11:03:20

@develop: paraméterként tömböt átadni, amiben további paraméterek vannak, mennyire csít? ;]

Egyébként én se nagyon használok 3-nál több paramétert, de vannak olyan esetek, amikor egy 20 soros kódot fel tudnék használni máshol is, viszont akkor 5 helyen kellene átírnom (5 paraméter).

develop 2011.02.23. 23:16:47

@deejayy: A paraméterek számának csökkentése miatt nem a legjobb megoldás, ha egy tömbbe gyömöszöli az ember az értékeket. :)

Az első kommented alapján született meg ez a post:

develop.blog.hu/2011/02/05/parameteratadas_egyszerusitese_a_parameterek_szamanak_csokkentesevel

Ami az 5 (vagy több) paraméteres hívásokat illeti, ha találkozol ilyennel, küldd el (szabo.public@freemail.hu), szívesen megnézem. Ha publikus, egy cikkben is megírhatjuk.
süti beállítások módosítása