Správičky 2 174 Blogy 553 Fórum 13 339

Zaujímavosti zo sveta

03.02 C++ AMP Open Specification
S.Somasegar
As an industry trend, advancement in heterogeneous hardware has progressed at a rapid pace.  This in turn has fueled developer desire…
03.02 Group Policy Search
blogCZSK
Znalost a používání Group Policy patří k základům práce většiny administrátorů ve sv…
02.02 Odkazy z prohlížeče – 2.2.2012…
atasoft
Hardware Arduino Shield List – přehled “shields” pro Arduino – velmi rozsáhlý, včetně odkazů apod. STACKABLE LED MATRIX 8x8 – modul o…
02.02 Nová e-kniha: Základy databázo…
vyvojar
Mezi volně stažitelné, české nebo slovenské elektronické knihy (http://www.msdn.cz/knihy), jsme přidali prvn&iac…
02.02 Jazyk XAML
Co to vlastně je XAML? Proč je tak důležitý pro Windows Presentation Foundation? Jakým způsobem se zapisuje a co reprezentuje? Proč je tento…
02.02 Robotický den s .NET Micro Fra…
vyvojar
Velmi často potřebujete přerušit běh hlavního programu v reakci na nějakou důležitější událost, např. najetí na hranici arény při mini sumu.…
02.02 Setkání Windows User Group – ú…
blogCZSK
Díky spolupráci s WBI Learning pro vás začínáme opět připravovat pravidelné Hands on Laby, tedy pr…
01.02 Virtuální metody
V dnešním dílu jsou na řadě tzv. virtuální metody. Naučíme se tedy, co to virtuální metody jsou a jakým způsobem se používají. Mimo to se al…
01.02 ISA Server 2006 – konec podpor…
blogCZSK
Pokud ve vašem prostředí máte nasazen a používáte ISA Server 2006, je nejvyšší čas z…
31.01 100x telefon Nokia Lumia pro v…
vyvojar
Máme tu další zajímavou akci pro vývojáře aplikací pro Windows Phone 7! Pokud chcete z&iacu…
31.01 Microsoft mě znechucuje čím dá…
dotnet
Není tomu dávno, co jsem reagoval na situaci ohledně pravděpodobného směru vývoje Microsoftu. Dnes má trpělivost opět dosáhla mezních hranic…
31.01 Záznam a prezentace třetího dí…
blogCZSK
V druhém dílu infrastrukturní části System Center akademie se Jan Matějka zaměřuje na Configuration Manager 2012…
30.01 Robotický den s .NET Micro Fra…
vyvojar
V předchozím článku jsme si ukázali, jak můžeme ovládat digitální výstupy. Dnes budeme LED ovládat na základě vstupů ze senzorů. Senzorů je …
30.01 Série krátkých instruktážních …
blogCZSK
Kolegové z Office divize se vytáhli a nato čili na tři desítky krátkých instruktážních vide…
30.01 TechDays in Belgium and Nether…
ScottGu
I’ll be presenting at the upcoming Belgium and Dutch TechDays next month.  I’ll be doing three tech talks at each of the events: Ov…
27.01 ORA-12712 on NLS_CHARACTERSET …
dotnet
I tried to change character set in my oracle database because of Russian localization, I tried command: ALTER DATABASE CHARACTER SET AL32UTF…

[POLEMIKA] Komentovať alebo nekomentovať.

T - 7. 3. 2010 19:22 - 1552 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: 183, Príspevkov vo fóre: 2003, Príspevkov v blogu: 45, Bodov: 15925
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. 34425 b. photo vlko
2. 15925 b. photo T
3. 15330 b. photo spigi
4. 5885 b. photo dudok
5. 5510 b. photo slavof
6. 4935 b. photo siro
7. 4715 b. photo duracellko
8. 3625 b. photo jakub
9. 3490 b. photo lubolacko
10. 3340 b. photo skippo