anotace – neanotace, podpora vsech vychytavek ale bez uziti anotaci v komentarich
- wdolek
- Člen | 331
vim, ze budu asi za bezverce a kacire… vim, ze david ma anotace velice rad, a ma je jeste radsi, kdyz vidi, ze v doctrine(2) se uspesne prosazuji.
i ja anotace pouzivam, ale i tak citim, ze ovlivnovat chovani aplikace obsahem komentare asi neni uplne koser.
je mi jasne, ze by to byla nejaka prace navic (asi – pokud uz tam neco takoveho neni), ale neslo by v Nette udelat i nejake jednoduche „neanotovani“? (vlastne nemam vubec predstavu, jak by to mohlo vypadat – nejaky registr s tim co se ma kde nastavit ci pouzit?)
(a ano, jsem trosku ovlivnen rozhovorem s derickem, ktery se vyjadril, ze anotace nema zrovna v oblibe (snad jsem to tedy pochopil spravne, nerad bych tu nejak dezinformoval :D) – … a ja o tom zacal znovu rozjimat…)
- Patrik Votoček
- Člen | 2221
Aktuálně se anotace používají pouze pro @persistent a lze se tomu vyhnout přetížením metody Nette\Application\PresenterComponent::getPersistentParams.
Nicméně i já jsem byl člověk skeptický k anotacím a taky se mě to nelíbilo a říkal jsem si že to není moc dobré. Pak jsem je ale začal naplno využívat.
- westrem
- Člen | 398
Chapem, ze vecsina ludi ma voci anotaciam vyhrady – ved su to preboha IBA komentare!
Ale skusme sa zamysliet:
- Komentar je sucast syntaxe a jazyka
- Rozsiruje jeho vyjadrovaciu schopnost
- Ulahcuje programatorovi orientaciu v kode tym, ze na vhodnych miestach popisuje co sa deje
- Je SUCASTOU kodu
- V inych jazykoch (napr: Java) su anotacia brane uplne prirodzene a tiez ovplyvnuju chovanie aplikacie (nie som Javysta, nemam ten jazyk rad kvoli jeho ukecanosti, ale niektore veci ma zariesene a pomerne standardizovanym sposobom)
- Jedina nevyhoda, ktora ma napada je, ze sa v komentaroch nepraktizuje syntax analyza takze ak clovek spravi preklep moze mu chvilku trvat nez objavi chybu (toto ale ide zariesit a dokonca tu na fore bola debata aby to Nette parser parsoval striktnym sposobom)
Co vam teda na pouzivani Anotacii vadi? To, ze je to KOMENTAR a napr eAccelerator apod mozu odstranovat komentare? Ja by som sa skorej bal rozsireni, ktore mi ZASAHUJU a modifikuju mnou uploadovany zdrojovy kod ako toho, ze mam nieco v komentaroch, ak tam tie komentare su, tak asi z nejakeho dovodu a nie na to aby sa mazali.
V neposlednom rade poskytuju Anotacie uzasnu vyjadrovaciu schopnost a nadstavbu nad jazykom priamo v miestach kde by to clovek cakal, bez potreby znovuobjavovat kolo a vymyslat fallbacky ako to zariesit bez anotacii.
Chapem, ze pre vela ludi to je myslienkovy blok pouzivat anotacie (aj pre mna urcitu dobu bol) ale som vyrazne za to aby sa postupne pretlacali do Nette a pouzivali. A vobec – aby sa pouzivali. Mozno autori PHP zvazia ich postavenie a v dalsich verziach PHP by sa mohli anotacie stat urcitou sucastou jazyka.
- Honza Kuchař
- Člen | 1662
Já jsem jednoznačně pro anotace i před všechny zmíněné nevýhody. Takotvá antotace kód většinou zpřehlední a uštří ještě k tomu hromadu práce. A pokud bude někdy sktriktní parsování, tak pak to bude úplně nejlepší…
PS: eAccelerator už problémem docela dlouho není.
- Cifro
- Člen | 245
Ani ja nemam žiadný filozofický alebo iný problém sa anotáciami.
Jediné, čo mi prakticky chýba je zápis poľa v anotácii… viď (https://forum.nette.org/…ace-a-syntax?…). No ale možno v Nette 2.0 je to už hotové.
- wdolek
- Člen | 331
westrem: o tom, ze je komentar soucasti kodu bych tedy polemizoval. komentar je od toho, aby pomohl programatorovi pochopit o co v kodu je. to by se dalo rict treba i o odsazovani kodu nebo o vynechavani prazdnych radku pro prehlednost kodu, ze „je to jeho soucast“ (plati to v Pythonu :D).
uz jenom proto, ze do komentare clovek muze napsat co chce, jak chce, bez jakychkoliv pravidel, mi prijde zvlastni se komentari ridit a ovlivnovat tak beh aplikace.
navic, kdyz o tom premyslim o par milisekund dele – pri zpracovani
skriptu dochazi samozrejme k vyhozeni nepodstatnych casti pro interpretaci
(php -w -f foo.php
)… a je zcela jasne, ze interpretr pak uz se
zadnymi anotacemi nepracuje. to ze to funguje je dano tim, ze si to Nette
v prvnim kole prechrousta a nekam si ulozi informace o danem
„rozsireni“… repsektive ze se Nette kouka zpatky do zdrojaku a zjistuje,
jestli tam anotace je, a jaka.
vrtak-cz: ano, to znam, ale pribude tu par dalsich „vychytanych“ anotaci, v dokumentaci o alternativnim „legalnim“ zapisu nebude ani zminka, novacci se to zacnou ucit jako samozrejmost. neprijde mi to jako koser pristup ke kodu.
- paranoiq
- Člen | 392
pro každou věc by měl být jen jeden (ten správný!) způsob jak ji dělat. jakékoliv obezličky navíc jsou matoucí, a to především pro začátečníky
anotace jsou nejlepší řešení především proto, že je možné je psát přímo ke kódu, ke kterému se vztahují. to s žádným alternativním zápisem není možné – ať už by to byla konfigurace uložená kdesi nebo nějaká metoda vracející metainformace – v obou případech jde o řešení o složitější na pochopení a hůře udržovatelné
otázky okolo „legálnosti“ anotací jsou na prd. podstatné je, jestli anotace fungují spolehlivě (ano), pomohou čitelnosti kódu a sníží WTF efekt (ano). to že jsou anotace v komentáři a ne nativní (jako třeba v Javě) je nepodstatný technický detail. třeba časem vývojáři PHP dostihnou vývoj PHP a nativní anotace nám vyrobí (ale možná by bylo lepší, kdyby to nedělali :)
- wdolek
- Člen | 331
westrem, paranoiq: o jakych nativnich anotaci v Jave mluvite? v Jave jsem chvilku delal a nic takoveho jsem nepotkal… (pravda, uz je to par let)
chapu, ze anotace v Nette (a Doctrine) rapidne zjednodusuji psani kodu. ale za cenu pouziti neceho, co neni soucasti jazyka, a co si muze kazdy nadefinovat jak se mu zamane. do interpretru se uz zadne komentare vubec nedostavaji… co kdyz se casem nejak zmeni chovani prekladace? navic se clovek nauci Nette anotace, a kdyz se anotace budou pouzivat jinde, zapocne chaos (zadna pravidla!)
a ano, bylo by fain mit jednu spravnou metodu psani kodu, zrovna u anotaci bych ale uvital, kdyby zde byl i dalsi alternativni (jednoduchy) zpusob…
ad anotace: ah, uz sem si nasel co je tim mysleno (i v .NETu jsou takovehle pomucecky). planuje se nejaky oficialni podpora v PHP? … wiki: https://en.wikipedia.org/…ogramming%29
Editoval wdolek (28. 9. 2010 21:29)
- Yrwein
- Člen | 45
wdolek: Ad PHP anotace – něco takového se chystá (samozřejmě, když všichni implementují java-like anotace, tak PHP musí mít v rfc něco total jiného).
Ad Doctrine2 – nicméně stojí za povšimnutí, že v něm jaksi existuje způsob, jak se anotacím úplně vyhnout (a to samé u Symfony2).
Jinak osobně také doufám, že bude existovat možnost, jak u věcí, u kterých to dává smysl, se anotacím vyhnout a mít je v konfiguraci pohromadě. „Jediná správný způsob“ mě spíš děsí. .o)
Editoval Yrwein (28. 9. 2010 21:48)
- Honza Marek
- Člen | 1664
Yrwein napsal(a):
wdolek: Ad PHP anotace – něco takového se chystá (samozřejmě, když všichni implementují java-like anotace, tak PHP musí mít v rfc něco total jiného).
To vypadá podobně jako anotace v C#. Takže se mi to líbí.
Jinak fakt nechápu důvod, že někdo nechce používat anotace, protože se mu nelíbí.
- westrem
- Člen | 398
redhead napsal
Ehm samozrejme, to som v tom zapale zabudol napisat, ze tam to nie je vramci komentarov
wdolek napsal
Ak sa nemylim, tak v Nette 2.0 uz budu anotacie riesene tak, ze ich musi zastupovat urcita trieda a musia splnat urcite anotacie, takze tolko k tomu, ze si moze pisat kto chce co chce.
- wdolek
- Člen | 331
Yrwein: na to sem take narazil, ale :( je to snad jen request, kdo vi, jestli to projde a kdy se to pripadne objevi. jinak to vypada pekne
Honza Marek
Jinak fakt nechápu důvod, že někdo nechce používat anotace, protože se mu nelíbí.
ja nechapu duvod, ze nekdo nechce nosit zeleny tricka, protoze se mu zelena nelibi… ne vazne :) proste se mi na tom nelibi, ze aplikace je ovlivnena necim, co je v komentari! (v Jave a .NETu jsou ty anotace/atributy soucasti jazyka a nejsou tedy v komentarich)
- Ondřej Brejla
- Člen | 746
Pokud bude zápis anotací „kontrolovatelný“ (což by měl být, pokud se dobře pamatuji…), pak v používání nevidím žádný problém…ať už jsou v komentáři nebo v bůh ví čem…
- arron
- Člen | 464
wdolek ma pravdu v jedne zasadni veci: anotace jsou proste v komentari a ten muze kdokoliv, kdykoliv z kodu naprosto beztrestne vyjmout a spravne by to nemelo zadnym zpusobem ovlivnit chovani napsaneho programu. Tak byly komentare IMHO od sameho zacatku zamyslene…
Na druhou stranu, stejne do tech komentaru vsichni (haha) piseme ruzne phpDoc veci, a je pravda, ze je to velmi elegantni a asi i trochu navykove. Takze ackoliv jsem v podstate filozoficky proti, tak musim uznat, ze anotace jsou cool a pouzivat je urcite budu. Nicmene budu to delat s vedomim pouceneho programatora, ze si ovlivnuju chovani programu v komentari (a z urciteho uhlu pohledu me to bude porad stvat;-)).
- paranoiq
- Člen | 392
@pekelnik: ano, je to filosofická debata nad bytostnou podstatou komentáře (být či nebýt, smazat či nesmazat)
na argument „komentáře můžeme z kódu vyjmout a nemělo by to ovlivnit chování programu“ odpovím – „kdo by je vyjímal, když ví, že ovlivňují chování programu?!“ mohu si namluvit, že lze vyjmout třeba i deklarace tříd (a skutečně, i bez tříd lze programovat, že?), ale platné mi to nic nebude
začínám si myslet, že anotace jsou náboženství. stačí uvěřit a budete šťastní :]
- arron
- Člen | 464
paranoiq napsal(a):
… odpovím – „kdo by je vyjímal, když ví, že ovlivňují chování programu?!“ mohu si namluvit, že lze vyjmout třeba i deklarace tříd (a skutečně, i bez tříd lze programovat, že?), ale platné mi to nic nebude
Tak komentare jsou asi uplne to prvni, co z kodu vyjme jakykoliv kompilator ci interpreter :-) Jinak jasne, jako programator je tam samozrejme necham. Jenom se snazim rict, ze chapu, ze to nekomu neprijde uplne v poradku (vcetne me, jak jsem psal vyse), ze ovlivnuju chovani programu v komentarich:-)
Jinak problem tu asi ani neni s anotacemi jako takovymi, ale z jejich zapisem PHP. Nikdy bysme tady nevedli takovouhle debatu, kdyby se zapisovaly nativne do kodu a ne do komentare. Verim, ze i tohle se v nejake z pristich verzich PHP spravi a do te doby budou anotace dalsi cool vylepsenim Nette (ktere uz tak de-facto rozsiruje moznosti programovani v PHP o nekolik zajimavych veci). Takze asi tak :-)
- paranoiq
- Člen | 392
aaron: Tak komentare jsou asi uplne to prvni, co z kodu vyjme jakykoliv kompilator ci interpreter :-)
pro jazyk PHP existuje jediný jakštakš použitelný interpretr – PHP. a ten dokumentační komentáře nevyjímá a nikdy vyjímat nebude. dokumentační komentáře jsou dostupné přes oficiální reflection API
UPDATE: stěžovat si na zápis anotací mi přijde jako stěžovat si na syntax Latte. to je také rozšíření funkčnosti šablon nad rámec PHP, které musí Nette nějakým způsobem interpretovat. samo o sobě, bez pomoci Nette to fungovat nebude. kupodivu nikomu nevadí, že Latte makra nejsou platný HTML ani PHP kód
Editoval paranoiq (30. 9. 2010 10:11)
- Honza Marek
- Člen | 1664
Ale rozumná cesta by bylo mít nějaký interface IMetaInfoDriver s jedinou nettí implementací AnnotationMetaInfoDriver. A komu se to nelíbí, ať si anotace čte třeba z XML místo komentářů.
- David Grudl
- Nette Core | 8218
paranoiq napsal(a):
začínám si myslet, že anotace jsou náboženství. stačí uvěřit a budete šťastní :]
jo!!