Hirdetés
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- MasterDeeJay: Harc a DDR5 árak ellen
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- hcl: Poco F2 Pro facepalm
- flymi: Segítségkérés! Ausztráliában élő ismerőse van valakinek?
- Elektromos rásegítésű kerékpárok
- urandom0: Száműztem az AI-t az életemből
- Parci: Milyen mosógépet vegyek?
Új hozzászólás Aktív témák
-
Peter Kiss
őstag
válasz
Speeedfire
#9910
üzenetére
Static dolgok használata könnyen gyorsan spagetti kódot eredményez, fogalmad sem lesz, mi zajlik a rendszerben, tesztelhetőségről ne is beszéljünk.
A másik, hogy ha ezt a kérés során folyamatosan használod mondjuk 5 alkalommal, akkor ötször fog ez így lefutni?
Kódírás folyamán mindig érdemes lefektetni pár szabályt, amit betartasz, pl.:
static változóba nem rakok semmit, ami állapotot tárol (singleton is kinyírva)
static csak olyan lehet, ami valamilyen service-szel kapcsolatos (nálam ilyen a Path osztály, ez csak a mappák, fájlok neveit machinálja string-ként, az IsAdmin cuccod ilyesmi, de rossz a megközelítés*)Ezeket igyekszem mindig betartani, de a saját kis reflection kiegészítésem miatt én is tárolok dolgokat static változóban, de azok nem is változnak, amíg az osztály maga nem változik meg. Érdemes úgy tekinteni a static elemekre ilyen szempontból, mintha a PHP nem shared nothing elveket vallana.
---
Static cuccokkal van olyan gond, hogy simán keresztülhúzod az OO elveket. Most egy felhasználóról akarod megmondani, hogy admin avagy nem admin úgy, hogy gyakorlatilag kiszeded az egészet a rendeltetési helyéről, hiszen maga a User meg tudja mondani magáról az-e, ahogyan ez látszik is.
A kereted ad hozzáférést egy user nevű field-hez, az mi? Nem tudod egész véletlenül megmondani a rendszernek, hogy oda egy profibb objektumot toljon be? Mert akkor ennyi lenne: Yii::app()->user->admin; és nincs ez a static borzalom benne a rendszerben.Maga a design is lehet rossz: nem egy bit kell arra, hogy admin-e, hanem hegeszteni kell olyan Role rendszert, amibe ezt szépen bele lehet kódolni.
---
Én is használtam Singleton-t, de utána alig bírtam kiírtani a rendszerből, nagyon rossz ötlet. Nem tudom, mennyire jött át a dolog, de ha most nem, majd rájössz.

Új hozzászólás Aktív témák
- Xiaomi 11 Lite 5G NE 256GB, Kártyafüggetlen, 1 Év Garanciával
- Xiaomi Redmi 13 4G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Xiaomi 11T 128GB, Kártyafüggetlen, 1 Év Garanciával
- Eredeti Lenovo 135W töltők (sárga téglalap)
- Játékra vagy Munkára! Csere-Beszámítás! I7 3930K / Nvida GTX Titan B / 16GB DDR3 / 500GB SSD!
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


