パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

もうやらなくていい昔のコーディングテクニックあれこれ」記事へのコメント

  • by Anonymous Coward

    //コメントの記述で叱られる

    • Re: (スコア:2, 興味深い)

      「//」コメントのことでしたら、コーディング規約で禁止されています。
      #使用言語はC言語です。
      #「もうやらなくていい」というより「使ってもよさそうなのに禁止」されています。

      禁止になった理由は、コメントの最後に「\」となるマルチバイト文字をつかってしまい
      (本当はコメントにしたくなかった)次の行までコメントとなってしまったからです。

      #こういうのを「馬鹿基準」と言ってる人もいますね。
      #低レベルな人に合わせて無駄な禁止事項が増えていくという。

      無駄なコーディング規約より「DRY原則遵守」で。
      • Re:最近はいない? (スコア:1, すばらしい洞察)

        by Anonymous Coward on 2009年05月04日 20時37分 (#1559196)
        例に挙げられているケースだけで言えば,

        「コメントの最後に『\』となるマルチバイト文字を使ってはならない」

        よりも

        「『//』コメントは一切禁止」 もしくは 「日本語の『//』コメントは禁止」

        のほうが,わかりやすくて妥当なルールだと思いますが…. 「//」コメントを書くたびに禁止文字リストを使ってチェックしろとか,禁止文字を暗記しろとか言われるほうがむしろたまりません.

        そもそも,この場合で悪いのはマルチバイト対応が不十分なコンパイラであって,落とし穴にはまった人を「低レベル」呼ばわりするのは筋違いのように思います. 道具の側にくだらない制限があるなら,コーディング規約でくだらない制限をしなければならないのはやむを得ませんよね.

        P.S. 後学のためにどういうコンパイラと文字コードの組み合わせか教えてもらえませんかね?

        親コメント
        • by chigira (37573) on 2009年05月04日 21時00分 (#1559213) 日記
          確かに仰るとおり、悪いのはマルチバイト対応が不十分なコンパイラですね。ご指摘ありがとうございます。
          落とし穴にはまった人を「低レベル」呼ばわりした書き方になってしまっていました。
          #私としては、下らないコーディング規約を批判したつもりだったのですが、そうなっていませんでした。

          > P.S. 後学のためにどういうコンパイラと文字コードの組み合わせか教えてもらえませんかね?

          コンパイラはマイナーなやつなので伏せさせてください。文字コードはシフトJISだと思います。

          ただ、「//」コメントが一律禁止されているのは事実ですが、
          理由として挙げた「次の行までコメントになってしまった件」は
          又聞きなので、事実とは異なるかもしれません。すみません。
          親コメント
        • by greentea (17971) on 2009年05月05日 16時41分 (#1559572) 日記

          そのバグ、ハマったことあります。

          Shift_JIS環境で作ったソースを、文字コード変換しないでそのままロケールがUTF-8の環境に持ち込み、
          Shift_JISのコードをUTF-8ロケールのままコンパイルしたら、なりました。
          詳しいバージョンまでは覚えてませんが、コンパイラはgcc 4.x.xだと思います。

          もっとも私の場合は、コンパイラがマルチバイトに対応してないなどといった話ではないと思います。

          # 改行がCRLFな環境で作ったテキストファイルを、改行がLFな環境で開いてfgetsしたら、
          # 末尾にLFだけでなく、CRLFが読み込まれるってのにもハマった。
          # なんであのマシン、nkf入ってないんだ……

          --
          1を聞いて0を知れ!
          親コメント
        • by Anonymous Coward
          コメントの最後にwwを必ず追加するようにすれば万事解決ww
        • by Anonymous Coward
          なんで人間がチェックする必要があるのさ。

          //コメントを禁止するのではなく、
          //コメントにおいて次行に跨がらせるために行末に\を書くことを禁止すべき。

          チェックはテキストフィルタでやればいいし、ついでに自動で無害化しちゃえばいい。
          • by mkasa (12075) on 2009年05月04日 23時29分 (#1559274)
            折角なので//コメント+行末'\'をテキストフィルタでチェックしていたのに
            失敗してデバッグに1日かかった私の体験談を。

            VC++ で開発していてデバッグが済んだので g++ に持って行ったら
            原因不明の謎の挙動を示して、頑張ってデバッグしたら原因がコレ。

            //表
            top++;

            # SJIS 対応製品と未対応製品を混ぜるな危険ということであればその通り.

            親コメント
          • by Anonymous Coward
            ラッパーをかますのも手ではあるけど、状況次第じゃないかな。

            コメントの処理だけなら楽勝でも、その調子で色々やりだすときりがないし、ツールの保守の手間も無視できなくなる。 あと、自分が使うだけのツールなら何とでもなるけど、へぼいコンパイラのラッパーなんか書いた日には、何かあるたびに呼び出しを食らうおそれもある。

            //コメントにおいて次行に跨がらせるために行末に\を書くことを禁止すべき。

            わざわざフィルタをかますのに、なんで独自ルールを導入する必要があるの? ちゃんとマルチバイト対応したコメント除去処理をするだけでいいじゃん。

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

処理中...