( saxus | 2022. 12. 11., v – 12:00 )

Viszonylag kevés, az is többnyire PHP-vel. Pont azért, mert ami smelly volt, azt nem használtam és alapvetően törekszem a warning free kódra. Nyilván van, amikor én is tudatosan ignorálok warningokat, bár arra jobb nyelveken van mód, hogy explicit kifejezd, hogy itt te most figyelmen kívül akarsz hagyni.

Amire emlékszem az 5.0-5.1-5.2 környékén némi dinamikus hívás a variable call környékén, ami egyik verzióban jó volt, másikban syntax error, harmadikban félig bugos, stb. Reflection API valószínűleg tisztább-szárazabb élmény lett volna összességében, főleg, hogy iszonyú smelly dolgokat volt képes csinálni. (Pl. static member methodba belehívsz akkor megkapja a hívó osztályt a $this-ben, csak hát egy static memberben mit keres egyáltalán $this...)

Viszont a tapasztalat meg úgy általában az, hogy jellemzően akik programnyelveket fejlesztenek, azok átgondolják, hogy mit csinálnak és nem szoktak eltörni dolgokat csak úgy. Nyilván van máshol is, csak ott általában az van, hogy egy új feature miatt lesz valami többértelmű és egyértelműsíteni kell a dolgokat. (pl. C#-ban voltak/lesznek most ilyesmi törések). Ezzel szemben a PHP fejlesztési metodikája meg az, hogy használjanak héber tokenneveket, mert kb. a csapat szerint vicces, szakmai érv a döntés mögött meg nuku.

Egyébként az általad említett dolog, hogy implicit konstanst használtál a hashmapek kulcsának (már eleve az, hogy arraynak hívják, ami egyszerre viselkedik tömbként, hashmapként és objectként, brrr..). Ez még egy picit is haladóbb juniornak is smellynek kellett volna lennie:

  • Warningol rá az alap beállítások alapján, önmagában figyelemfelkeltő.
  • PHP-ben a hibakezelésre rá lehet ültetni saját kódot, így akár esetenként komoly performancia veszteség is lehet belőle
  • Eleve smelly, hogy nem egzaktul definiált a konstansom. rendben van, hogy leírom, hogy $arr[cica], de mi van, ha a cica konstans közben definiált "kutya"-ként?
  • Egyáltalán miért akar bárki is nem definiált konstansokat használni?
  • medior szintű kérdés: egyáltalán biztos, hogy nekem ott egy hashmapra van szükségem és nem pedig egy jobban definiált adatstruktúrára, egyértelműen kifejtve az adatmodellem? Tesztelhető lesz-e egyáltalán a megoldásom? Nem fog eltörni egy változtatásnál? Stb.

Szóval nem, a implicit konverziós konstans, mint kulcs egy hashmaphez 15+ évvel ezelőtt sem volt jó ötlet, hiába engedte a nyelv. És ezek nagyja nekem mind olyan "előnynek" bizonyult, ami hosszú távon szinte mindig plusz, extra szívást hozott be, hibát fedett el, stb. Egyszerűen nem éri meg ezeket lecsapni, mert vissza fog ütni előbb-utóbb.