みんな関数コメントどうしてる?
■ このスレッドは過去ログ倉庫に格納されています
0001コメントなし
NGNGちなみに俺は、C++の場合こう書いてます。
/////////////////////////////////////////////////////////
// int Hoge(int i)
// 戻り値:
// ○○○
// 説明:
// △△△
/////////////////////////////////////////////////////////
これをテキストファイルに保存して、そのつどコピペしてます。
でも、これってめんどい・・・
効果的なコメントの書き方してる人教えて。
00022get ◆8LDBMQ/E
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGそういうドキュメント生成ツールは使ってないの?>>1
0007デフォルトの名無しさん
NGNG場合にもよるけど・・・
0008デフォルトの名無しさん
NGNGそれは最凶。
0009コメントなし
NGNGJAVAのプログラムは何度も書いた事があるけど、javadocは
使った事なし・・・
それ以前に、コメントを書くのが面倒なんで、なんとかならんか
と・・・
行が増えるたびに「//」を入力したりとか。
/* */を使うと、まとめてコメントアウトしたりするとき面倒だし・・
また、雛形をコピぺするのも面倒・・・
複数行なんでIMEに登録もできんし・・・
この単純作業を皆どうやってるんだろうと思った次第です。
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNGhttp://www.shiojiri.ne.jp/~tukahara/boss.html
このソフトなんてどう?シェアウェアだけどね。
0012デフォルトの名無しさん
NGNGC, C++ なら doxygen を使うと Javadoc っぽくコメント付けできる。
http://www.doxygen.org/
Graphvis と組み合わせて使うと、クラス図もなかなか行けてる。
0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG同意。
漏れもマクロで一発入力できるようにしてある。
0015デフォルトの名無しさん
NGNG/*============================================================================
関数名
戻り値:
……。
説明:
……。
============================================================================*/
>>1と大差ないけど、コメントの行数が増えてもこちらの方が
楽だと思う。
あとどこかでこれのバリエーションを見たような…。
public関数だと
/*=============
で、
private関数とかだと、
/*---------------
って感じにするの。
00166
NGNG>それ以前に、コメントを書くのが面倒なんで、なんとかならんかと・・・
コメント入力支援機能のあるエディタかIDEを使うのが正解だと思う。
コメントのつけ方で悩んでいる場合は、とりあえずドキュメント生成ツールを開
発チームで導入して、コメントの書式を統一するところから始めてみては?
ドキュメント生成という目的があればコメントの入れ方の良し悪しも判断し易く
なるしね。
0017デフォルトの名無しさん
NGNG> /* */を使うと、まとめてコメントアウトしたりするとき面倒だし・・
ネスとする可能性がある場合には #if 0 使うと良いよ。
0018デフォルトの名無しさん
NGNG>それ以前に、コメントを書くのが面倒なんで、なんとかならんかと・・・
仕様書の関数定義をそのままこぴればいいんじゃないの?
VISIOあたりでクラスの記述してあればメソッド定義ごとコメントも生成される。
0019デフォルトの名無しさん
NGNG0020ラジャ・ライオン
NGNGよし、1からコメント入力支援ソフトを作ろうっ!
とりあえず、VCとC++Builder持ってるけど、やっぱBuiderでサクッと作ってみよう。
しばし待て
0021デフォルトの名無しさん
NGNGreturn-type funcname(params)
/*
ここに説明
*/
{
処理
}
0022
NGNGプログラム仕様書を自動生成するアプリケーションの仕様によるだろ
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNGスクロールするときはどうするんですか?
0026デフォルトの名無しさん
NGNG常に関数仕様がわかるので重宝してます。
0027デフォルトの名無しさん
NGNG…というのは建前で、スピード命のコードだと言い訳書かないといけないことも
あったりするんだよな。
でも、嘘コメントよりは糞コードの方がまだまし。
0028デフォルトの名無しさん
NGNGコメント甲斐とかないと、あとでこわいおにーさんに呼び出されるじょ。
0029デフォルトの名無しさん
NGNGコメント書かないといけないような仕様やコードもアレだけど、「数ヶ月前の
自分のコードは他人のコード」というように、コードの理解に無駄な時間をか
けないようにコメントを書くんだと思う・・・
0030デフォルトの名無しさん
NGNGコメントを書かないと理解できないコードを書くって事にそもそも問題が
あるんだが。
ただ、往々にしてそういうコードを書かざるを得ない状況もある訳で、
そーゆー所にこそ「なぜそういう事をしてるのか」というコメントを
書けばいい。後はいらん。
まぁ品管がおばかだと何が何でも入れされられたりして鬱になるけど。
# 入れないと検収しねえとか言われたら、そらしょーがねー。
0031
NGNGそうなんだけど、1年後、2年後、...n年後に見る場合、
実際わからねーよ。
0032デフォルトの名無しさん
NGNG俺は、公開する関数/変数にはコメントをつける。
- 前提条件として、何か別の処理が必要? (たとえば渡す配列はソート済みであることが要求されているとか)
- ポインタとして NULL を渡して良いのか? その場合の動作は?
とかはコメントに書かんと分からんもの。
それにいくら「コードを読めば分かる」とはいえ、関数が出てきたときに、いちいちその関数のコードを読んで理解
するのは、規模が大きくなると時間的に厳しくなる。個人的には、開発中のコードすべてに目を通して把握できる
のは C で数万行、それ以上になると他人がメンテナンスしているコードまで把握しつづけるのは、現実の開発ペー
スだと無理だなぁ。(開発が凍結されてるコードを読んで理解しろという話なら、もうちょい行けるが)
ただ、コードのステートメントに対しては基本的にコメントをつけない。こっちは「読めば分かる」ように、変数名や
関数名で処理内容を語らせて、トリッキーな記述はマクロなんかに押し込める。どうしてもコメントをつけないと意
図不明になる場合には「こう動く」ではなくて「こういう意図でコードを書いた」と記述しておく。「こう動く」というコメン
トだと、後でコードを読んだときにバグなのか意図してのコードなのか判断しづらいんで。
0033デフォルトの名無しさん
NGNG一回触っといたほうがいいよ
0034デフォルトの名無しさん
NGNG(同じ処理をコピペで何箇所も貼り付けてあったりした、関数化してく
れよ・・・)の引継ぎをして、泣きそうな目にあったことあるな・・・
後を継ぐ人の事を考えてコメント書け。
0035デフォルトの名無しさん
NGNG>れよ・・・)の引継ぎをして、泣きそうな目にあったことあるな・・・
コピペ好きな人って多いよね。
俺も2chでやるのは大好きだけど、コードではな…
0036デフォルトの名無しさん
NGNG正論。
0037デフォルトの名無しさん
NGNGラジャ・ラオイン期待age
はよ、うぷしれ。
0038デフォルトの名無しさん
NGNG0039コメントは書かない!
NGNG0040デフォルトの名無しさん
NGNGなぜ strstr() を使わないのかと小一時間問い詰めたいな。標準関数は「コメントを書かなくても良い」
(自分が書くまでもなく、公式なドキュメントが存在する)関数だから、積極的に使うでしょ。
>>38
仕事だと、そういうケースも多いね。
ただ規約も上から降ってくるとは限らんし、自分が規約を作る羽目になることもある。どういうコメントを
つければ作業効率が上がるのか考えてみるのは、それなりに実があることと思われ。(腐った規約に
対して反論する武器にもなるしね)
0041デフォルトの名無しさん
NGNG004224
NGNG0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNGむちゃくちゃ読みづらい。
0045デフォルトの名無しさん
NGNG_asm{
popl %eax,%ebx,%ecx
:
0046デフォルトの名無しさん
NGNG激しく同意。
ハンガリアン変数命名法ってのも、他ではボロカスに叩かれてるけど、
俺はいいと思うんだけどなぁ・・・
//フォント情報
int nFontSize;
string strFontName;
みたく、nとかstrくらいだったら邪魔にならんと思うのだが・・・
0047デフォルトの名無しさん
NGNG>ハンガリアン変数命名法ってのも、・・・
同意。
入力補完機能付きの環境だと候補が山ほど出てくるという弊害を指摘する人もいる
けど、グローバルな宣言を減らせば済む事だと思う。
コンパイラの型チェックがいくら強力になっても、コードの可読性にはあまり関係
の無い話だしね。
>nとかstr
どうせハンガリアンするなら潔く全部3文字に統一しては?
#「MSが好んで使うから」というだけで嫌っている人もいるらしい。
0048デフォルトの名無しさん
NGNGメリットをあえて論じたいなら別スレ立ててやってくれ。
0049デフォルトの名無しさん
NGNG> #「MSが好んで使うから」というだけで嫌っている人もいるらしい。
.NET ではハンガリアン使うなと MS が言ってるらしい...
0050デフォルトの名無しさん
NGNG>コンパイラの型チェックがいくら強力になっても、コードの可読性にはあまり関係
>の無い話だしね。
ハンガリアンでべつに読みやすくなったりるとは思えないけどね。
0051デフォルトの名無しさん
NGNG>#「MSが好んで使うから」というだけで嫌っている人もいるらしい。
ネットでたまに見る、ハンガリアンを絶賛してる人は、
MSの(古い)コードしかしらないような人が多いね。
005248
NGNG2chでハンガリアンの話をするとこういうことになるのだ(藁
0053いうまでもなく
NGNGコメント不要がいちばんいいのだ。
0054デフォルトの名無しさん
NGNG話がループしてるな。
0055デフォルトの名無しさん
NGNG説明は全てドキュメントに記述する。
これ最強。
0056デフォルトの名無しさん
NGNGドキュメントとソースコードの同期が取れなくなるという罠。
javadoc, doxygen は「それほど手間をかけずに」「そこそこのドキュメントが」書けるのが良いところ。
0057デフォルトの名無しさん
NGNG秘書を一人雇うといいかもしれん。
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNGコメント無しのソースを理解してコメントを入れてくれるような人は秘書にはもったいないな。
0061デフォルトの名無しさん
NGNG「秘書を一人雇うコストについて話し合うスレ」
になりました。
0062デフォルトの名無しさん
NGNG時給1200〜1600ぐらいか。
0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNGこれ最強。
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNGあー、俺、七五調派だよ。
// 画面のロックを解除する
// 演奏ファイルを保存する
// そもそもオープンしていない
ってな感じで。まあ、七五調に出来るのはほんの数%しかないけどね。
0068デフォルトの名無しさん
NGNG結構いいと思った。他にもあれば教えてください。
http://www.cpnet.co.jp/gfan/techdoc/dev/dev01/sub.htm
0069俺はこうかな
NGNG関数名
引数
引数
戻値
*****************************************************/
でもほかのPGから判り肉いって言われた。
0070デフォルトの名無しさん
NGNGバグも機能もすべてかかれている。
0071デフォルトの名無しさん
NGNGでもさー、コメントふってないと書いた人間が
「どーゆーつもり」でその処理を書いたかって
読み取れないじゃん。
無駄な事やってんのか、
副作用を期待してるのか、
副作用を避けようとしてるのか?
単なる好みの問題なのか、とか。
0072デフォルトの名無しさん
NGNG行けない手間が発生する。
引数や戻り値の型も書くと同期の手間が発生するので書かない。で、
//----------------------------------------------------*/
// 正当性チェック
// 引数 row -> 正当性チェックしたい行番号
// 戻り値 Validなら true
//----------------------------------------------------*/
boolean isValid(int row)
とかなるのだが、こうなると
//----------------------------------------------------*/
boolean isValid(int row)
でも変わらない気がする。(関数と関数の間に目立つ記号は残しておく)
もちろんコメント書かないとわからんような条件はコメントにするけど、結局そう
いった条件をなくしていくことがコードの洗練なわけで、自分でもがんばったときには
ほとんどコメントがないコードが出来上がっている。
0073デフォルトの名無しさん
NGNGちゃんとコメント書いてれば、javadocなどのツールで仕様書を
自動生成してくれるというメリットもある・・・
0074デフォルトの名無しさん
NGNGC++だとヘッダと実装2つのファイルに別れてしまう。
関数コメントって、ヘッダと実装部どっちに書いた方が良いのか迷う時が
ある、両方に書く方法もあるが・・・
みんな、どっちに書いてる?
ちなみに俺は実装部のみにコメント書いてる。
0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNG1 クラスそのもの
2 メンバ変数
3 純粋仮想関数
についてのコメントは実装部分に書きようがないし。
0077デフォルトの名無しさん
NGNGpublic, private で目印つけても、やはりすぐ下に同じこと書いてあるのでいらない。
装飾付けると、肝心のコードが埋もれるのでじゃま。
/*(^_^)/(^_^)/(^_^)/(^_^)/(^_^)/(^_^)/(^_^)/(^_^)/(^_^)/(^_^)/(^_^)/
suujidesuka(char a) - 文字 a が数字'0'-'9'かどうか調べる
☆戻り値☆
数字なら TRUE を返す。
(-_-)b(-_-)b(-_-)b(-_-)b(-_-)b(-_-)b(-_-)b(-_-)b(-_-)b(-_-)b(-_-)b*/
char *eijikana(int a) { return isalpha(a)? "TRUE" : NULL; }
// ☆☆☆☆☆☆☆☆☆ suujidesuka() ここまでで〜す。☆☆☆☆☆☆☆☆☆☆
とかいう定義があったら泣くだろ?俺は泣いたよ。
0078デフォルトの名無しさん
NGNG関数コメントより、"TRUE" を返している事の方が泣けそう
0079
NGNGコメントよりもコード読んだ方が速い。
0080デフォルトの名無しさん
NGNG全部消せっ w
0081デフォルトの名無しさん
NGNG部下にそんなコード提出されたら、何も言わずに殴るな。
0082デフォルトの名無しさん
NGNG/**
* 文字が数字 (0 - 9) かどうかを調べる。ロケールは考慮しない。
*
* @param c
* 評価する文字。ただし文字は EOF, もしくは 0 から 255 の範囲にあることを前提にしている。
* char が符号付きの環境では符号拡張に注意すること。
*
* @return
* 文字が数字であれば TRUE, 数字でなければ FALSE を返す。c が範囲外の場合の動作は未定義。
*/
BOOL my_isdigit(int c);
私は、この程度は書いて欲しいなぁ。
あと人の書いたソースの保守を頼まれた場合、使えそうな関数があるのかどうか探すときにコメントがないと
厳しい。ソースを読めばわかるといっても規模が大きくなると現実的じゃないし、木を見て森を見ずになる恐れ
があるのが難だ。
008377
NGNG部下からじゃないよ。だいぶ前の話だけど、改造請け負って実機から
引き上げて来た実働ソースの中にあったよ。
ばれるとイヤだから変えてあるけど、顔文字と全角記号の羅列で目が
チカチカした。
途中で別の会社が改造しているらしくて、そこだけややまともなコメント
で逆の意味で涙がでた。
>>78
"TRUE" も実話。類似品に "NULL" って、NULLじゃないじゃん(TT
#undef TRUE
#undef FALSE
#define FALSE 1
#define TRUE 0
なんてのもあったなぁ。「罠」ネタですね、すんません。
0084デフォルトの名無しさん
NGNG関数名がsuujidesukaってのもかなりすごいぞ。
0085デフォルトの名無しさん
NGNG>#undef TRUE
>#undef FALSE
>#define FALSE 1
>#define TRUE 0
何の為?
0086ナイコンさん
NGNGクラス階層図のクリック位置がえらくズレてる。
なぜじゃ。。
0087あぼーん&rlo;んーぼあ&rlo;
NGNG/*********************
コメント
{
処理
}
**********************/
0088デフォルトの名無しさん
NGNG* 関数名
* <Entry>
* 第1引数 : 説明
* 第2引数 : 説明
* <Return>
* 返す値の説明
******************************/
0089デフォルトの名無しさん
NGNG意味不明
009077
NGNG知らん。想像では、
試験段階になって仕様が逆になっているのが発覚。 →手抜き
だと思うけど、、
失敗した時の判定で、
if (! hogehoge()) return FALSE;
の '!' を書くのが面倒だったとかで無い事を祈る。
とりあえず、個人的に気をつけている、指導している例。
a) 関数の動作について簡単な説明(1〜2行)
b) 各引数の意味。および制約条件
c) 戻り値の意味。値とその意味のペアが明確であるように書く。
d) 投げられる例外の種類と、投げられる状況。
e) ここまでで明確でなければ、詳しい捕捉事項。
(制限、主な使用目的、本来の目的以外に発生しうる副作用、
呼び出し方の例等など)
f) 見れば判るので、"関数名:"や、"説明:"といった情報料0の見出しは省く。
g) 情報の不整合を回避するため、シグネチャを見れば判る内容は省く。
h) 書式は可能であれば javadocやdoxygen等のレポートジェネレータ
が処理可能な形式で。さもなければ perl 等で関数一覧が作れる
様にマークアップする。(この場合は一覧を作るスクリプトをソースに
添付)
i) 装飾 /******** や ☆☆☆ などの装飾は、情報料0以前に邪魔になる
ので避ける。特に目の健康の為、全角記号は厳禁。
j) 関数内に付けるコメントは、1;動作の本質にかかわる部分 2; 直感的でない操作
を捕捉する形で付ける。
k) 複雑な内容を説明する場合、箇条書きでよいので、とにかく人が判るように書く。
うぅ。長い。。。若い連中が覚えられないのもうなずける。。
0091デフォルトの名無しさん
NGNG処理のところにコメントを入れられないな。
0092デフォルトの名無しさん
NGNGbool値入れ替えてやがった
殺すぞヴぉけ!!!!!
ああ腹立つ
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNGただの判断ならisalpha()で十分だよな。
0095デフォルトの名無しさん
NGNG// 16進数文字をint値に(それ以外の文字はゼロ)
int hex_to_int(char c)
{
(略)
}
ん〜・・・コメントに関数名書くのは無駄かなぁ。
コメントは色変わるから、ぱっと見つけれていい感じなんだけど。
こんな簡単な関数にコメントは要らんという説もあるけど、そこは他とのバランスというか、関数によってコメントあったりなかったりというのもどうかと。
>>82 みたいな長いコメントは滅多に書かないな・・・。基本的に手抜き説明。
コメントよりコード読んだ方が速いってことは、あんましないかと(間違ったコメント書いてない限りは)。なんつっても日本語だし、概要を把握するにはコメントあった方が助かる。
でも自分で書いたコードなら、コメントなしでも、機能とか大体覚えてるからなー。なくても良いのかも。
あ、でも >>77 みたいな、インライン展開できそーな短い関数はコメント書かないな。
0096デフォルトの名無しさん
NGNGstrtol()でいいじゃん。
たとえばの話?
0097デフォルトの名無しさん
NGNGint hex_to_int(char c) ←ここんとこも色変えればいいやん。
009895
NGNG文字列中のエスケープシーケンス(\x00とか)の読み取りで使ってるヤツで、桁数が固定なんよ。strtol だと、読めるとこまでいくらでも読んでいくじゃない?・・・って、どうでもいい話。
>>97
うぅ。某乱度のエディタは、そういうとこは色を変えてくれないんよ。
0099デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNGsscanf()使えばコメントつける関数ごと不要になる。
0102101
NGNG0103デフォルトの名無しさん
NGNG0104けいとく
NGNGたいていのエディタならテンプレート挿入機能はついてるよ。
emacs か xyzzy 使っとけ。
「ヒント22: ひとつのエディターを熟知すること」
『達人プログラマー』 P.82
■ このスレッドは過去ログ倉庫に格納されています