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

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

  • あれを未だにやめず使う人の気が知れんです。
    • Re: (スコア:3, 参考になる)

      アプリケーションハンガリアン [joelonsoftware.com]は結構有効な気はします。
      char szHogeHoge[64]のようなシステムハンガリアンを使うことについては、僕も大嫌いですが。
      • Re: (スコア:0, すばらしい洞察)

        by Anonymous Coward
        > アプリケーションハンガリアンは結構有効な気はします。

        同意しない。だって、そういう目的なら、それ用の型を準備して使えばいいわけで。
        暗黙に決めた名前ルールでどうにかしようなんて馬鹿げてて、型でシステマティックに解決するべきです。Javaのような部類の言語(静的型付言語)ならそれができるよね。

        けっきょく、ハンガリアン記法なんてものは、静的に型を明示できない言語で型名を変数名に入れているだけだよね。しかもアドホックに。
        • by Anonymous Coward
          アプリケーションハンガリアンをご存知ないようですので軽く説明しておきますと、
          例えば、X座標を保持する変数にはpx、重さを保持する変数にはkgというプリフィックスを付けましょうということです。
          そうすれば、pxA + kgX という式は誤りである可能性が非常に高いということが字面だけでわかります。

          これは型でどうこうできるものではないのは理解いただけると思います。
          (むろん言語のほうでどうにかすべきで、curlではなんとかしていますが)
          • >X座標を保持する変数にはpx、重さを保持する変数にはkg

            用にそれぞれ別の型を宣言してやればいいんですよ。

            >そうすれば、pxA + kgX という式は

            コンパイラがワーニングかエラー吐いてくれますよ。こんな機械に判定させておけば良い物に人間が煩わされるなんて馬鹿馬鹿しい。

            普通ここまでやらないのはパフォーマンスがどうとか使い勝手がどうとかいう話が絡んでくるからで、アプリケーションハンガリアンなんてもんは所詮妥協の産物ってこった。

            • Re: (スコア:2, すばらしい洞察)

              by Anonymous Coward

              プログラミングの経験の少ない人は型でなんでも出来ると思いがちなんだけど、例えば
              pxA + pxB という式は要注意だが、
              (pxA + pxB) / 2 という式は平均を取っているのでたぶん問題なし、
              ということを読み取りたいわけ。

              ハンガリアンの目的はコードの可読性を高めることにあるので、型とは目的からして違うんだよ。

              • by Anonymous Coward
                いつの間にか例と話が摩り替わってるね。
              • Re: (スコア:1, 興味深い)

                by Anonymous Coward
                難癖つけてるんでなければ、どこがどうすり替わっているのか具体的に指摘してくだちいいい。訂正します。
                何にせよ後から書いたほうがより正確ですので、そちらを参照してください。
              • by Anonymous Coward

                >指摘してくだちいいい

                釣りか自覚してないのか迷うなあ。

                >pxA + kgX

                は型が違うので足してはいけないって話が

                >pxA + pxB

                いつの間にやら同じ型になって全然違う話に。「同じ型だから安全ぽいよ!」と言いたいならそれこそ型でやるべきだし、そもそも変な命名規則を使わずとも変数の名前からそれが読み取れないような名前をつけてる時点で落第なんですよ。

              • by Anonymous Coward
                ああ、例が悪かったかな。後者の例のほうがより適切です。
                つまり

                (pxA + pxB) / 2 という式なら、これは二つの値の平均を取っているわけだから、この部分だけ見てもおそらく正しいことが読み取れる。
                これが、単に

                pxA + pxB という式だった場合には、バグの可能性があるので要注意、この周りのコードにも気をつけましょうということが分かる。
                しかし必ずしも間違ったプログラム片とは限らないので、コンパイラに排除させるわけにはいかない。

                > そもそも変な命名規則を使わずとも変数の名前からそれが読み取れないような名前をつけてる時点で落第なんですよ。

                学生さんかな?本当にチームプログラミングをやったことがないんだろうね。
                俺たちは仕事でプログラムを書いてるわけ。意思疎通がうまく行かなかった場合に、俺は悪くない、悪いのは君だ、君は落第!じゃすまないのね。
              • by Anonymous Coward

                正論をぶつけられると反論できずに相手を学生呼ばわりして逆切れするのは半端な能力しか無い人間によくある悪い癖ですね。

                アホな仕事相手を巧く処理できず、さりとて仕事相手を選ぶ事も出来ない境遇には同情します。

              • by Anonymous Coward
                よっぽど気に障ったようですが、学生さんには学生さんには何かあるのでしょうか。
                (職業プログラマの経験がないことを否定もしてませんし、嘘をつかないだけの倫理性があるので安心しました)

                「型は次元や有向ベクトルと位置ベクトルの区別を扱えない」という私の説明に、あなたは何の反論もできていません。
                (私が例を挙げて説明していますので、あなたも俺様の主張だけでなく、例を挙げて説明する必要があります)
                あなたがせいぜいしていることは「ハンガリアン記法はごちゃごちゃしている(=ので馬鹿が使う記法だ)」という主張だけです。

                ハンガリアン記法が冗長であることは否定しえない事実です。が、あなたの主張する「識別子は意味に応じた名前」もまぎれもなく冗長なものです。
                これは「識別子は他の名前に変更してもプログラムの意味は変わらない」という事実に基づくものですから、否定のしようはありません。重要なことは「冗長さは人間にとって役に立つ」ということです。
              • by Anonymous Coward on 2009年05月06日 16時20分 (#1560014)

                >「識別子は他の名前に変更してもプログラムの意味は変わらない」という事実に基づく

                ちょっと待て。それは「冗長」という概念をなにか勘違いした説明だぞ?
                二人とも勘違いしてるのか、それとも一方だけなのか、は追求しないが。

                識別子がそういう意味で冗長だというなら、ためしに、
                A,B
                という二つの変数が有る場面において、
                BをAにリネーム
                してみるといい。プログラムは瓦解する(=意味がかわる)から。

                >「冗長さは人間にとって役に立つ」

                ちょっと違う。人間に読み易いものは人間にとって役立つ、だ。
                それが冗長であるかどうかとは直接は関係ない。

                通し番号的とかランダム的なやりかたで生成した、かつ「冗長さを含んだ」識別子を
                沢山作った場合、読み易くなるかというとそんなこたぁない。
                冗長だけど人間に読みにくいものなんて、いくらでも作れる。

                てか、なんの話をしてるんだ…?

                親コメント
              • by Anonymous Coward
                > A,B
                > という二つの変数が有る場面において、
                > BをAにリネーム

                それでは識別子の体をなしていませんが。

                > それが冗長であるかどうかとは直接は関係ない。

                「好きな識別子名を選べる」ことがすなわち冗長さです。
                この冗長さを用いて、人間にとってわかりやすい名前をつけるわけです。

                変数名が登場順にa,b,c...と固定されていてプログラマは選べない言語を考えてみるとわかるかと思います。
                (数学なんかは似た感じですね)
              • by Anonymous Coward
                わざと変な方向に誤解し、その誤解に対して批判を加えるとは、いったいどんな自虐プレイ?

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

処理中...