セクションコメントに何を使うか
コードの中にセクションコメントを仕込む場合、どんなフォーマットで書けばいいのかということを考える機会があった。
セクションコメントをどんなときに使うのか
一つのファイル内で意味がガラッと変わるセクションが混在することはまぁある。
例えば
import * as React from "react";
import styled from "styled-components";
type Props = {};
export const Component = (props: Props): React.ReactElement => {
return (
<Card>
<Head>head</Head>
<Body>body</Body>
</Card>
);
};
const Card = styled.div``;
const Head = styled.div``;
const Body = styled.div``;
というのがあるときに、大きく
- import 文達
- props 型定義
- componnet
- styled component 達
にという文脈に分けられる。
この例はまだすっきりしているやつだが、これがおおきくなるととたんに見づらくなる。
これを整理するために、ここからここは props 型定義ですよーみたいに区分するときにセクションコメントを使う。
セクションコメントに求められることは
いろんなセクションが混在した場合に、あくまで人がコードを見るときの補助として用いられるのであって、ここがコンパイルされるということはなくていい。
つまり、あくまで
// シングルライン
/* ブロックコメント
または、マルチラインコメント*/
を使って表現し、バンドルされる場合は排除されてほしいし、アプリケーションに影響があることはあってはならない。
OSS ではどのようなセクションコメントを使っているのか
eslint
//------------------------------------------------------------------------------
// Typedefs
//------------------------------------------------------------------------------
react-select
// ==============================
// NO OP
// ==============================
vue
見当たらない
apollo-client
見当たらない
react
見当たらない
material ui
見当たらない
stylelint
見当たらない
bootstrap
/**
* --------------------------------------------------------------------------
* Public Util Api
* --------------------------------------------------------------------------
*/
JS、 TS における JSDoc annotation
JSDoc は記述した直後のコードに対して注釈をつけ、ドキュメントを生成することを目的としたジェネレーターである。
Use JSDoc: Getting Started with JSDoc 3
TS もこの JSDoc をサポートしている
TypeScript: Documentation - JSDoc Reference
/*
* 間に*が入るブロックコメントみたいな構文
*/
この構文は直後のコードに対しての注釈なので、セクションコメントに向いていない。
例えば
import * as React from "react";
import styled from "styled-components";
/*
* styles
*/
const Card = styled.div``;
const Head = styled.div``;
const Body = styled.div``;
と書けば、Cardに対して styles という情報が付くことになり不適切である。
結論
- これといったベストプラクティスはないので、プロジェクトで決めて統一すればいい
- JSDoc annotation を用いたセクションコメントは避けるべき