elnevezési osztályok

  • PHP
  • szoftver
  • PFSZ
  • alkalmazás architektúra

Jó napot kívánok. Tervezésekor a rendszer szembe azzal a kérdéssel, elnevezési osztályok bonyolult esetekben. A probléma az, hogy az osztály hierarchia egyes elem nem mindig az egyetlen „szülő” (nemcsak az öröklési ( „virág növényekből származik”), hanem általánosabban, a „virág levelek”). Valójában az a kérdés, - amit a szabály, hogy hívja ezeket az elemeket?








Néhány példa az osztályok, akiknek a neve a probléma (bocs a buta példa):

- Lily, örökölt egy virág (B, örökli A)

- szirom, amely csak a liliom (C, amely csak akkor kell használni a B)

- listája, amely lehet és a liliom, és általában virág (D, amelyet használnak a B, és A)

- porzószál, amely lehet és a liliom, és a mák, de adott esetben ez a virág minden (E, amelyet használnak, és F (ami viszont örökölt A), és a B, de nem használják )

És egy extrém eset: van egy lakás, amely néhány szép szemét. Lily, elvileg lehet használni, mint egy szép szemét. Hogyan kell elnevezni az adapter „Gyönyörű Lily a szemét”, így nem eltévedni között minden osztály (mert elméletileg tartozik a „lapos” csoport, hanem attól függ, hogy a „virágok” a csoport)? Elvont - van G, amely felhasználja H; hogyan kell hívni azt, aki polzvolyaet használni B, mint a H?


Hitch miatt keletkeztek szigorúan hierarchikus fájlrendszer és szokások hívja osztályok egy-la mappa (azaz Fuston_Http_Response_Cookie_Marked). Ez a szokás csak nem a válasz arra a kérdésre, „mi legyen a neve a felület, amely lehetővé teszi, hogy Testing_Database_Cache_Cookies használni az órákon kívül Fuston_Http_Response_Cookie, mint a saját Testing_Database_Cache_Cookies_Cookie?».

Az öröklődés csak a legfontosabb, hogy sem egy egyszerű, például tükrözi absztrakt válasz válasz StaticResponse - válasz, amelynek teste a definíció szerint egy húr, és DynamicResponse - válasz, a test, amely akkor keletkezik idején küldését a választ. Minden mást nem öröklődik, de csak akkor kell használni (például Response osztály használ cookie objektum osztály megjelenítésére cookie).

Érdekli az elnevezési, mert nem okoz problémát. Tudok egy konkrét példát, ott EduPortal_Addon_Testing teszt modult egy csomó órák, és egy értékelés modul EduPortal_Application_Rating is, furcsa módon, egy csomó osztály belsejében. Szeretném felvenni a használata a funkciója, mint az adatokat a vizsgálati rangsorban. Van egy absztrakt a rangsorban a címzett EduPortal_Application_Rating_Getter_Abstract adatokat és a címzett közvetlenül EduPortal_Application_Rating_Getter_Wui ügyfél. Általában nem így van, hozzon létre egy címzettet a teszt modult, amely táplálja a célunk EduPortal_Addon_Testing csomag (akár a fő EduPortal_Addon_Testing_Core legtöbb, ami lesz egy API adatokat lekérdezni, vagy egy speciális külön osztályt-API ugyanazt a funkciót). Mit kell ezt nevezzük címzett (PHP nyelven)? EduPortal_Application_Rating_Getter_EduPortal_Addon_Testing? EduPortal_Application_Rating_Getter_EduPortalAddonTesting? EduPortal_Application_Rating_Getter_Testing? Az utóbbi úgy tűnik tökéletes, de mi van, ha MathSite_Testing? Tesztelés attól függ, milyen az utolsó cél?







EduPortal_Application_Rating_Getter_Abstract - furcsa nevet. Miért hozzáfűzni Abstract végén, ha az osztály már az aláírás az absztrakció? Nem tudom, hogyan PHP, de hívnám EduPortal_Application_Rating_BaseGetter.

A címzett a tesztelése -, hogy nem tartozik a leginkább logikai egység tesztelése? Ha igen -, akkor miért nem tette oda, és nem azt mondják: EduPortal_Addon_Testing_RatingGetter?

A furcsa neve az úgynevezett öntöltő osztályok és osztályok vágy a cucc egy „mező” ugyanabban a könyvtárban. Az Ön esetében, és az előírásoknak Zend absztrakt osztály jobb lenne hívni, vagy _Getter vagy _Getter_Abstract, mert Getter BaseGetter.php fájl és mappa egy gyors pillantást rossz megegyeznek egymással.

Ez így van:
1. Az osztály neve nem fog részt a sorban - kritikus a nyomtatott forráskódot, és az olvashatóság öl
2. Várhatóan a kérdést: „SHOZANAH?” Erre hosszú sora semmit nem mond hol ér véget a leírása egy bizonyos osztály (getter alapján), és indítsa leíró paraméterek (ahol tyrit adatok)
3. Startup osztályok sánta - a szokásos elve „hangsúlyozva a perjel” nem alkalmazható, mivel az abszurditás ebben az esetben, és ügyes, hogy nem akar

Nos, az én verzió, csak azért, mert a 2. bekezdés ugyanazon a helyen két aláhúzás - ahol a végek Getter'a teljes nevét és a hozzá tartozó osztály kezdődik.
És általában, még mindig úgy gondolom, hogy egy normális név lenne:
EduPortal_Application_Rating_AddonTestingGetter, és még jobb juzat névterek.
Ha technikai probléma, és ezért nem működik - akkor meg kell szenvedni tisztázatlan hosszú sorok ... nos, egy ok arra, hogy felszámolja a műszaki kihívásokra;)

1. Semmi esetre sem az osztály nevét Roditel_dite_ stb
2. A névterek van megszabadulni a csúnya nevek
3. Nézd meg a névadási osztályok Zenden (ünnep), ott a nevét logikai önmagáért beszél
Ha megtartja a három pontot, soha nem fog eltévedni =), a nevek lesznek szép és szerkezeti logikája mindig tiszta.

1. Ez volt az oka ennek a problémának (^_^) Van válasz, ott DynamicResponse, örökölt a válasz, és ott ResponseCookie, mellyel a válasz. Response_Dynamic és Response_Cookie - IMHO, buta, mert megkülönböztetett leszármazottja az osztály helper nem lehet kód nélkül, de a többi határoló, kivéve az aláhúzás, nem (-_-).
2. Nem névterek, bár kívánatos lenne (-_-) (cm. Előző válasz).
3. Néztem őt felül jobban.

A Zend nem adaptereket az összetevők között a különböző rendszerek, mint például a modul keret, egy másik modul a webhely és saját tervezésű készülék, és én még mindig szükség van (amíg nem jött egy jobb megoldás) - Lásd az első válasz adtam egy konkrét példát ..

/ könyvtár
/ Responce /
/AbstractResponse.php
/Dinamic.php
/Cookie.php
Osztályok kerül hívott:
Responce_Dinamyc és Responce_Cookie
Azt tette volna.

És mi a helyzet a virágok és szirmok igazad volt
/ Library /
/ Virág
/Petal.php
/Flower.php
És osztályok, illetve:
Virág és Flower_Petal (logikai itt nem a szülő - az örökös, és viszonya a tárgy podobektu)

Itt van a probléma: Response_Dynamic örökölt Response és Response_Cookie nem, de egy futó pillantást, és anélkül, hogy nem érti a kódot. Me azt kéri egy hasonló kérdést.




Kapcsolódó cikkek