コメントにまつわるエトセトラ

テックポエム

皆さんは「コメント」と聞くと何を想像されますでしょうか。

本の注釈や意見、パブリックコメント制度やブログのコメント機能などをイメージされる方が一般的かと思います。

ちなみに、太宰治の「津軽」新潮文庫の94版では、注釈(脚注)の数が447もあることで有名です。

私は、ソースコード上に記載される注釈、すなわちコメントの事を思い浮かべました。

長い間ソフトウェア開発の仕事をしてきましたので、自然なことだと思います。

 

一般的にソースコード中のコメントは、コードの目的や意図を明らかにする為に書かれます。

ソースコードの読み手は、そこにコメントの存在する理由を考え、書き手が伝えたかったことを読み取ろうとします。

C/C++では、単行のコメントや複数行のコメントが記載できます。

// これは、単行のコメントです

/*

  これは、  複数行の

  コメントです

*/

 

ソースコードのコメントを読んでいると、これは何をする関数なのかな?とコードを読むよりも簡単に理解できる場合もあります。

特に入力や出力のパラメータがある関数などは、方向(IN/OUT)などを書いてあるのをよく見かけます。

特にドキュメントが無い場合は、コメント(とコード)がないと意味がわかりませんから、とても助かります。

 

新人時代に、必ずコメントを書きなさいと先輩達から教えられた人も多いのではないでしょうか。

私も今にして思えば、無駄なコメントを沢山書いてきたという自負があります。

無駄なコメントとはどのようなものでしょうか。

/*

  printf関数を利用して標準出力に文字列"Hello, World"を出力します

  printfの戻り値を検査すべきかもしれませんが、冗長なのでやっていません

  see stdio.h

/*

printf("Hello, World");

上記の例では無駄だと思います。なぜならば、コードを見ればその意図は明らかだからです。

昨今のC/C++開発環境では、printfにカーソルを合わせるかクリックするだけで宣言や定義を参照する機能もあります。

 

こちらはどうでしょうか、VisualStudio 2017のiostreamヘッダーの末尾にあるコメントです。

/*

 * Copyright (c) by P.J. Plauger. All rights reserved.

 * Consult your license regarding permissions and restrictions.

V6.50:0009 */

これは一見無駄そうなコメントだと思いますが、私はP.J.Plaugerさんを尊敬し、名前を見るだけでも嬉しいので、個人的にはアリだと思います。

 

コードを見れば一目瞭然なのに、1行毎に処理内容を書いてあるコメントを見かけることもあります。

「ここでは何をやっているよ」というコメントは一見親切なのですが、思考を阻害し可読性が落ちるような気がします。

一方で定数や変数名にコメントを入れるのは、親切で良いと思います。

コメントとはそれますが、変数名だけでその用途がわかるようであれば、素晴らしいことだと思います。

広域的な変数が、突然ソースコード中に現れ、この変数はなんだっけ?と思うことが多々ありますので。

 

間違った内容のコメントも当然あるでしょう。そのようなコメントに惑わされないようにするには、

地道に愚直にコードを読むしかありません。

 

一方で、極論ではありますが、コメントを必用としないコードこそが理想的であるとする考え方もあります。

確かに理想的ではありますが、振り切りすぎている感もあります。

私は、簡潔なコメントを適切な場所に最低限だけ入れたいと考えています。

 

世の中のソースコードのコメントの中には面白いアスキーアートや、恐ろしいコメントも沢山あります。

// この関数には絶対に触るな!危険!

// もう疲れた......

// これ書いたやつ誰だよ!

// ここバグってる。誰か修正しといて

などなど、いちいちツッコミたくなるコメントも多いと思います。

 

Unifinity Studioにも制御文/コメントのロジックがあります。

コメントetc1.png

 

処理ロジックにも説明プロパティにコメントを入れることができます。

コメントetc2.png

 

また、フォームコントロールにも説明というプロパティがあり、コメントやメモなどを記載することが可能になっています。

コメントetc3.png

 

みなさんも、Unifinity Studioのコメント機能を活用して、楽しく快適な開発をおこなってください。

//EOF