[Javalist] adat betöltés

Peter Verhas peter at verhas.com
2014. Okt. 19., V, 19:51:18 CEST


Á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.

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.

   if( record.length >= 3 ){
> e.setNev((String) rekord[0]);
> e.setNem((String) rekord[1]);
> e.setSzulev((int) rekord[2]);
}

15 helyett 5 sor.

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.


--
Dipl. Ing. Peter Verhas
peter at verhas.com <mailto:peter at verhas.com>
+41791542095
skype: verhas


> On 2014. okt. 19., at 11:25, Zsombor <gzsombor at gmail.com> wrote:
> 
> 
> for (int i = 0; i < adatok.length; i++) {
>             e = new Ember();
>             Object[] rekord = adatok[i];
>             for (int j = 0; j < rekord.length; j++) {
>                 if (rekord[j] != null) {
>                     switch (j){
>                         case 0:
>                             e.setNev((String) rekord[j]);
>                             break;
>                         case 1:
>                             e.setNem((String) rekord[j]);
>                             break;
>                         case 2:
>                             e.setSzulev((int) rekord[j]);
>                             break;
>                     }
>                 }
>             }
>             emberek.add(e);
>         }
> 
> Józsi
> 
> 
> Komolyan, for ciklusban egy switch az index változóra? Bocsi, de ez nálam a dupla facepalm-os anti pattern kategória :)

--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20141019/832bbdd0/attachment.html>


További információk a(z) Javalist levelezőlistáról