anotace – neanotace, podpora vsech vychytavek ale bez uziti anotaci v komentarich

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
wdolek
Člen | 331
+
0
-

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
+
0
-

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
+
0
-

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.

redhead
Člen | 1313
+
0
-

westrem: anotace v javě ale nejsou v komentáři, je to normální zápis kódu jako třeba metoda.

Tím neobhajuju alternativní zápis anotací. Já jsem s anotacemi žádný problém nikdy neměl a je to úžasná věc používat. Podle mě to Nette má vyřešeno bezvadně!

Honza Kuchař
Člen | 1662
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.

grey
Člen | 94
+
0
-

já jsem pro anotace, ale určitě by měl být alternativní způsob zápisu – jako to má třeba doctrine 2…

wdolek
Člen | 331
+
0
-

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
+
0
-

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
+
0
-

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;-)).

pekelnik
Člen | 462
+
0
-

Vždycky přece fungovalo getPersistentParams() takže nějaké nářky nad anotacemi jsou úplně zbytečné… pokud se nepletu nikde jinde (vyjma pers. parametrů) zatím oficiálně anotace využity nejsou… bo se pletu?

arron
Člen | 464
+
0
-

pekelnik napsal(a):

Jestli jsem to spravne pochpil, tak jde spise o filozofickou debatu, nez o nejake nářky ne?

paranoiq
Člen | 392
+
0
-

@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
+
0
-

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 :-)

pekelnik
Člen | 462
+
0
-

Uzavřel bych tuhle debatu s tím že anotace se používat nemusejí.

paranoiq
Člen | 392
+
0
-

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
+
0
-

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ářů.

_Martin_
Generous Backer | 679
+
0
-

@Honza Marek: to zní jako rozumný kompromis=)

westrem
Člen | 398
+
0
-

@Honza Marek: way to go!! +1

David Grudl
Nette Core | 8147
+
0
-

paranoiq napsal(a):
začínám si myslet, že anotace jsou náboženství. stačí uvěřit a budete šťastní :]

jo!!