私が読んだ唯一の開発者ブログでは、 SOのJoel-On-Software-Founder-of-SOの連中が、OOが生産性の向上につながらないことをずっと前に読んだ。自動メモリ管理が行います。涼しい。誰がデータを拒否できますか?
私は今でも、オブジェクト指向ではないオブジェクト指向に対して、関数を使用したプログラミングはすべてをインラインでプログラミングすることだと信じています。
(そして、私はGWBasicで始めたので、知っておくべきです。)関数を使用するようにコードをリファクタリングする
variable2654
と
variable3
、現在のメソッドになります。または、もっとわかりやすいように、名前がわかり、
関数が短い場合は、それが呼び出され
value
、完全に理解するにはそれで十分です。
関数のないコードがメソッドのあるコードになると、何マイルものコードが削除されます。
あなたは本当にOO、するコードをリファクタリングするとb
、c
、q
、とZ
なるthis
、this
、this
とthis
。そして、私はthis
キーワードを使用することを信じていないので、あなたはコードのマイルを削除することになります。実際には、あなたが使用していてもそれをやってもらいますthis
。
OOは自然なメタファーだとは思いません。
言語も自然な比喩だとは思いませんし、ファウラーの「におい」が「このコードはおいしくない」と言うよりも良いとは思いません。とは言っても、オブジェクト指向は自然なメタファーについてのものではなく、
オブジェクトがちょうど飛び出てくると考える人は基本的にポイントを逃しています。
あなたがオブジェクトの宇宙を定義し、より良いオブジェクトユニバースが理解しやすく、短いコードになり、より良い作品、またはこれらのすべて(およびいくつかの基準は、私は忘れています)。顧客/ドメインの自然なオブジェクトをプログラミングオブジェクトとして使用する人々は、宇宙を再定義する力を欠いていると思います。
たとえば、航空会社の予約システムを使用する場合、予約と呼ばれるものは、法的/ビジネスの予約にまったく対応していない場合があります。
基本概念のいくつかは本当にクールなツールです
たいていの人は、「ハンマーを持っているとき、それらはすべて釘である」ことを誇張していると思います。私は、コイン/ミラーの反対側も同様に真実だと思います。多態性/継承のようなガジェットを持っていると、手袋/靴下/コンタクトレンズのように適合する用途を見つけ始めます。OOのツールは非常に強力です。単一継承は、人々が夢中にならないようにするために絶対に必要であると私は思います。私の独自の
多重継承ソフトウェアは耐えられません。
OOPのポイントは何ですか?
非常に大規模なコードベースを処理するのに最適な方法だと思います。コードを整理して再編成し、それを実行するための言語(作業しているプログラミング言語以外)を提供し、コードを非常に自然で理解しやすい方法でモジュール化できると思います。
OOPは大多数の開発者に誤解される運命にあります
これは人生のような目を見張るようなプロセスだからです。OOは経験を積んで理解し、特定のパターンを避け、賢くなるにつれて他のパターンを採用し始めます。最良の例の1つは、自分が制御していないクラスの継承の使用をやめ、代わりに
Facadeパターンを使用することです。
あなたのミニエッセイ/質問について
私はあなたが正しいと述べたいと思いました。再利用性は、大部分がパイプドリームです。ここからは、そのトピック(素晴らしい)に関するAnders Hejilsbergからの引用があります。
初心者プログラマーにカレンダーコントロールの作成を依頼すると、彼らはよく考えます。そして、マンガー、そしてこれ、あれ、そしてその他。」カレンダーアプリケーションを2か月で出荷する必要があります。彼らはこのすべてのインフラストラクチャを制御下に置き、2日間かけてその上にくだらないカレンダーアプリケーションを作成しました。彼らは、「アプリケーションの次のバージョンでは、もっともっとやるつもりだ」と考えるでしょう。
彼らが抽象的なデザインのこれらの他のすべての具体化を実際にどのように実装するかについて考え始めると、彼らのデザインは完全に間違っていることがわかります。そして今、彼らは自分たちを隅に描いたので、すべてを捨てなければなりません。私は何度もそれを見てきました。私はミニマリズムであることを強く信じています。実際に一般的な問題を解決するつもりでない限り、特定のフレームワークを解決するためのフレームワークを試して配置しないでください。フレームワークがどのように見えるかわからないためです。