<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2014-10-19 19:51 GMT+02:00 Peter Verhas <span dir="ltr">&lt;<a href="mailto:peter@verhas.com" target="_blank">peter@verhas.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Általában szaglik, ha a ciklus belsejében valamilyen a ciklusváltozóra vonatkozó feltétel van. Gyakran látok olyan kódot amikor a ciklus első , vagy utolsó lefutása esetén tesz valamit másképp a kód. Ilyen esetben felmerül, hogy ez a speciális eset miért van a ciklusban. Egyszerűbb esetben a ciklus inicializálás kell, hogy a ciklus elé kerüljön (ez a jellemzőbb), néha a ciklus után kell még valamit csinálni. Néha összetettebb refaktorálást kíván a dolog, funkciókat ki kell emelni külön metódusba, amíg annyira leegyszerűsödik a ciklus, hogy már látszik, hogy tényleg mi az amit ki lehet és kell emelni a ciklusból.<div><br></div><div>Ezek általában jó ujjgyakorlatok. A konkrét példával kapcsolatban is csak az jut eszembe, hogy minden kód jó valamire, ha másra nem, akkor elrettentő példának.</div><div><br></div><div>   if( record.length &gt;= 3 ){</div><div><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">e.setNev((String) rekord[0]);</blockquote></div></div></div></blockquote><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">e.setNem((String) rekord[1]);</blockquote></div></div></div></blockquote><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">e.setSzulev((int) rekord[2]);</blockquote></div></div></div></blockquote><div>}</div><div><br></div>15 helyett 5 sor.</div><div><br></div><div>Van viszont egy olyan pattern, ami tipikusan nagyon hasonlít a lenti példához. Ez pedig az, amikor a leprogramozott modell véges automata. Ilyenkor az aktuális állapotot tartalmazó változó van a switch fejében, és az egyes esetek az egyes állapotok. Amikor az egyik állapothoz tartozó kód lefut, és az állapot megváltozik a `break` után a ciklusban -- ami általában végtelen ciklus -- a következő állapothoz tartozó kód indul el.</div><div><br></div><br></div></blockquote></div><br></div><div class="gmail_extra">Igen, ekkor általában while(true) -t szoktak használni :)<br><br></div><div class="gmail_extra">Zs<br></div></div>