- PR -

if文のコメントを、どのようにつけますか?

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-29 10:45
 参照元記事で、ifブロックがでていたので興味をおこし、スレッドをたてました。
「ifブロックに、どのようにコメントをつけますか?」


 私は、このような書き方をします。

// ifブロックで何をするか
if (〜) {
 // 判定式が真(または偽)になるのは、何を表しているか
 // その時の処理内容
 ・・・手順・・・
} else {
 // 判定式が偽(または真)になるのは、何を表しているか
 // その時の処理内容
 ・・・手順・・・
}

// ユーザの権限によるメニューのon/off
if (ユーザは管理者である) {
 // 管理者権限を持っている
 // 管理用のメニューをonにする
 管理メニュー = true;
} else {
 // 管理権限を持っていない
 // 管理用のメニューをoffのする
 管理メニュー = false;
}
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2004-04-29 10:52
定型処理ならば 私はあまりつけないです。そのかわり
分岐条件の定数を文字列にしたりします

if (FALG = INSERT) then XXX
if (FALG = DELETE) then XXX

定型処理以外なら
判定式が真(または偽)のとき何をするのかコメントを書きます
ただし 判りやすい明示的なクラスなりプロシージャーを使用する場合は書かないです。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-04-29 11:11
NAL-6295です。

例示されているような場合は、コメントしないですね。
コード:
if(IsAdministrator)


って感じにします。
基本的には、名称を端折らない事で、コメントがなくても読めるようにしています。
トリッキーな仕様で、コメントが無いとわからない場合だったりした時は、
コード:
//仕様:ほにゃららららら〜
if(***)
{
 //〜な時○○したい



とします。が、ほとんど無いです。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2004-04-29 13:04
私もそういう場合だと書きません。

関数の戻り値をチェックするときによくifを使いますが
if((ret = function()) == -1){
syslog();
exit(1);
}
みたいな場合、なぜ終了すべきなのか、という理由をif節の前に
コメントしておく、なんてことはあります。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-29 13:13
 なるほど〜〜

 そういえば私が先のようなコメントを入れるのは、コメントから書くから、というところもありますね。

// ユーザの権限によるメニューのon/off
// 管理者権限を持っている
// 管理用のメニューをonにする
// 管理権限を持っていない
// 管理用のメニューをoffのする

// ユーザの権限によるメニューのon/off
if (true) {
 // 管理者権限を持っている
 // 管理用のメニューをonにする
} else {
 // 管理権限を持っていない
 // 管理用のメニューをoffのする
}

どちらかを先に書いておいて、後から内容を書く、と。やはり「コメントを抜き出してドキュメントにする」ようなことをしていたからかもしれない
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-04-29 13:16
unibon です。こんにちわ。

私は、条件判断(判定式)の説明のためのコメントと、その条件のときの処理の説明のコメントはできるだけ分けるようにしています。これは互いの説明がゴッチャにならないようにするためですが、こうすると良い副作用として、else の条件のコメントが要らなくなります。
すなわちこんな感じ。

// ifブロックで何をするか
if (〜) { // 判定式が真になるのは、何を表しているか
 // その時の処理内容
 ・・・手順・・・
} else {
 // その時の処理内容
 ・・・手順・・・
}

#あとで、コメントの字を少し修正。

[ メッセージ編集済み 編集者: unibon 編集日時 2004-04-29 13:18 ]
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2004-04-29 14:26
こんにちは〜。

私の場合は、Jitta さんの一番最初の例ですと、

 //--- ユーザ権限チェック → 管理メニューのon/off
 if (ユーザは管理者である) {
   :

にしています。
もうちょっと込み入ってくると、

 //--- ユーザ権限チェック
 if (ユーザは管理者である) {
   //--- 管理者権限 → 管理メニューのon
      :
 
   //--- ○○を××にセットし、△△
      :
      :

 }else {
   //--- 管理者権限以外 → 管理メニューのoff
      :
 }

のようなカンジでしょうか。
基本的に、細かく(処理のポイント毎に)入れるようにしていますが、「〜をする」 という処理ブロック内で、それ以上の説明がいらない場合は、if 文にコメントを付けないこともあります。
pascal
常連さん
会議室デビュー日: 2004/04/29
投稿数: 29
お住まい・勤務地: 神奈川県
投稿日時: 2004-04-29 17:21
こんにちは.
pascalと申します.
このコメントでデビューしました.

私は、コメントを出来るだけ書かないようにしています.
代わりに、
if ( isAdministrator ) {
canUseThisMenu
} else {
cannotUseThisMenu
}
のようにする場合がほとんどです.
NAL-6295さんと似たような(同じ?)感じです.
少なくとも「条件が真なら何をするか」的なことは書きません.
それはソースコードを読めば分かるからで、
読んでも分からないのなら、コーディングそのものがおかしいということ
です.
仮に、そのようなコメントを書くと、後で仕様が変わった場合、
ソースコードとコメントの両方を変更しなければならなくなる、
というのも問題です.
コメントの変更を忘れてしまうと、後で他の人(或いは自分)が読んだ時に、
かえって困ってしまいます.
但し、自分がサンプルコードを書いて、他の人に
詳細を埋めてもらうようなときは、穴埋め問題的に入れることはあります.


_________________


[ メッセージ編集済み 編集者: pascal 編集日時 2004-04-29 17:23 ]

スキルアップ/キャリアアップ(JOB@IT)