見出し画像

コード可読性向上のためのDoc機能

外資系企業でソフトウェアエンジニアをしております、タロイモと言います。今日もよろしくお願いします。

開発現場では、コードは自分だけが読めるものではいけません。
そのため、コメント(メモ)として関数やクラスの詳細を書かなければいけません。

しかし、そのコメントが統一されたもので(ルールが)ないと、プログラマーは何を書けば良いかわからないし、読む方も読みづらいです。

会社や組織、チーム独自にコメントのルールがある場合もありますが、その生成を楽にしてくれるツールもあります。

それがDocです。

今回は、そのDoc機能を紹介します。
今回はJS DocというJavaScript用のDocで例を紹介しますが、RubyにはRDoc、JavaにはJavaDocなど各言語であります。


1. JSDocの使い方

JSDocは、エディターを使うとかなり開発効率が上がると思います。
JSDocに対応しているエディターVSCodeで、以下のように関数を作りJSDocをコメントとして書くと、

スクリーンショット 2020-06-20 11.28.59


そして、以下のように別のファイルで関数にカーソルを合わせたときに、JSDocコメントが表示されます。

スクリーンショット 2020-06-20 11.29.09

完璧な記述をする必要はありませんが、できるだけ推奨されている書き方で記述すると良いそうです。


HTMLでも出力することができます。
npmでjsdocをインストールして、

$ npm install -g jsdoc

以下のファイルbook.jsに

スクリーンショット 2020-06-20 11.45.39

$ jsdoc book.js

以上のコマンドを入力すると、

スクリーンショット 2020-06-20 11.43.54


このようにHTMLが生成されます。
これをブラウザで開くと、

スクリーンショット 2020-06-20 11.46.59

関数の詳細が表示されます。


エディターがお勧めですが、HTMLでも出せるので両方のやり方を覚えておくと良いでしょう。

2. JSDocの書き方

"/**"で初めて、"*/"で終わります。
その間に記述がある分だけ"*"を書きましょう。

/**
* [記述]
*/


変数
@typeの後の{}内に変数の型(String, Number, Boolean)を書き、そのあとに変数の説明を書きます。

/**
* @type {Number} 年齢
*/
let age = 23;


配列
@typeの後の{}内にArrayと書き、そのあとに配列の説明を書きます。

/**
* @type {Array} 年齢の配列
*/
let ageArray = [10, 22, 30];


連想配列
最初に@typeで連想配列の説明を書きます。連想配列はオブジェクトの扱いなので、{}の中はobjectと書きます。
次に連想配列のオブジェクト内の@typeで連想配列のペアが何を意味しているのかを書きます。{}内は連想配列の値(value)の型を書きます。

/**
* @type {Object} 会員情報の連想配列です
*/
const memberInfo = {
 /**
  * @type {Number} 会員番号
  */
 "id": 1,
 /**
  * @type {String} 会員名
  */
 "name": "taro imo"
}


クラス(インスタンス)
はじめにクラス(インスタンス)の説明をします。
@constructorがコンストラクタであることを表します。(なくても良い)
@thisが何を指しているのか{}の中に書きます。
@paramで関数の引数の説明を書きます。{}の中には関数の引数の型を書きます。

/**
* Personクラスのインスタンスを作成する。
* @constructor
* @this {Person}
* @param {String} name 名前
* @param {Number} age 年齢
*/
let Person = function(name, age) {
   this.name = name;
   this.age  = age;
   }

let taroImo = new Person('taroImo', 23);
console.log(taroImo.name); // taroImo
console.log(taroImo.age); // 23


関数
まずコメントの最初に関数の説明を書きます。
次に@paramで関数の引数の説明を書きます。{}の中には関数の引数の型を書きます。
最後に@returnで返り値の説明を書きます。{}の中には返り値の型を書きます。
*関数内の変数のJSDocは省いています。

/**
* 10年後の年齢を返す
* @param {Number} age 年齢
* @return {Number} 10年後の年齢
*/
function tenYearsLater(age){
 let tenYearsLater = age + 10;
 return tenYearsLater;
}


3. まとめ

今回は複数人での開発効率をあげるDocについて紹介してみました。

Docを利用することで時間短縮をし、快適な開発を実現してみてください。

本日もご精読ありがとうございました。


よろしければサポートお願いします! サポートは、サービスの開発・改良や、記事を書く際の素材費とさせていただきます。 少しでも有益な情報発信をしていけるよう努めてまいります。 是非とも応援よろしくお願いします!!!🙇‍♂️