<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>firith.hu</title>
	<atom:link href="http://firith.hu/feed/" rel="self" type="application/rss+xml" />
	<link>http://firith.hu</link>
	<description></description>
	<lastBuildDate>Tue, 31 Aug 2010 09:50:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>F.I.R.S.T. szabály</title>
		<link>http://firith.hu/2010/08/first-szabaly/</link>
		<comments>http://firith.hu/2010/08/first-szabaly/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 09:48:19 +0000</pubDate>
		<dc:creator>firith</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[unit test]]></category>

		<guid isPermaLink="false">http://firith.hu/?p=35</guid>
		<description><![CDATA[A jó tesztek az alábbi öt jellemzővel rendelkeznek: Fast: A teszteknek gyorsan kell lefutniuk, mert lassú teszteket nem szívesen futtatunk gyakran, így  nem találjuk meg elég hamar a hibákat ahhoz, hogy könnyen javíthassuk őket. Emiatt nem merjük a kódot refoctorizálni, tisztítani, ami a kód minőségének romlásához vezet. Independent: A tesztek nem támaszkodhatnak egymásra, nem élhetünk [...]]]></description>
			<content:encoded><![CDATA[<p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://firith.hu/2010/08/first-szabaly/&amp;layout=standard&amp;show_faces=true&amp;width=260&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:260px; height:26px'></iframe></p><p>A jó tesztek az alábbi öt jellemzővel rendelkeznek:</p>
<p><strong>Fast:</strong> A teszteknek gyorsan kell lefutniuk, mert lassú teszteket nem szívesen futtatunk gyakran, így  nem találjuk meg elég hamar a hibákat ahhoz, hogy könnyen javíthassuk őket. Emiatt nem merjük a kódot refoctorizálni, tisztítani, ami a kód minőségének romlásához vezet.</p>
<p><strong>Independent:</strong> A tesztek nem támaszkodhatnak egymásra, nem élhetünk feltételezésekkel a következő teszt számára. Szabadon kiválasztott vizsgálatok önállóan is futtathatóaknak kell lenniük, bármilyen sorrendben. Az egymásra támaszkodó tesztek esetén, ha az első kudarcot vall, magával rántja a többit is, ami megnehezíti a hiba okának megkeresését és elrejtheti a sorban következő hibákat.</p>
<p><strong>Repeatable:</strong> A teszteknek bármely környezetben megismételhetőnek kell lennie: képesnek kell lenniük a futásra mind az éles környezetben, mind a fejlesztői gépünkön, ahogy a laptopunkon is, miközben hálózat és internet nélkül utazunk.</p>
<p><strong>Self-validation:</strong> A teszteknek logikai eredményt kell adniuk: siker vagy kudarc. Nem szabad, hogy naplófájlt kelljen végigolvasnunk, szöveges fájlokat kelljen összehasonlítanunk ahhoz, hogy megmondhassuk a teszt sikerrel járt-e. Az ilyen tesztek nem egyértelműek így a kudarc viszonylagossá válik és hosszas értékelést vonhat maga után.</p>
<p><strong>Timely:</strong> A teszteket a megfelelő időben kell megírni, közvetlenül az előtt az üzemi kód előtt amelynek teljesíteni kell őket. Ha a teszteket az üzemi kód elkészítése után írjuk, akkor előfordulhat hogy a kódot nehezen lehet majd ellenőrizni és esetleg nem is úgy terveztük meg a kódot, hogy tesztelhető legyen.</p>
<p><em>forrás: Robert C. Martin: Clean Code, A Handbook of Agile Software Craftmanship</em></p>
<fb:share-button href="http://firith.hu/2010/08/first-szabaly/" type="button_count"></fb:share-button>]]></content:encoded>
			<wfw:commentRss>http://firith.hu/2010/08/first-szabaly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Unit tesztek</title>
		<link>http://firith.hu/2010/08/php-unit-tesztek/</link>
		<comments>http://firith.hu/2010/08/php-unit-tesztek/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 10:53:04 +0000</pubDate>
		<dc:creator>firith</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[unit test]]></category>

		<guid isPermaLink="false">http://firith.hu/?p=17</guid>
		<description><![CDATA[Programozás közben a legtöbb időt a programhibák felkutatása teszi ki, míg maga a hiba kijavítása időnként nem vesz el egy-két percnél többet. Ráadásul nem tudhatjuk, hogy a javítás hatására nem jelenik meg máshol egy újabb hiba, amit csak sokkal később veszünk észre, így megtalálása nagy fejtörést okozhat. A jó tesztek önmagukat értékelik ki, nem igényelnek [...]]]></description>
			<content:encoded><![CDATA[<p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://firith.hu/2010/08/php-unit-tesztek/&amp;layout=standard&amp;show_faces=true&amp;width=260&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:260px; height:26px'></iframe></p><p>Programozás közben a legtöbb időt a programhibák felkutatása teszi ki, míg maga a hiba kijavítása időnként nem vesz el egy-két percnél többet. Ráadásul nem tudhatjuk, hogy a javítás hatására nem jelenik meg máshol egy újabb hiba, amit csak sokkal később veszünk észre, így megtalálása nagy fejtörést okozhat.</p>
<p>A jó tesztek önmagukat értékelik ki, nem igényelnek emberi beavatkozást. Ez fontos, mert így gyorsabb és kényelmesebb használni ráadásul egy hosszabb tesztcsomag felügyelet nélkül is lefuthat, amíg elmegyünk ebédelni, tárgyalásra.</p>
<p>PHP nyelvhez három tesztelő keretrendszert is használhatunk:</p>
<ul>
<li><a href="http://www.phpunit.de/">PHPUnit:</a> talán a legfejlettebb eszköz a háromból, képes tesztgenerálásra, megépítve a teszt vázát, hogy nekünk már csak a tényleges vizsgálatot kelljen megírnunk. NetBeans IDE által támogatott.</li>
<li><a href="http://www.simpletest.org/">SimpleTest:</a> egyszerű és könnyen használható, a JUnit java tesztelő rendszer ihlette. Tartalmaz unit és web teszteket is. Eclipse IDE által támogatott</li>
<li><a href="http://www.symfony-project.org/gentle-introduction/1_4/en/15-Unit-and-Functional-Testing">Lime:</a> a symfony framwork beépített unit és functional (web) tesztkészlete</li>
</ul>
<p>Teszteket írni még az üzleti kód előtt érdemes, majd folyamatosan bővíteni kell a program fejlesztése közben. Az extrém programozás egyik legfontosabb érve a gyakori tesztelés. Mivel céljuk a leggyorsabb szoftverfejleszés automatikus tesztekkel segítik munkájukat.</p>
<p>Másik fontos alkalmazási terület a refactoring. Meg kell győződnünk arról, hogy az újratervezés nem rontotta el a már működő kódunkat. Az apró módosítások közben sokszor futtatjuk a teszteket, ennek vizsgálatára.</p>
<p>A következő cikkemben egy példát mutatok be a teszt vezérelt fejlesztésről.</p>
<fb:share-button href="http://firith.hu/2010/08/php-unit-tesztek/" type="button_count"></fb:share-button>]]></content:encoded>
			<wfw:commentRss>http://firith.hu/2010/08/php-unit-tesztek/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PHP refactoring eszközök hiánya</title>
		<link>http://firith.hu/2010/08/php-refactoring-eszkozok-hianya/</link>
		<comments>http://firith.hu/2010/08/php-refactoring-eszkozok-hianya/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 11:37:02 +0000</pubDate>
		<dc:creator>firith</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[refactoring]]></category>

		<guid isPermaLink="false">http://firith.hu/?p=7</guid>
		<description><![CDATA[Tanácsadói munkám során nem győzöm hangsúlyozni a tiszta és jól olvasható kód előnyeit. Fejlesztők között elterjedt mondás, hogy egy kódot többször olvasunk, mint ahányszor írunk. Ez azért is igaz, mert a kód írása közben vissza-visszaolvassuk az előző sorokat, a meghívott metódus törzsét, az osztályt amit használni akarunk. A tiszta kód másik előnye, hogy könnyen módosítható, [...]]]></description>
			<content:encoded><![CDATA[<p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://firith.hu/2010/08/php-refactoring-eszkozok-hianya/&amp;layout=standard&amp;show_faces=true&amp;width=260&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:260px; height:26px'></iframe></p><p>Tanácsadói munkám során nem győzöm hangsúlyozni a tiszta és jól olvasható kód előnyeit. Fejlesztők között elterjedt mondás, hogy egy kódot többször olvasunk, mint ahányszor írunk. Ez azért is igaz, mert a kód írása közben vissza-visszaolvassuk az előző sorokat, a meghívott metódus törzsét, az osztályt amit használni akarunk.</p>
<p>A tiszta kód másik előnye, hogy könnyen módosítható, új szolgáltatás hozzáadása nem okoz problémát. Soha ne felejtsük el, hogy mások is dolgoznak a kódunkon, könnyítsük meg a munkáját, hogy ne kelljen elvesznie a részletekbe, ha egy átfogó képet akar kapni a szoftver működéséről. Ha úgy gondoljuk, ezzel a kóddal csak mi dolgozunk, akkor is van egy másik személy akinek segítenünk kell: későbbi önmagunk, amikor pár hónap, év múlva módosítanunk kell a programot.</p>
<p>Szerencsére erről a témáról rengeteg jó könyv jelent meg, még magyarul is:</p>
<ul>
<li><a href="http://www.libri.hu/konyv/implementacios-mintak.html">Implementációs minták (Kent Beck)</a></li>
<li><a href="http://www.libri.hu/konyv/refactoring.html">Refactoring: Kódjavítás újratervezéssel (Martin Flower)</a></li>
<li><a href="http://www.libri.hu/konyv/tiszta-kod.html">Tiszta kód: Az agilis szoftverfejlesztés kézikönyve (Robert C. Martin)</a></li>
</ul>
<p>Ezek &#8211; ha szabad így fogalmaznom &#8211; kötelező olvasmányok minden magára adó programozó számára, akiknek az előállított kód minősége személyes kérdés, amiben kifejezi tapasztalatát, tudását és stílusát.</p>
<p>Sajnos PHP nyelvhez nem készültek jó újratervező eszközök, mint más nem script nyelvekhez. A fejlesztőkörnyezetek nagyon kevés dologban segítenek, emiatt mindent kézzel kell csinálnunk, nem támogatnak automatikus eszközökkel. Mivel a PHP nem típusos nyelv, és Objektumorientált módszertant sem kielégítően követi, nehéz a kód automatikus felderítése.</p>
<fb:share-button href="http://firith.hu/2010/08/php-refactoring-eszkozok-hianya/" type="button_count"></fb:share-button>]]></content:encoded>
			<wfw:commentRss>http://firith.hu/2010/08/php-refactoring-eszkozok-hianya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

