Szomszédot lenyűgöző pixeles fénypanel vezérlő szoftver készítése.
Lehet nem végeztem még elegendő katát. Lehet ez a természetes. Meglepett, hogy a megoldó leírásban szó sincs arról, hogy hozzál létre kiegészítő osztályokat a feladat végrehajtásához, míg az elsődleges osztály esetén erre kitér a szerző. A bemutatott kódban minden ismertetés nélkül megjelenik az ismeretlen osztály ismeretlen metódusára való hivatkozás. Bevallom feltúrtam a netet, biztosan létezik ilyen, csak én nem ismerem. Idővel rájöttem, ennek a létrehozása is a feladat része. Ezután már nem lesz meglepő, ha belefutok ilyenbe. A dolog érdekessége, hogy később ennek a kiegészítő osztálynak a bővítése re-fraktorálása már megjelenik az útmutatóban. Továbbá a másik segéd osztály létrehozására kapunk utasítást.
Néhány sarokpont:
  • A panelt a kódban reprezentáló két dimenziós tömböt TDD nélkül már az osztály kezdeti létrehozásakor definiálnánk. A TDD elveit követve ez csak akkor következik, be amikor először szükség van a panel egy “pixelére”. 
  • Hasonló a helyzet a pixelt reprezentáló Light osztály státuszát (bekapcsoltságát) jelző változó esetén. Akkor hozzuk létre amikor először kell hivatkozni rá.
  • A lambda kifejezések okán ismertem a FunctionalInterface fogalmát, ebben a körben való használatát. Most számomra ismeretlen használatát tanulhattam meg. 
  • A panel meghatározott területeinek “on”, “off” és “toggle” kapcsolására egy-egy formailag azonos metódus szolgál. Melyek dupla ciklus belsejében hívják meg a Light objektum vonatkozó metódusát. Kiemelésre került a dupla ciklus egy olyan metódusba, melynek egyik paraméter Consumer<Light>. Híváskor ebbe a paraméterbe kerül átadásra a végrehajtandó műveletet megvalósító metódus hivatkozás, Light::turnOn. Részletesebben:

public void turnOn(CoordinatePair coordinatePair) {

    eachLight(coordinatePair, Light::turnOn);

}

public void eachLight(CoordinatePair coordinatePair, Consumer<Light> consumer) {
   ...
}

  • Ezt a megoldást igen “szellmesnek” találom. E nélkül a formailag azonos metódusok egységesítése most csak valamilyen elágaztatási megoldás jut eszembe. Azt pedig a Clean Code elvek szerint ellenjavallt.
Ez is olyan gyakorlat amely során aha élményem volt.
Leírása itt található.

A bejegyzés trackback címe:

https://pharsan.blog.hu/api/trackback/id/tr2217997464

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.

Nincsenek hozzászólások.
süti beállítások módosítása