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

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

  • あれを未だにやめず使う人の気が知れんです。
    • 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 という式は

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

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

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

              おっしゃる通りで、どっちに寄りかかるにせよ、狂信的な原理主義者に現場が振り回されるのだけは勘弁して欲しいものです。

              しかしこの辺の議論を読んでいて思ったのですが、最近のトレンドではハンガリアンという代名詞を持ち出すまでもなく、変数や関数に「意味のある名称」をつけること自体、もはや時代遅れとされつつあるのでしょうか? 元々ハンガリアン記法が忌み嫌われていた一番の理由は、処理系の都合に過ぎない (組み込みの) 型という概念の為だけに名前付けが冗長になってしまうことであり、それは名前に対するセマンティクスの重視と、読みやすくメンテナンスしやすいプログラムソースの追求という命題に対する裏返しなのだと思っていたのですが。

              --
              むらちより/あい/をこめて。
              • by Anonymous Coward

                >変数や関数に「意味のある名称」をつけること自体、もはや時代遅れとされつつあるのでしょうか?

                そんな極端な。

                ハンガリアンは複数の意味を無闇やたらにオーバーロードした結果、意味が通りにくくなって本末転倒だから嫌われてるだけだと思いますが。

                コンパイラの型チェックに頼らなくても、今時はドキュメント自動生成方法が充実していたりIntellisenseのような手段も一般的になって人間が変な手間をかけなくても機械の方がなんとかしてくれるってことだけだと思います。

              • 御意。個人的には、その名前が用いられる文脈上において十分に意味の通る名前であるならば、それで十分だと思っております。

                --
                むらちより/あい/をこめて。
              • by Anonymous Coward
                > 御意。個人的には、その名前が用いられる文脈上において十分に意味の通る名前であるならば、それで十分だと思っております。

                その文脈をより小さく短く頑強にするためのものがハンガリアン記法などです。
                だから、あなたがたの主張は本末転倒なんですよ。

                そもそもハンガリアン記法は他の手法と排他的なものではありません。場面に応じて適宜使うべき物です。
                これかあれか、という視野の狭さが本末転倒を生んでいるように思えます。
                (システムハンガリアンの悪影響でしょうかね)
              • by Anonymous Coward
                > その文脈をより小さく短く頑強にするためのものがハンガリアン記法などです。

                今時、短くする必要なんてないし、前置記法にする必然性もない。

                20年前の方法をいまだに引きずってる馬鹿がいつまでも強情な言い訳をし続けているようにしか見えない。
              • by Anonymous Coward

                今時、短くする必要なんてないし、前置記法にする必然性もない。

                別に無理して長くする必要もない。意味がわかればそれでいい。
                前置記法で短く、わかりやすくすることはできるし、わかりやすいならそれは有用なことだし、短くてわかりやすくなるものをあえて使わない必然性はない。
                kgWater, klWater, klpsWater, kgcmWaterPress
                それぞれ、水量(kg), 水量(kl), 流水量(kl/s), 水圧(kg/cm2)な。

                型を記述するシステムハンガリアンはコンパイラに任せてもいいけど、コンパイラは識別子の意味をチェックしてはくれない。
                アプリケーションハンガリアンでやれば済むところを、いちいち型定義してコンパイラに無理矢理やらせようなんて、方向を間違ってる。

              • by Anonymous Coward
                型定義、そんなに大変ですか?
                コンパイラ以外にチェックするものをお持ちでないのですか?

                いったい、いつまで紙に鉛筆で書くようなレベルでコーディングしているんですか。
              • by Anonymous Coward

                意味を記述するところを、型定義で代用しようとする方向性が間違いだと言ってるんです。
                意味ごとに型を作って、型変換メソッドを起こしてまで機械にチェックさせるのはコストの無駄。

                コンパイラ以外にチェックするものをお持ちでないのですか?

                意味をチェックしてくれる機械が地上に存在するというなら、示してみなさい。

              • by Anonymous Coward
                あなたは型という意味で「意味」を使っていますね。

                > kgWater, klWater, klpsWater, kgcmWaterPress
                > それぞれ、水量(kg), 水量(kl), 流水量(kl/s), 水圧(kg/cm2)な。

                これらは型です。
              • by Anonymous Coward
                「述語Pを満たす値を保持する変数A」はハンガリアン記法ではたとえば AcPと書くことができますが、一般的には型では不可能ですね。
              • by Anonymous Coward
                型でOK
                P A;
              • by Anonymous Coward
                > 型でOK
                > P A;

                ほらね、型でOK派はやっぱり何もわかっていない馬鹿なんだよ。
              • by Anonymous Coward
                > ほらね、型でOK派はやっぱり何もわかっていない馬鹿なんだよ。

                ああ、あなたの指す「型」の範囲が、型OKな人の指す「型」の範囲より随分狭いのが
                議論の噛み合わない原因なんですね。

                という風に見えるけど、違うのかしら。

                # 型でOK派(正確には型だけでOK派)なんて、登場していないようにも見えるんだけど…
              • by Anonymous Coward
                議論が噛み合わないのは、建設的な議論ではなく、相手の発言を否定することに快感を求める人が紛れ込んでいるからだと思う。

                まず前提となる考え方として、
                ・機械にできることは機械にやらせる、人間にやらせない。
                ・銀の弾丸を求めない。地道なバグ対策を積み重ねる。
                ・バグ対策は、工程のできるだけ早い段階で行う。
                ということが、あると思います。

                アプリケーション・ハンガリアンを使うことで、コードを書く時点でのミスを減らせます。
                型(クラス)を適切に使うことで、コンパイル時点でミスを検出できる可能性を高められます。
                どちらか一方だけではなく、両方やったほうが、テスト工程に渡されるコードに含まれるミスは減ります。

                いちいち型を分けて正しい演算の組み合わせを定義するのは面倒だというのは、馴れていないからでしょう。
                あるいは、ツールによる支援を受けられないからでしょう。
              • by Anonymous Coward
                > アプリケーション・ハンガリアンを使うことで、コードを書く時点でのミスを減らせます。

                ハンガリアンはコードの可読性を高めるもの以外の何ものでもありません。
                もしコードを書く時点でのミスが減らせたとしたら、それは可読性が高まった結果にすぎません。

                > いちいち型を分けて正しい演算の組み合わせを定義するのは面倒だというのは、馴れていないからでしょう。
                > あるいは、ツールによる支援を受けられないからでしょう。

                前のコメントにも書きましたが、型は形式にすぎず、ハンガリアンとは本質的に異なります。
              • by Anonymous Coward
                >> アプリケーション・ハンガリアンを使うことで、コードを書く時点でのミスを減らせます。
                > ハンガリアンはコードの可読性を高めるもの以外の何ものでもありません。
                > もしコードを書く時点でのミスが減らせたとしたら、それは可読性が高まった結果にすぎません。

                補足説明ありがとうね。
                そういうしくみによってコードを書く時点でのミスが減らせるって意図で書いたのよ。

                > 前のコメントにも書きましたが、型は形式にすぎず、ハンガリアンとは本質的に異なります。

                あなたの言うハンガリアンと、私の言うハンガリアンは違うのかもしれませんね。
                ハンガリアン記法を編み出した人は、ハンガリアンが示すのはtypeと言っています。
                typeといってもC言語のtypeではなく、D言語のtypeのような意味で、typeと。
              • by Anonymous Coward on 2009年05月07日 16時25分 (#1560484)
                > ハンガリアン記法を編み出した人は、ハンガリアンが示すのはtypeと言っています。

                そうですね。
                そしてあなたのような人がシステムハンガリアンを生み出したわけですが。
                親コメント
              • by Anonymous Coward
                あなた、人の言ってることを理解しないまま、思い込みで話を進める人ですね?

                <a href="http://local.joelonsoftware.com/mediawiki/index.php/%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E8%A6%8B%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B">間違ったコードは間違って見えるようにする</a>
                を読んでから
                <a href="http://www.maroontress.com/Hungarian/">間違ったコードはコンパイルできないようにする</a>
                を読んでみて、よく考えてみてくださ
              • by Anonymous Coward
                joelのは例が悪いし、maroontressはバカだ。(一例に反論しただけで全て事足れりとする所が)
                君も後者?

ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家

処理中...