アカウント名:
パスワード:
//コメントの記述で叱られる
「コメントの最後に『\』となるマルチバイト文字を使ってはならない」
よりも
「『//』コメントは一切禁止」 もしくは 「日本語の『//』コメントは禁止」
のほうが,わかりやすくて妥当なルールだと思いますが…. 「//」コメントを書くたびに禁止文字リストを使ってチェックしろとか,禁止文字を暗記しろとか言われるほうがむしろたまりません. そもそも,この場合で悪いのはマルチバイト対応が不十分なコンパイラであって,落とし穴にはまった人を「低レベル」呼ばわりするのは筋違いのように思います. 道具の側にくだらない制限があるなら,コーディング規約でくだらない制限をしなければならないのはやむを得ませんよね. P.S. 後学のためにどういうコンパイラと文字コードの組み合わせか教えてもらえませんかね?
そのバグ、ハマったことあります。
Shift_JIS環境で作ったソースを、文字コード変換しないでそのままロケールがUTF-8の環境に持ち込み、Shift_JISのコードをUTF-8ロケールのままコンパイルしたら、なりました。詳しいバージョンまでは覚えてませんが、コンパイラはgcc 4.x.xだと思います。
もっとも私の場合は、コンパイラがマルチバイトに対応してないなどといった話ではないと思います。
# 改行がCRLFな環境で作ったテキストファイルを、改行がLFな環境で開いてfgetsしたら、# 末尾にLFだけでなく、CRLFが読み込まれるってのにもハマった。# なんであのマシン、nkf入ってないんだ……
//表top++;
# SJIS 対応製品と未対応製品を混ぜるな危険ということであればその通り.
//コメントにおいて次行に跨がらせるために行末に\を書くことを禁止すべき。
わざわざフィルタをかますのに、なんで独自ルールを導入する必要があるの? ちゃんとマルチバイト対応したコメント除去処理をするだけでいいじゃん。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike
最近はいない? (スコア:0)
//コメントの記述で叱られる
Re:最近はいない? (スコア:2, 興味深い)
#使用言語はC言語です。
#「もうやらなくていい」というより「使ってもよさそうなのに禁止」されています。
禁止になった理由は、コメントの最後に「\」となるマルチバイト文字をつかってしまい
(本当はコメントにしたくなかった)次の行までコメントとなってしまったからです。
#こういうのを「馬鹿基準」と言ってる人もいますね。
#低レベルな人に合わせて無駄な禁止事項が増えていくという。
無駄なコーディング規約より「DRY原則遵守」で。
Re:最近はいない? (スコア:1, すばらしい洞察)
「コメントの最後に『\』となるマルチバイト文字を使ってはならない」
よりも
「『//』コメントは一切禁止」 もしくは 「日本語の『//』コメントは禁止」
のほうが,わかりやすくて妥当なルールだと思いますが…. 「//」コメントを書くたびに禁止文字リストを使ってチェックしろとか,禁止文字を暗記しろとか言われるほうがむしろたまりません.
そもそも,この場合で悪いのはマルチバイト対応が不十分なコンパイラであって,落とし穴にはまった人を「低レベル」呼ばわりするのは筋違いのように思います. 道具の側にくだらない制限があるなら,コーディング規約でくだらない制限をしなければならないのはやむを得ませんよね.
P.S. 後学のためにどういうコンパイラと文字コードの組み合わせか教えてもらえませんかね?
Re:最近はいない? (スコア:1)
落とし穴にはまった人を「低レベル」呼ばわりした書き方になってしまっていました。
#私としては、下らないコーディング規約を批判したつもりだったのですが、そうなっていませんでした。
> P.S. 後学のためにどういうコンパイラと文字コードの組み合わせか教えてもらえませんかね?
コンパイラはマイナーなやつなので伏せさせてください。文字コードはシフトJISだと思います。
ただ、「//」コメントが一律禁止されているのは事実ですが、
理由として挙げた「次の行までコメントになってしまった件」は
又聞きなので、事実とは異なるかもしれません。すみません。
Re:最近はいない? (スコア:1)
そのバグ、ハマったことあります。
Shift_JIS環境で作ったソースを、文字コード変換しないでそのままロケールがUTF-8の環境に持ち込み、
Shift_JISのコードをUTF-8ロケールのままコンパイルしたら、なりました。
詳しいバージョンまでは覚えてませんが、コンパイラはgcc 4.x.xだと思います。
もっとも私の場合は、コンパイラがマルチバイトに対応してないなどといった話ではないと思います。
# 改行がCRLFな環境で作ったテキストファイルを、改行がLFな環境で開いてfgetsしたら、
# 末尾にLFだけでなく、CRLFが読み込まれるってのにもハマった。
# なんであのマシン、nkf入ってないんだ……
1を聞いて0を知れ!
Re: (スコア:0)
Re: (スコア:0)
//コメントを禁止するのではなく、
//コメントにおいて次行に跨がらせるために行末に\を書くことを禁止すべき。
チェックはテキストフィルタでやればいいし、ついでに自動で無害化しちゃえばいい。
Re:最近はいない? (スコア:1)
失敗してデバッグに1日かかった私の体験談を。
VC++ で開発していてデバッグが済んだので g++ に持って行ったら
原因不明の謎の挙動を示して、頑張ってデバッグしたら原因がコレ。
# SJIS 対応製品と未対応製品を混ぜるな危険ということであればその通り.
Re: (スコア:0)
コメントの処理だけなら楽勝でも、その調子で色々やりだすときりがないし、ツールの保守の手間も無視できなくなる。 あと、自分が使うだけのツールなら何とでもなるけど、へぼいコンパイラのラッパーなんか書いた日には、何かあるたびに呼び出しを食らうおそれもある。
//コメントにおいて次行に跨がらせるために行末に\を書くことを禁止すべき。
わざわざフィルタをかますのに、なんで独自ルールを導入する必要があるの? ちゃんとマルチバイト対応したコメント除去処理をするだけでいいじゃん。
Re:最近はいない? (スコア:1)
というルールのほうが建設的ですね。ピリオドでもいいけど。
Re: (スコア:0)
そんなことしたら行数が減っちゃうじゃないですか
# おや、誰か来たようだ…
Re:最近はいない? (スコア:1)
>そんなことしたら行数が減っちゃうじゃないですか
じゃあ、無駄にステップ数を増やすテクニックが不要になったということでお願いします。
#まだ、1kステップあたり何円とかいう契約あるのですか?
#まあ、こっちは人月いくらなので大して変わらんですが・・・
Re: (スコア:0)
規模→金額はたしかに最近見掛けませんね。
COBOL全盛期は暗黙のうちに工数換算ができたからかも。
# で、金額を安くするのに想定規模を削ってくれるのはいいのだが、
# 共通化だのと言ってる割に、まったくアイディアが無いのは
# なんなのだ。