Jak dokumentovat kód JavaScript pomocí JSDoc

Správná dokumentace programového kódu je klíčová, nicméně často opomíjená součást vývoje softwaru. Jako programátoři se soustředíte na psaní čistého a funkčního kódu, ale tvorba kvalitní dokumentace může být pro vás méně známou oblastí.

Dobře napsaná dokumentace je neocenitelná pro všechny, kdo pracují s vaším kódem, ať už jde o kolegy z týmu, nebo o vás v budoucnu. Může objasnit, proč jste zvolili určité řešení, nebo jak používat konkrétní funkci či API.

Pro vývojáře v JavaScriptu je JSDoc výborným nástrojem pro zahájení dokumentování kódu.

Co je JSDoc?

Dokumentování kódu může být zdlouhavé a náročné. Nicméně, stále více vývojářů chápe výhody přístupu „dokumentace jako kód“ a mnoho programovacích jazyků nabízí knihovny pro automatizaci tohoto procesu. Pro vytváření jednoduché, srozumitelné a stručné dokumentace existují nástroje, jako je GoDoc v jazyce Go nebo právě JSDoc v JavaScriptu.

JSDoc generuje dokumentaci na základě speciálních komentářů v JavaScriptovém kódu. Tyto komentáře analyzuje a transformuje do užitečné dokumentace, která je následně zpřístupněna v HTML formátu.

Díky tomuto přístupu je dokumentace přímo součástí kódu, a když kód upravujete, je snadné aktualizovat i jeho dokumentaci.

Nastavení JSDoc

Tvůrci JSDocu usnadnili jeho zprovoznění a nastavení ve vašem JavaScriptovém projektu.

Pro lokální instalaci JSDocu použijte příkaz:

npm install --save-dev jsdoc

Tím se knihovna nainstaluje do vašeho projektu jako vývojová závislost.

JSDoc používá speciální komentáře s konkrétní syntaxí. Všechny poznámky k dokumentaci se zapisují do bloků ohraničených značkami /** a */. V těchto blocích můžete popisovat definované proměnné, funkce, parametry funkcí a mnoho dalšího.

Například:

 * Získá uživatele podle jména.
 * @param {string} name - Jméno uživatele
 * @returns {string} Uživatel
 */
function getUser(name) {
  const User = name;
  return User;
}

Značky @param a @returns jsou jen dvě z mnoha klíčových slov, které JSDoc využívá pro popis vašeho kódu.

Pro vygenerování dokumentace z tohoto kódu použijte příkaz npx jsdoc následovaný cestou k vašemu JavaScriptovému souboru.

Například:

npx jsdoc src/main.js

Pokud máte JSDoc nainstalovaný globálně, můžete vynechat prefix npx a spustit:

Tento příkaz vytvoří výstupní složku v kořenovém adresáři vašeho projektu. Uvnitř najdete HTML soubory, které tvoří stránky s vaší dokumentací.

Dokumentaci si můžete zobrazit spuštěním lokálního webového serveru nebo jednoduše otevřením souboru out/index.html ve webovém prohlížeči. Níže je příklad, jak bude dokumentace vypadat ve výchozím nastavení:

Konfigurace výstupu JSDoc

Chcete-li změnit výchozí nastavení JSDocu, můžete vytvořit konfigurační soubor.

Vytvořte soubor s názvem conf.js a do něj exportujte JavaScriptový modul.

Například:

module.exports = {
  source: {
    includePattern: ".+\\.js(doc|x)?$",
    excludePattern: ["node_modules"],
  },
  recurseDepth: 5,
  sourceType: "module",
  opts: {
    template: "path/to/template",
    destination: "./docs/",
    recurse: true,
  },
};

V konfiguračním souboru najdete různé možnosti nastavení JSDoc. Volba šablony umožňuje změnit vzhled dokumentace. Komunita JSDoc nabízí množství šablon, které můžete použít. Je možné i vytvořit vlastní šablony.

Pro změnu umístění vygenerované dokumentace použijte volbu destination a nastavte cestu k požadovanému adresáři. V uvedeném příkladu je dokumentace generována do složky docs v kořenovém adresáři projektu.

Pro spuštění JSDoc s konfiguračním souborem použijte tento příkaz:

jsdoc -c /path/to/conf.js

Pro usnadnění spouštění tohoto příkazu, přidejte ho jako položku do skriptů v souboru package.json:

"scripts": {
    "dev": "nodemon app.js",
    "run-docs": "jsdoc -c /path/to/conf.js"
  },

Nyní můžete spustit příkaz npm script v terminálu.

Příklad dokumentace vygenerované pomocí JSDoc

Následuje příklad jednoduché aritmetické knihovny s funkcemi pro sčítání a odčítání.

Toto je ukázka dobře zdokumentovaného JavaScriptového kódu:

 * Knihovna pro základní aritmetické operace.
 * @module arithmetic
 */
module.exports = {
  
  
  * Sečte dvě čísla.
  * @param {number} a - První číslo.
  * @param {number} b - Druhé číslo.
  * @return {number} Součet dvou čísel.
  * @throws {TypeError} Pokud některý z argumentů není číslo.
  * 
  * @example
  * const arithmetic = require('arithmetic');
  * const sum = arithmetic.add(5, 10);
  * console.log(sum);
  */
  add: function(a, b) {
    if (typeof a !== 'number' || typeof b !== 'number') {
      throw new TypeError('Oba argumenty musí být čísla.');
    }
    return a + b;
  },

  
  * Odečte druhé číslo od prvního.
  * @param {number} a - Číslo, od kterého se odečítá.
  * @param {number} b - Číslo, které se odečítá.
  * @return {number} Výsledek odčítání.
  * @throws {TypeError} Pokud některý z argumentů není číslo.
  * 
  * @example
  * const arithmetic = require('arithmetic');
  * const difference = arithmetic.subtract(10, 5);
  * console.log(difference);
  */
  subtract: function(a, b) {
    if (typeof a !== 'number' || typeof b !== 'number') {
      throw new TypeError('Oba argumenty musí být čísla.');
    }
    return a - b;
  }
  
};

Komentáře JSDoc poskytují jasný a podrobný popis knihovny a jejích metod, včetně:

  • Popisu knihovny a jejího účelu.
  • Parametrů každé metody, včetně jejich typu a krátkého popisu.
  • Hodnoty a typu, které každá metoda vrací.
  • Chyb, které může každá metoda vyvolat, a podmínek, které je způsobují.
  • Příkladu použití jednotlivých metod.

Komentáře také obsahují značku @module, která označuje, že se jedná o modul, a značku @example s příkladem použití každé metody.

Správný způsob dokumentování kódu

Jak vidíte, JSDoc je užitečný nástroj, který vám pomůže začít s dokumentováním kódu v JavaScriptu. Díky snadné integraci můžete vytvářet rychlou a detailní dokumentaci přímo při psaní kódu. Můžete ji také udržovat a aktualizovat přímo v rámci vašeho vývojového prostředí.

Nicméně, i když je automatizace s JSDoc užitečná, měli byste dodržovat určité zásady pro tvorbu kvalitní dokumentace.