HTML

Projektmenedzsment, alkalmazásfejlesztés

Online projektmenedzsment rendszerek, webes alkalmazások fejlesztése, refactoring.

Friss topikok

Linkblog

Elnevezés, típus, érték

2010.09.05. 13:42 develop

Ismét egy olyan problémát veszek elő, ami miatt nehezebb lehet a kód olvasása, az algoritmus megértése.
 
Ez pedig az, ha az elnevezés, a típus és az érték nincs szinkronban egymással.
 
Vagyis ha az elnevezésben van utalás a tárolt/visszaadott érték típusára, akkor az legyen szinkronban a valódi tárolt típussal, értékkel.
 
A $numberOfBook változó esetében például minden bizonnyal szám-értéket tárolunk, és reméljük, hogy a változó típusa is valamilyen numerikus típus. (További példák: $countOf..., $quantity..., ...)
 
Ugyanez igaz a metódusokra is: getNumberOf..., getCountOf..., getQuantity..., stb.
 
Mindegyik esetben szám értéket várunk.
 

A probléma

Ha az elnevezés-típus-érték közül valamelyik nincs szinkronban a másik kettővel, nehezebb az algoritmus megértése, illetve a további felhasználás is problémás lehet.
 
Típusos nyelvek esetében ugyan könnyebb a dolgunk, de ott is gondot okozhat a rossz elnevezés használata.
 
Típustalan nyelveknél - mint pl. a PHP is -, figyelnünk kell erre a problémára.
 
Ahogy egy korábbi bejegyzésben is említettem (lásd: Elnevezési ajánlások: Magyar jelölés), a típus-jelölésre használatos magyar módszer nálunk nem vált be, nem alkalmazzuk. (Emiatt más, egyszerű ajánlásokat érdemes tenni.)
 
A változó minden esetben az elnevezésnek megfelelő értéket tároljon.
 
  • A fenti példában szereplő: $numberOf..., $quantity, stb. esetében egyértelműen számot. 
  • A $name, $nameLast, stb. esete is egyértelmű: string.
  • Tömb estében a "List" utótagot szoktam javasolni, pl.: $personList (ha Person objektumok listáját tároljuk), $itemList (ha termékek listájáról  beszélünk).
  • stb.
(Amennyiben az üzleti logika szerint a lista maga magasabban van a hierarchiában, mint az, amit tárol - lásd Elnevezési ajánlások: Elnevezési hierarchia -, akkor a $listItem, $listPerson, stb. elnevezés javasolt.)
 

Példa

Ismét egy könyvtári példát előhozva: tegyük fel, hogy a store::getNumberOfBook( $book ) metódus egy adott könyvből a könyvtár rendelkezésére álló darabszámot kapjuk meg.
 
Az üzleti logikát tekintve (és a józan ész szerint is) numerikus, egész értéket várunk, ami nulla, vagy annál nagyobb érték kell, hogy legyen.
 
Tegyük fel, hogy a könyvek számát meg kívánjuk jeleníteni a felületen.
echo store::getNumberOfBook( $book );
A 0 érték helyett - vagyis, amikor egy könyvből nincs a könyvtárnak példánya -, szerencsés lenne, ha valami beszédesebbet írnánk ki, pl.: "Nincs példányunk belőle.", egyéb esetben pedig pl. "3 db".
 
Erre akár megfelelhetne a getNumberOfBook metódus átalakítása is, de egyrészt nem lehetünk benne biztosak, hogy a kód más részeiben ez nem okozhat-e problémát, illetve az új viselkedés miatt a getNumberOfBook elnevezés sem fedi le teljesen, amit a metódus végezne.
 
A legjobb megoldás ismét az, hogy egy új metódus bevezetésével elégítjük ki az új igényt:
class store {
  ...
  function getNumberOfBookView( $book )
  {
    $numberOfBook = store::getNumberOfBook( $book );

    if( 0 < $numberOfBook ) {
      return $numberOfBook." db";
    } else {
      return "Nincs példányunk belőle";
    }
  }

  ...
}
// A felületen pedig
echo store::getNumberOfBookToView( $book );
A névválasztásnál legyen egyértelmű, hogy a metódus milyen értéket ad vissza, ugyanakkor jelezzük, hogy miben tér el az eredeti metódustól. 
 
Emiatt is érdemes a "további" viselkedésre utaló jelzést a metódus-név - eleje helyett -, a végéhez tenni, mivel ez a getNumberOfBook metódusra épül.
 
A fentiek természetesen ismét csak ajánlások, így nem feltétlenül ezek a legjobb módszerek.
 
Akárhogy is, ha csapatban fejlesztünk közös standard alapján dolgozzunk.

Szólj hozzá!

Címkék: elnevezési ajánlások

A bejegyzés trackback címe:

https://develop.blog.hu/api/trackback/id/tr92272917

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