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

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

  • 昔のコンパイラには識別子の長さについて制限のやたらきついものがあったので、無理やり短縮した名前にせざるを得なくなって自分でも何が何やらわけのわからない名前になってしまうことがありました。まぁアセンブラのニーモニックだってそのアーキテクチャに精通してない人にはたとえ規則性があったとしてもなんじゃこりゃ~なわけで、まぁあんな感じです。MASMだって識別子は確か31文字くらいに制限されていた時代があったはず。もっと古いアセンブラのラベルなんて8文字に制限されているものもあったり。

    というわけで、「無理やり短縮した識別子」は「もうやらなくていい昔のコーディングテクニック」です。

    --
    屍体メモ [windy.cx]
    • by Anonymous Coward
      今時、ループ変数に i を使ってるような酔狂な人はいらっしゃいませんか?

      #とか、わざと書いてみる。
      • by Anonymous Coward on 2009年05月04日 18時04分 (#1559126)

        それ自体に大した意味があるわけではない変数に大仰しい名前を付けると却って可読性が悪くなるような。

        「i, j, k といったら整数変数」のような古き良きお約束は、お約束が通じる状況でお約束を守っている分には理解の助けになるので、それ自体は現役のスタイルだと思う。

        でも、変数名に意味が無い i とか j とかを文脈無視して使いまわすのは勘弁な!

        親コメント
        • by backyarD (36899) on 2009年05月04日 20時26分 (#1559189) 日記

          お約束が通じる状況でお約束を守っている分には

          そうそう。ネストされているループの外側がjで、内側がiとかになってなければOKかな。

          あと、「もったいないからループ処理のあとでもう1回だけフラグとして使うよ」なんてエコなことを
          されていなければね。

          親コメント
        • by Anonymous Coward

          >「i, j, k といったら整数変数」のような古き良きお約束

          同感。
          なのだけど、グリフ的な問題として、iとjをミスタイプした挙句、ソースを眺めてもなかなか気づかなかった、
          という経験はしたことありませんか?
          いい解決案はないですかね。i の次は ii にするとか?

          • by zymase (12344) on 2009年05月05日 12時54分 (#1559460)

            自分は、スコープの長い変数には必ずdescriptiveな名前を与えるというルールで書いています。つまり、ループ変数でもループ自体が十分長ければ i ではなく意味のある名前を与えるということです。スコープが短く、一画面で見通せるくらいの長さならば i でもOKということにしてます。

            親コメント
          • Re:ループ変数 (スコア:1, 参考になる)

            by Anonymous Coward on 2009年05月05日 2時23分 (#1559335)

            別の角度からの解決策として、
            単語を検索したりハイライトしたりするのが得意なエディタ/IDEを使え、
            ってのもあります。

            たとえばvimなら「i」にカーソル合わせて「*」キーを叩けば、
            「i」が黄色とかにハイライトされます。
            むろん「j」はされません。
            「*」で捕捉されるのは単語単位なので「ii」とかもハイライトされません。

            ちょくちょく「*」で確認する癖をつけると、
            変数名取り違えの事故がだいぶ減りました。
            ていうか殆ど起こさなくなりました。
            これはかなり劇的な効果があったなあと思っています。

            Eclipse(のJava環境)でも、ある単語というか識別子にカーソルを合わせると、
            同じ識別子が灰色っぽくなりますね。

            親コメント
            • google の検索結果みたく、1つめは水色、2つめは黄色というような、 複数の単語をハイライト表示してくれるエディタ(ビューワー)ってないですかね。
              ログ解析の時に便利なんですけど。
              親コメント
              • by Anonymous Coward
                つ「Google Desktop」
              • by Anonymous Coward
                プログラマならその程度、簡単に書けるんじゃない?
            • by Anonymous Coward
              vimで * と # は頻繁に使いますね
              でもあれ、一画面を超える範囲で使われてる名前のミススペルを探すには使いにくいんですよね。
              あと、aVar に対して aVar_variant みたいな名前も柔軟に引っ掛けて欲しいときにちょっと困る。
              • by orangeful (21839) on 2009年05月05日 12時27分 (#1559449)

                1. * または # で検索履歴に「\」を拾う。
                2. / でキーワード検索に入り、Ctrl+P で「\」を呼び出す。
                3. 後ろの「\>」を消して再検索する。

                # ちょっと手順長いですかね?
                # でも g* ではダメなんですよね?

                --
                名物に旨いものなし!
                親コメント
              • by Anonymous Coward

                基本的にマッチなので、マッチ「しない」ことを探すミススペル探しには、あまり向いてないと思います。
                どちらかというと、期待する位置がハイライトされていないことを目視で見るという消極的なやりかたに…

                あと方向性というか用途が違うけど、柔軟ひっかけのために、
                ctagsのようなタグジャンプデータベース(?)作成ツールを「カスタマイズ」するという手もあります。
                特に最近のLinux DistroとかではデフォになってるExuberant ctagsだと、(Windows版もありますね)
                正規表現を使ったそれなりに凝ったタグジャンプ検出ルールを比較的楽に自作設定できるんで、
                お勧めです。
                よくありが

              • by Anonymous Coward

                よくわからないんですが、
                vimの「*」は「\」というパターンを検索バッファに入れるだけなのだから、
                「「\」を拾う」だけなら
                単に「/を叩いて\を入力する」だけでいいんじゃないでしょうか?

              • by orangeful (21839) on 2009年05月06日 1時56分 (#1559849)

                おっと失敬、化かしてしまいました。

                > 1. * または # で検索履歴に「\」を拾う。
                > 2. / でキーワード検索に入り、Ctrl+P で「\」を呼び出す。

                履歴に取り込んで再利用するのは「¥<aVar>¥」です。

                --
                名物に旨いものなし!
                親コメント
          • by the.ACount (31144) on 2009年05月05日 12時25分 (#1559448)

            ミスタイプは長い名前の方が起きやすいんじゃないか?
            (コピペonlyの人には関係ない話)

            --
            the.ACount
            親コメント
            • by Anonymous Coward
              エディタの補完機能くらい使えよ。
              • by Anonymous Coward
                書く時はいいとして、読むときは?
                紛らわしい名前を避けたとしても、眼や脳の負荷が違うと思う
          • by Deasuke (34806) on 2009年05月06日 18時26分 (#1560051) 日記
            そういうとき、(ループの中でiとjを両方使った式を書くときなど)はi1、i2にしたりします。もちろん意味のある名前を着ける方が適切と思われるときは着けますが。
            # ちなみに、私の場合はiteratorでも単順に列挙して順次処理する意味しかない場合はi, j, kを良く使います。
            --
            Best regards, でぃーすけ
            親コメント
          • by Anonymous Coward
            多重ループの最深部で、外ループ制御変数(i)と内ループ制御変数(j)をごちゃごちゃ使った数式書かなきゃいけないときにワケワカランことになったことは結構あるような。

            見易さという意味では、長い変数名でなおかつ似たような名前が大量に出てくる状況と件のi,jのようなもののどっちがマシなのやら。

            # SoCな組込みCPUのメモリマップドなペリフェラル用レジスタは名前が似ているのが多いから大変だぜい
          • by Anonymous Coward
            ループをネストする時は、i1、i2 という具合にしています。

            # 公私含め自分だけしか組まないので、わがままOK。

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

処理中...