諏訪通信ネットワーク
スポンサードリンク
製品情報 ダウンロード サポート お知らせ
   


ソフトウェア

for Windows
Xp Vista 7 10

Keyboard IE
カーナビを...
ダイアグスキャナー
徒歩メーター
燃費ティーチャー

サンプリングメーター
みるCAN
CANメッセンジャー
CANレコーダー
CANレーベル



コーヒーブレイク

VB6の長所と短所
なぜVB6を使うのか
VB6のトラブル集1
VB6のトラブル集2
UWPのトラブル集1
C言語のコメント作法
C言語の常識ルール



蓼科電研

クルマ整備技術サイト
蓼科電研オートモーティブ















C言語のコメント作法
2021.7.16


C言語のコーディングルールにて、「//」スラッシュスラッシュを禁止する会社と、
「/* */」スラッシュアスタリスクを禁止する会社がありました。
どちらの言い分も分かるのですが、現在は「//」を使用するのが一般的だと思います。
理由もなく禁止にされても不満になると思いますので、簡単に説明します。



1.他の言語との調和
そもそも、C言語のコメントは「/* */」のみです。 「 // 」は、C++の言語仕様です。 C++は、「 // 」と「/* */」が必ず使えますが、C言語は「/* */」しか使えません。 しかし今のC言語のコンパイラのほとんどでは、追加機能で「 // 」が使用できます。

ではなぜ、ほとんどのコンパイラでわざわざ対応しているのでしょうか? 理由は簡単で、それを使ったほうが遥かに生産性が高くなるからです。 C系でない他の言語は、コメントの先頭にコメント記号を置いて1行をコメントして扱う文法仕様が多いのです。

VBなどは「 ' 」、PythonやPerlなどは「 # 」がコメント記号です。 そのほうが簡単で生産性が高いから、そういう文法仕様になっているのです。 C++もC言語の問題点の改善として「 // 」が生まれたのです。




2.バグの発生のしやすさ
「/* */」は、コメントの後に処理を書くことができます。 「 // 」は、処理ができません。後ろはすべてコメントだからです。 この仕様の違いが、余計なバグを生みます。

では、この関数を1回処理した場合、最後に count_i はいくつになるでしょう?
答えは2のはずですが、実際に実行したら1でした。理由はなぜだか分かりますか?





この場合、開発環境のエディタの表示範囲外に処理の記述があったからです。
しかもコメントの後ろです。
冗談に思えるかもしれませんが、疲れているとベテランでもやってしまうバグです。
例えば行の先頭で「back spaceキー」を押して改行コードを消すと、行の記述が前行の最後尾に飛ばされます。
この例は簡単な処理の為、すぐに気づくかもしれません。 一般的にはこれよりも複雑な処理が含まれるはずですし、それをエディタの見える部分のみで原因を探ろうとして時間が掛かります。 ましてやコメントの後ろに処理が紛れ込んでるなんて思わないでしょう。


「 // 」を使えば、このような不幸な事故を防ぐことができます。 1行ごとに必ずコメントを入れるルールを持つ会社は多いと思います。 1行1コメントは、コードレビューのしやすさや人員等の引継ぎのしやすさといった意味のほかにも、 このような文字入力起因のバグを防ぐ目的もあります。 以下のようにソースコードを書き、この関数の仕様において最後に count_iが1であるのが正しいのであれば、 エディタの表示範囲のみで「count_i--;」がないとコードレビュー等で気づけます。 コメントより後ろは絶対に処理されないので、どのようなゴミが付いていても処理に影響はありません。



「/* */」が使用禁止であれば、処理の中で特定位置をコメント化することも禁止のため、 行単位でコメントすることになります。 一般常識として、実験的に処理を変更してみる場合は、必ず元の処理はコメントアウトして残しておきます。 残さない場合、色々いじっているうちに元は何だったのか分からなくなるためです。



3.入力工数
「 // 」は、「 / 」キーを2回押押してスペースキーを1回押せばOKです。101、104キーボードであれば、どちらのキーも近い位置にあります。
「/* */」は、「 / 」キーを押す、shiftキーを押しながら「8」キーを押す、スペースキーを2回押す、shiftキーを押しながら「8」キーを押す、「 / 」キーを押すといった操作が必要です。
「 // 」なら0.3秒、「/* */」ならば2.5秒といったところでしょうか。
合計1000行のコメントがあったとします。
「 // 」なら 0.2秒 × 1000 = 300秒 ≒ 5分
「/* */」なら 2.5秒 × 1000 = 2500秒 ≒ 41分

「/* */」を使い続けると、1000コメントあたり36分の工数増加です。
コメントとは、あくまでもソースコードを対象とした開発品質の作法です。
動作の機能や性能には影響しません。もっと使うべき時間があるのでは?と思います。




スポンサードリンク

 Copyright (C)1999-2021 SUWA TSUSHIN NETWORK. All Rights Reserved.
ご利用条件