DRY-elv: Don’t Repeat Yourself elv a gyakorlatban (a JAVA programozás alapjai)

Akkor hát előfizettem a StudiCore Pro csomagra, s folytatódhat a JAVA programozás alapjai. Augusztus 20. miatt most csak röviden tudtam belevetni magam a képzésbe, de rögtön belefutottam abba, amiben egy gyakorlatorientált oktatás eltér a főiskolai oktatástól.

Volt egy feladat, amiben be kellett kérni egy ember korát, s mindaddig ismételni, míg valós kort nem adott meg a felhasználó. Ha a kor nem megfelelő, akkor egy figyelmeztetést is kiíratunk. Én is így oldottam meg a feladatot (részlet):

int age;
do {
   System.out.println(”Kérem a következő ember korát!”);
   age = sc.nextInt();
   if (age < 0) {
      System.out.println(”Hibás kor, kérlek add meg újra!”);
   }
} while (age < 0);

Ami szerintem jó megoldás is lett volna, de a StudiCore ezt a megoldást mutatja:

int age;
boolean error;
do {
   System.out.println(”Kérem a következő ember korát!”);
   age = sc.nextInt();
   error = (age < 0) ;
   if (error) {
      System.out.println(”Hibás kor, kérlek add meg újra!”);
   }
} while (error);

Az általuk bemutatott megoldás a clean code DRY-elvét, a Don’t Repeat Yourselfet használja fel. Ennek lényege, hogy ne ismételjük önmagunkat, s kerüljük azt, ahogy én oldottam meg a feladatot. Én az if feltételeként és a ciklusból való kilépésnél is ezt használtam fel: age < 0.

Ehelyett a StudiCore egy logikai változót használt fel, amelynek értéke igaz, ha az age kisebb nullánál, ellenkező esetben false. A DRY szerint így, ha változtatnom kell a feltételen, nem kell a kódban előkeresni a most még csak kétszer, később ki tudja hányszor előforduló age < 0 kifejezést, hanem elég egyetlen helyen átírni. Ezzel nem történhet meg, hogy a kódban a 0 értékét valahol elfejeltem átírni, s ettől nem működik megfelelően a programom.

Pofonegyszerű, mégsem említette ezt az elvet senki sem a főiskolán. Pedig az ilyen gyakorlati dolgokkal kezdődnek a JAVA programozás alapjai. A továbbiakban viszont én is fogom használni a DRY-elvet!