Programovací konvence

Z Wikipedie, otevřené encyklopedie

Programovací konvence je v informatice soubor pokynů pro konkrétní programovací jazyk, kterými je doporučen styl zápisu programu, postupy a metody pro každý aspekt programu napsaném v tomto jazyce. Tyto úmluvy se obvykle týkají organizace souborů, stylu odsazování, komentářů, deklarací, příkazů, použití bílých znaků, konvencí pojmenovávání (proměnných, názvů funkcí…), postupů programování, principů programování, architektonicky osvědčených postupů, atd. Tyto pokyny jsou určeny pro dodržení strukturální kvality kódu. Programátorům je doporučeno pokyny dodržovat, aby se zlepšila čitelnost jejich zdrojového kódu a aby byla údržba softwaru jednodušší. Programovací konvence se vztahují pouze na lidské správce a peer recenzenty softwarových projektů. Programovací konvence mohou být formálně zdokumentovaný soubor pravidel, která celý tým nebo společnost dodržuje nebo mohou být neformální, jako obvyklé postupy používané jedincem. Programovací konvence nemají vliv na práci překladače.

Údržba softwaru[editovat | editovat zdroj]

Snížení nákladů na údržbu softwaru je nejčastější důvod pro dodržování programovacích konvencí. V jejich úvodu do programovacích konvencí pro programovací jazyk Java, Sun Microsystems poskytuje následující odůvodnění:[1]

Programovací konvence jsou důležité pro programátory z řady důvodů:

  • 40%-80% celoživotních výdajů za kus software, jde na údržbu.[2]
  • Málokterý software je udržován po celý svůj život jeho původním autorem.
  • Programovací konvence zlepšuje čitelnost softwaru, což umožňuje inženýrům pochopit nový kód rychleji a lépe.
  • Pokud pošlete váš zdrojový kód jako produkt, musíte se ujistit, že je tak dobře zabalen a „čistý“ jako jakýkoli jiný produkt, který vytvoříte.

Softwarové inženýrství[editovat | editovat zdroj]

Softwarové inženýrství je proces, při kterém je projekt specifikován a navržen. To je naprosto zásadní pro úspěch, zejména u velkých projektů. Dobré softwarové inženýrství může znamenat rozdíl mezi úspěšným projektem, a to jak po finanční, tak i technické stránce, a projektem, který je, v nejhorším případě, mrtvý při dodání. Dobré softwarové inženýrství bude minimalizovat následné náklady a maximalizovat marketingový úspěch projektu.

Specifikace projektu[editovat | editovat zdroj]

Musí být vytvořeny následující dokumenty:

  1. Stručný popis projektu. Jedná se o jednoduchý popis projektu, který daný projekt odstartuje, a netvoří součást řetězce formálních dokumentů.
  2. Požadavky specifikace. To určuje, co projekt je. Toto je základní část řetězce dokumentu. Všechny ostatní dokumenty se od něj odvíjejí.
  3. Projekt design. Je to formální dokument návrhu projektu. Specifikuje moduly a komponenty, jejich rozhraní a jak jsou připojeny. Softwarový inženýr, při tvorbě toho dokumentu, prochází všechny různé způsoby, jak designovat daný projektu a vybrat nejlepší možné řešení. Při tomto procesu je nutné brát ohled na všechny aspekty včetně technického, kvality, manažerské, logistické a komerční. To zahrnuje čas a náklady na vývoj, údržbu, podporu a využití. Součástí této práce je architektonický návrh a mnohem víc.
  4. Specifikaci testu. To určuje všechny testy, které mají být prováděny a jaké výsledky mají být kontrolovány. Často jsou testy spouštěny v rámci automatického testování a zkoušky uvedené buď v souboru kódu nebo souboru skriptu.
  5. Výsledky testu.

Celý proces specifikace projektuje to, co se nazývá řetězce dokumentace. Každý dokument má 1:1 vztah k předchozímu dokumentu. A nakonec specifikaci testu má 1:1 vztah ke specifikaci požadavků. Řetězec dokumentace je obousměrný.

Tyto metody se nazývají formální metody.

Kvalita[editovat | editovat zdroj]

Software peer review často zahrnuje čtení zdrojového kódu. Tento typ peer review je především k detekci vad a chyb v kódu. Podle definice, pouze původní autor kódu má číst zdrojový soubor před jeho předložením k přezkoumání. Kód, který je konzistentně upravený, je pro ostatní recenzenty jednodušší k pochopení a lépe se tudíž detekují jeho chyby.

I pro původního autora, důsledně konzistentní software usnadňuje udržovatelnost. Neexistuje žádná záruka, že si jedinec bude pamatovat přesné zdůvodnění , proč konkrétní kus kódu byl napsán určitým způsobem, dlouho poté, kód byl původně napsán. Kódovací konvence mohou pomoci. Důsledné používání mezer zlepšuje čitelnost a snižuje čas potřebný k pochopení softwaru a jeho funkcí.

Standardy programování[editovat | editovat zdroj]

Pokud jsou programovací konvence speciálně navrženy tak, aby vytvářeli vysoce kvalitní kód, a poté formálně přijaty, mohou se tyto konvence stát standardy programování. Specifické styly, bez ohledu na to, zda jsou běžně přijaty, nemusí automaticky produkovat kvalitní kód. Pouze pokud jsou dobře navrženy, může výsledkem být vysoce kvalitní kód. To znamená, že musí být velmi logické, v každém aspektu jejich designu - každý aspekt musí být důrazně zdůvodnitelný a výsledkem produkovat kvalitní kód.

Potlačování složitosti[editovat | editovat zdroj]

Omezování složitosti je velmi důležité. Je velice důležité si během vývoje projektu položit otázku: „Je tento projekt realizován s co nejkratším a nejjednodušším kódem?“. Pokud ne, s vývojem vznikají nadbytečné náklady a je prováděna „zbytečná“ práce. 

Složitost je možno ovlivnit jak ve fázi návrhu (jak je projekt navržen) tak ve fázi vývoje - při programování. Pokud je použito jednoduché a základní programování, je možnost omezit složitost kódu na minimum. To jest udržet programování „fyzické“, tedy programovat způsobem, který je přímý a ne-abstraktní. To vytváří optimální kód, který lze snadno číst a sledovat.

Čím složitější kód je, tím je pravděpodobnější, že se v kódu budou vyskytovat chyby a bude je obtížnější odhalit. Zvyšuje se také riziko skrytých chyb, které mohou ovlivnit bezpečnost aplikace. Bezpečné programování je velmi důležité.

Refaktorizace[editovat | editovat zdroj]

Refaktorizace se týká softwarové údržby, kdy je zdrojový kód upraven tak, aby se zlepšila čitelnost nebo jeho struktura. Software je často refaktorován, aby se uvedl do souladu s vývojáři stanovenými standarty po jeho počátečním vydání. Každá změna, která nemění chování software, může být považován za refaktorizaci. Běžné refaktorizační činnosti zahrnují změny názvů proměnných, přejmenování metod, posunutí metody nebo celé třídy a lámání velkých metody (nebo funkcí) do menších.

Agilní metodiky vývoje software plánuje pravidelné (nebo i kontinuální) refaktorizace, což je nedílnou součástí procesu vývoje software.[3]

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Coding conventions na anglické Wikipedii.

  1. Code Conventions for the Java Programming Language : Why Have Code Conventions [online]. Sun Microsystems, Inc., 1999-04-20. Dostupné online. 
  2. Robert L. Glass: Facts and Fallacies of Software Engineering; Addison Wesley, 2003.
  3. JEFFRIES, Ron. What is Extreme Programming? : Design Improvement [online]. XP Magazine, 2001-11-08 [cit. 2017-06-14]. Dostupné v archivu pořízeném dne 2006-12-15.