Správičky 2 277 Blogy 579 Fórum 14 090

Zaujímavosti zo sveta

22.05 Update rollup 2 pro AD FS 2.0
blogCZSK
Pokud využíváte Active Directory Federation Services (například ve spolupráci s cloud službami typu Office 365), zbystřete. Minulý týden sp…
21.05 Vydělejte na svých nápadech! –…
vyvojar
První týden v červnu uvedeme na trh Windows 8 Release Peview. K tomuto uvedení pořádáme, ve spolupr&aacut…
21.05 Používání krajů/okresů v SQL R…
vyvojar
Již mnoho let je součástí SQL Serveru služba Reporting Services. Od verze 2008 R2 nabízí též možnost vizu…
21.05 Windows 8 – shrnutí blogů za 2…
vyvojar
Jak jistě víte, v Metro rozhraní mohou běžet současně maximálně dvě aplikace (režim snap a full). Pokud potřebujete, aby vaše aplikace vykon…
21.05 MDT 2012 k dispozici ke stažen…
blogCZSK
Microsoft uvolnil novou verzi nástroje Microsoft Deployment Toolkit (MDT), výborné pomůcky při nasazování…
18.05 Co IT-týden dal: miscanthus, s…
KFL-MS
KFL > Po 6denní dovolené jsem se v pondělí pln energie vrátil do práce. Výraz energie je v tomt…
18.05 MAP Toolkit 7.0 Beta k dispozi…
blogCZSK
Pokud při své práci využíváte sadu nástrojů Microsoft Assessment and Planning (MAP) Toolkit, máte …
17.05 Uložení videa z archivu CT
atasoft
Mám TV s možností přehrávat a nahrávat video z/na USB. Prošvihl jsem jeden pořad, tak jsem si ho chtěl pustit z archivu CT, jaké bylo moje p…
17.05 Odkazy z prohlížeče – 17.5.201…
atasoft
CodeProject A Crontab Linux like Windows Service – řešeno ovšem jako třída s rozhraním IService Kinect for Windows- Find user height …
17.05 První české aplikace pro Windo…
vyvojar
  Od pondělka probíhají v Praze a Bratislavě Windows 8 Application Excellence Labs. O co jde? Společnosti, které už vytvářejí aplikace…
17.05 Software a dokumenty ke stažen…
blogCZSK
Pokud vás zajímá nejnovější nabídka novinek ve formě dokumentů, aktualizací a pomocný…
16.05 .NET 4.5 Improvements for Clou…
S.Somasegar
I’ve had multiple meetings recently with customers and press where the topic of .NET development has come up, particularly as it rel…
16.05 SQL 2012 průvodce produktem k…
blogCZSK
Na stránkách Microsoft Download Centra je k dispozici průvodce produktem neboli SQL 2012 Product Guide. Velikost downloadu je …
15.05 Pozvánka: Testování české loka…
blogCZSK
(převzato z českého MSDN blogu) Využijte prosím této ojedinělé příležitosti zapojit se do testová…
14.05 Pozvánka: Testování české loka…
vyvojar
Využijte prosím této ojedinělé příležitosti zapojit se do testování české lokalizace (jazyk…
14.05 RTM dokumentace pro System Cen…
blogCZSK
V souvislosti s nedávným uvedením finálních verzí produktů rodiny System Center 2012 na trh (stahovat můžete mimo jiné i z TechNetu a MSDN) …

[POLEMIKA] Komentovať alebo nekomentovať.

T - 7. 3. 2010 19:22 - 1669 views

InfoQ vypichuje pár názorov večne zelenej témy, ktorou rozohodne komentovania zdrojových kódov je.

Zastávam názor, že interfaces majú byť dostatočne popisné a intuitívne už svojim názvom. Dôvodom prečo vo všeobecnosti komentujem málo je štandardná výhovorka o nedostatku času :-) Snažím sa komentovať hlavne všetky "magiky". Tiež je hlúposť suplovať komentármi nedostatočnú znalosť programovacieho jazyka niektorého z kolegov ;-) Popis top level behavior aplikácie a model by nemal byť manageovaný v zdrojákoch a developerom, ale dokumentácii(use cases[čo nie je to isté, ako use case uml diagram] resp. domain model). Tiež sa mi zdá hlúpe nasilu oddelovať "ako" od "prečo" pri hodnotení komentárov.

Toľko môj brain strom, teraz vy! :-)


Tomáš Zeman

Microsoft Certified Solution Developer

MCP ID: 2155385

Článkov: 0, Správičiek: 191, Príspevkov vo fóre: 2126, Príspevkov v blogu: 46, Bodov: 16750
Najaktívnejší č.: 2
Profil používateľa

Reakcie

# Comments 8. 3. 2010 8:39:29 rebro

Ja osobne zastavam nazor ze komentovat by sa malo len to, co sa neda povedat kodom. Tj. kod by mal popisovat co robi a programator by mal - ak je to potrebne pridat "preco". Vacsina komentarov "co" sa da odstranit jednoducho -> refactor : extract method a nazov metody/funkcie je popis danej funkcionality. V pripade ze sa neda najst rozumne meno pre danu funkciu si treba dat otazky: Nerobi ten kod prilis vela ? Dokazem ten kod napisat inac - tak aby bolo zrejme co robi ?
Dalsi aspekt je "udrziavanie" komentarov. Zly, resp. neaktualny komentar je horsi ako ziadny.

Moj nazor je: Snazit sa minimalizovat pocet komentarov na minimum, pretoze mozu vytvarat "noise" v kode a mozu byt naznakom "code smells". Snazit sa napisat kod tak, aby bol pochopitelny a rozpraval urcity "pribeh".

# Comments 8. 3. 2010 9:29:08 vlko

Ja zasa komentujem podla nalady, ked mam dobry den, tak je kazdy riadok s komentarom, ked je zly, tak su komentare len generovane ghostdocom:)

Ale nie, obcas su komentare precenovane, urcite su nutne, najma ak je vo funkcii nejaky algoritmus, ale obcas sa popisuju na popisovanie samopopisujuceho. A obcas je to len neschopnost programatora nazvat spravne premennu. Milujem najme temp, temp1..n, var1..n, prem, prem1..n.

Pre prehlad v kode je dolezity aj indent, zalamovanie riadkov, oddelenie riadkov logickych celkov kodu, obcas som sklamany s resharpera ako neinteligentne zalamuje riadky.

# re: Comments 8. 3. 2010 10:05:10 duracellko

asi sa tu zhodneme, ze komentovat kazdy riadok je blbost.. vacsinou teda staci ghostdoc + nejaka gramaticka uprava. mozno aj to je zbytocne, ale intellisense potom vyzera krajsie :)

ale urcite komentujem algoritmy, aspon minimalne pomenujem, ze tu je implementovany taky algoritmus. ale hlavne komentujem podmienky, ktore nie su uplne jasne, lebo su pouzite len v nejakom kontexte. Urcite je jednoduchsie cita
// ak su deti cierne a bratranec cierny, tak treba spravit vyvazenie podstromu
asi som napisal blbost, ale uz si nepamatam R-B tree :)

ale napada ma otazka. v akom jazyku pisete komentare, pokial zakaznik nema na to poziadavky.

ja sa snazim v anglickom. hlavne po tom ako som raz pocul prihodu, ze niekto prebral kod od talianskej firmy. tam bol problem, ze este aj premenne a metody boli v taliancine.

# re: Jazyk komentarov 8. 3. 2010 10:19:14 vlko

Ja som za anglictinu, ale projekt na ktorom robime je urceny pre zahranicie a tam by stacktrace v slovencine nevyzeral dobre. Na druhu stranu, ked som pracoval na mzdovom software, tak sme po urcitej dobe (cca 1 rok, predtym sa robili core veci, tak to az take horuce nebolo) prisli na to, ze pisat komentare v anglictine pre specificke vypocty pre slovensko moc zmysel nema. Urcite ale aspon minimalne by som nedaval diakritiku do nazvov tried a metod.

# Comments 8. 3. 2010 12:52:45 rebro

co je lepsie ?

komentar:
// ak su deti cierne a bratranec cierny, tak treba spravit vyvazenie podstromu

alebo
kod:
if (deti.AreBlack() && bratranec.IsBlack())
VyvazPodstrom();

- kod vacsinou neklame, comments mozu
- samozrejme tu exsituje otaza: do akej miery su podobne "zmeny" prospesne pre citatelnost kodu ?

# Jazyk 8. 3. 2010 13:00:51 rebro

Najhorsie je mat totalny mix: SlovenskoAnglicke metody + hungarian Notation

GetUzivatel(), objFirstUzivatel, ComputeMzduZamestnanca, intCountObjektov

Ja preferujem len jedno : Anglictinu. Problem nastava v pripade ako pise Vlko: ked mame dajake specificke veci, ktore sa len velmi tazko opisuju v anglictine.

# re: Comments 8. 3. 2010 23:26:14 duracellko

@rebro.. ja viem, ze som neuviedol asi najlepsi priklad. trochu mi to pripomina, ked sme sa ucili dokazovanie spravnosti programov. tiez sme sa to ucili na jednoduchych prikladoch, kde cely dokaz spravnosti v podstate spocival v prepisani do matematickeho modelu s trochu inou semantikou. dokonca pre jednoduche priklady sa dala ta semantika povazovat za zhodnu, takze to bolo len hlupe prepisovanie do ineho jazyka, a preto nikto nechapal, v com spociva dokaz spravnosti.

lenze pre zlozitejsie algoritmy uz invarianty nemuseli byt take zrejme. teda pre toho, co algoritmus vymysla aj ano, ale nie pre toho, co ho cita. takze, aby som upresnil svoj nazor na komentare, tak sa snazim pisat do komentarov invarianty, ktore nie su z kodu uplne zrejme. takisto pisem preconditions, ktore sa v kode vobec nevyskytuju, lebo su dane algoritmom alebo by design. napriklad to, ze bratranec.IsBlack() mozes testovat o 20 riadkov vyssie alebo inde v callstacku, ale pre volanie VyvazPodstrom() to je kriticke, tak to do komentara napisem.

a posledna vec, co komentujem, ak mi nieco nefunguje a musim spravit hack, tak napisem, ze aky hack a preco bol tak spraveny. aby sa nestalo, ze pride mudrlant a pozrie, ze co je to za otrasny kus kodu, tak to prepise a zisti, ze mu to nefunguje.

inac uz sa mi parkrat stalo, ze komentare mi posluzili ako dokaz spravnosti. ja totiz najprv pisem kod a potom ho komentujem. no a pritom nie je problem zistit, ze v kode je nieco ine napisane ako v komentari. takto mam chyteny bug bez debugovania :)

# ... 9. 3. 2010 0:35:15 T

@Duracelko:
pri dobrej enkapsulacii a OOD naozaj budes tazko hladat dobry priklad.

Bohuzial, na dobru encapsulaciu nie je vzdy cas alebo nie vzdy sa oplati a ked chces pomoct kolegom, tak im nejaky kus kodu, kde robis nejaky zazrak v bloku kodu okomentujes ... dostanes ich tak lahsie do kontextu. Mozno na to si sa snazil poukazat. Vlastne ani mne sa nechce lustit nejaky x riadkovy linq magic o tyzden, co som v zachvate geniality nieco inline zbuchal, ked si dam hint cez komentar, urcite to rozlusknem lahsie.

A napr. osobne preferujem blok kodu pred jednoucelovym vytvaranim metody[a specialne privatnej v samotnom objekte], lebo potom citatelnost kodu pada na tomto a na nutnosti masivnej navigacie po nom nehovoriac o neefektivite z vnarania.

@rebro:
ak je slovensky zakaznik a komunikujete v slovencine, je aj tak narocne udrziavat dva jazyky / dve terminologie - jeden v teame a jeden na vonok a prepinat sa medzi nimi.
Nevyhodou su potom take mix slova(co znie horsie ZákazníkRepository alebo uff ...RepozitarZákazníkov...a to som sa celkom vynašiel monestifikovaným ekvivalntom slova) ...prosto nevidim to tak tragicky ako hungarian notation ;-)

# re: Comments 9. 3. 2010 10:16:49 duracellko

@T: ano.. pri spravnom OOD sa tazko hlada vhodny priklad. Lenze nie vsetky problemy sa dobre riesia OO paradigmou. Prave preto je tu F# :)

ale presne ako hovoris, nie vzdy sa oplati davat jednoucelovu vec do private metody. a ak aj ano, tak v private metode netestujem preconditions, pretoze su private a inde zabezpecujem aby boli splnene. ale zato ich napisem do komentara, aby som po case na prvy pohlad videl ze metoda funguje (alebo aj nefunguje :) vo vsetkych pripustnych pripadoch.

dalsia vec ma napada, ze ak sa naozaj rozsiri viac paralelne programovanie, tak niektore veci budu este menej zrejme, kedze nebudu ovplyvnene len par riadkami pred/za komentarom, ale aj kodom v inej metode na inom threade.

# ... 10. 3. 2010 16:17:59 T

@duracelko: Aj funkcionalny pristup umoznuje riesit pekne enkapsulaciu, takze ani tam nie je problem.

# BIG_1949457 6. 6. 2010 19:30:05 7604

Poslite SMS: BIG_1949457 na cislo: 7604 Potom Vam system prideli nick a heslo, posle Vam adresu webu na ktorom si potom mozete pozerat bonusovy obsah. Cena SMS: 0,35€

Titulok:


Meno:


Url:
Koľko je 22 + 4? (ochrana proti spamu)

Komentár:


Najaktívnejší užívatelia
1. 35185 b. photo vlko
2. 16750 b. photo T
3. 15610 b. photo spigi
4. 6655 b. photo dudok
5. 5705 b. photo slavof
6. 5205 b. photo siro
7. 4745 b. photo duracellko
8. 3800 b. photo Liero
9. 3690 b. photo lubolacko
10. 3625 b. photo jakub