21. dubna 2010

Programátorské konvence

Při procházení cizího kódu určitě každý ocení, když kód vypadá tak, jako kdybychom ho psali sami - stejné formátování kódu, stejná jmenná konvence pro pojmenování tříd a metod, stejná adresářová struktura projektu apod.

Proto jsem často překvapen, že na tyto "pravidla" se neklade potřebný důraz, i s ohledem na to, že údržba aplikace je mnohdy náročnější (časově, nákladově) než samotná realizace. Když už jsem někde pravidla viděl, tak mě zase překvapilo, jak jsou mnohdy složitá.

Pro mě je hlavním dokumentem "Code Conventions for the JavaTM Programming Language", který popisuje základní formátovací a syntaktická pravidla pro programování v jazyce Java. Nevidím tedy žádný důvod, proč vytvářet vlastní (nová) pravidla. Je určitě možné některé detaily změnit nebo upřesnit (např. délka řádky, kódování souborů, hlavičky tříd a metod, ...), ale nemá smysl měnit základní myšlenky dokumentu.

Kromě tohoto dokumentu považuji za programátorské konvence i další dokumenty jako např.:

  • Adresářová struktura projektů
  • Best practices - popis často řešených problémů
  • Názvosloví objektů a vzorů
  • Standardní architektura

Při návrhu těchto konvencí je potřeba myslet na to, že není snahou vytvořit 100 stránkový podrobný manuál, ale vytvořit nějaké rozumné mantinely a pravidla pro vývoj aplikace, které budou všem srozumitelná. Je na každém, jaké oblasti bude chtít pokrýt nějakými pravidly.

Já osobně vidím třeba velký přínos v tom, pokud názvy tříd a metod splňují nějaká pravidla, např. že metoda, která hledá data začíná find nebo že názvy perzistentních tříd končí na DAO. Pak mohu mnohem jednodušeji z jednoho místa nastavit transakce nebo zabezpečení aplikace.

4 komentáře:

Cyril řekl(a)...

a uplne nejlepsi je, kdyz se o formatovani stara Eclipse sam. Ja pri psani kodu vubec nedbam na mezery a podobne a Eclipse pak pri ulozeni vse krasne naformatuje stejne jako vsem ostatnim na projektu...

Petr Jůza řekl(a)...

Naprosto souhlasím, také to tak mám.
Jen mám zkušenost, že každé IDE to formátuje trochu jinak a na posledních projektech každý používal co chtěl.

Anonymní řekl(a)...

Při čtení cizího kódu můžete narazit na detaily, které vadí i nevadí:

1) if(podminka), if (podminka), if( podminka ).
2) vyrazy stylu if (zkontroluj() && zapis() && jesteneco()...), kde se spatne hleda algoritmus. Podle mne to má být pod sebou nebo alespon rozvrstvený if do řádků. Zažil jsem i šílené příkazy bez mezer.
3) Otvírací a uzavírací závorky bloku na zvláštním řádku. Otevírací závorka na řádku za if, Zavírací na stejném řádku jako následující catch nebo finally.
4) Závorky ve volání metody za mezerou, zatímco ostatní je nahusto.
5) Už jsem po sobě předělával jména proměnných, tříd nebo metod, aby byly rozumné.
6) Já třeba vyznávám, že přidaný řádek se má o sebe postarat, tzn. nový řádek inicializace pole má začínat čárkou, další řetězení plusem, řádek podmínky && nebo ||,
řádek parametrů čárkou. Co vy na to? Uf

Petr Jůza řekl(a)...

Já osobně jsem pro co největší vizuální podobu kódu, takže mě uvedené "nepřesnosti" vadí.
Myslím si, že vše podstatné o tom, jak by jednotně kód měl vypadat je uvedeno v konvencích k Javě, viz "Code Conventions for the JavaTM Programming Language". Dle mého názoru nění potřeba vymýšlet nic moc dalšího.