Hirdetés
Ú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
- Microsoft Rewards
- Óra topik
- TCL LCD és LED TV-k
- Bittorrent topik
- Régi CPU újrakiadásával ünnepelné a Socket AM4 tizedik évfordulóját az AMD
- Xiaomi 15T Pro - a téma nincs lezárva
- 8000 nit, maradhat? A szaúdiaknál kezd a Honor 600 Pro
- Autós topik
- iPhone topik
- ThinkPad (NEM IdeaPad)
- További aktív témák...
- AMD Ryzen 5 1600X AM4
- Eladó Apple iPad (2020) 2. generáció Cellular + WiFi 512 GB
- iPhone 16 128GB gyári független hibátlan 2028.10.20. Apple jótállás
- iPhone 17 256GB gyári független hibátlan 2029.02.13. Apple jótállás
- Ryzen 7 7800X3D +ASRock X870 PRO RS WIFI +32GB 6000MHz DDR5 kit! GAR/SZÁMLA (a Te nevedre kiállítva)
- BESZÁMÍTÁS! ASUS B450M R7 5700 32GB DDR4 512GB SSD RTX 3060 12GB Rampage SHIVA Cooler Master 650W
- Apple iPhone SE 64GB Space Gray Megkímélt állapot 82% akkumulátor
- GYÖNYÖRŰ iPhone 15 Pro 128GB Blue Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS4680
- 35" ASUS ROG Swift PG35VQ curved GAMER monitor
- ASUS ROG Flow Z13 2in1 i9 / RTX 3050Ti / 120Hz GAMER TABLET!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


