質問

オブジェクトはコードの再利用に関しては配信されていないと言っているとよく聞いてきました。同意しますか?あなたが彼らがそうでないと信じているなら、なぜそうしないのですか?

役に立ちましたか?

解決

いいえ、必ずしもそうではありません。

オブジェクトは、より良いセマンティクス、コード/機能の構成、そしておそらく使いやすさを提供します。

よく設計されています ライブラリ オブジェクト自体ではなく、コードの再利用の約束を提供します。

他のヒント

正直なところ、「コードの再利用」が実際に誰もが求めているのか(少なくとも後にいるべきか)かどうかはわかりません。私の哲学は「ソフトウェアコンポーネント」です。これは、優れたインターフェイスと不必要なカップリングを回避することにより、保守性を向上させることを意味します。 「コードの再利用」は、時々それから落ちるものの1つです。不必要に複製されたコードは、間違った方法で物事を整理し、もちろん維持するのが苦痛であることを示す兆候です。

もう少し直接質問に答えるために、自分自身を繰り返すことを避けるためのかなり良いツールのコレクションがあります:相続、特性、代表団、高次機能など。あなたが私に尋ねると、彼らはそれを少し使いすぎる傾向があります。たぶん、それは「OO sucks」雰囲気のいくつかが出てくる場所です。

いいえ、「オブジェクト」はコードをより簡単またはより一般的に再利用していません。モジュラープログラムでコードが再利用されるのを防ぐ同じ懸念(汎用APIの設計、テスト、文書化には、1回限りのルーチンを書くよりもかなり前向きな努力が必要であり、すべての取引のジャックはNoneのマスター - 再利用することを目的としたロジックは、実際に使用される使用については十分に最適化されていない場合があります)OOプログラムに適用されます。コード。

OOは、多くの問題の便利な抽象化ですが、80年代から90年代の誇大広告に注意してください。睡眠中にワッフルを作る以上に、貿易の根本的な問題を魔法のように解決するものではありません。

すべてのオブジェクトが再利用されるとは思わないが、多くの異なるプロジェクトで再利用するオブジェクトがたくさんある。また、1つのプロジェクトで再利用されるオブジェクトもあります。多くの場合、同じビジネスオブジェクト(またはデータ転送オブジェクト)と、Click-Onceデスクトップアプリ、Webアプリ、およびすべて同じプロジェクトの電話アプリからビジネスロジックオブジェクトを消費します。

OOが再利用を提供しないとどこで聞いたことがありますか?そして、理由は何でしたか?おそらく彼らのオブジェクトのデザインは、彼らをそのような状況に強制しました...

一部のプログラマーは、あらゆる言語とスタイルでコピーして貼り付けます。

本当に優れたプログラマーは、ほとんどの言語でほとんどのコピーや貼り付けを避けることができます。

OOパターンは再利用を促進する傾向があると思います。私は非OOスタイルで記述されたJavaコード(データがCrappy ORMのためにコードから分離された)で、再利用は本当に悲惨でしたが、OOでは同じプログラマーがデザインでより良い仕事をしました(と再利用)。

また、セッター/ゲッター、スイッチステートメント、匿名の内部クラス、巨大な機能などの非OOパターンまたはOOアンチパターを使用する場合も、コードの再利用が下がってボイラープレートが上昇しました...大幅に。

詩私は人々が前の段落に問題があることを知っているので、少し説明します。

セッターとゲッターはOOの問題を引き起こします。オブジェクトのメンバー(オブジェクトは自分のメンバーを操作する必要があります)で操作できるため、他のクラス全体でクラスで動作するコードを分散し、セッター/ゲッター周辺の機能をコピーする必要があります。 。これはプロパティにも当てはまります。プロパティが簡単であるため、あらゆる状況で「良い」ものになることはありません。

匿名の内側のクラスのコードはまったく再利用できず、人々は多くのもの(リスナーなど)が本格的なクラスであることができることを忘れています。これは閉鎖にも当てはまります!匿名のインナークラスを使用してリスナーのようなものを実装した場合、コードをメソッドまたは独自のクラスに抽出して代わりに電話するよりも、実装をコピーして貼り付けるだけです。閉鎖は再利用性を改善することもできます。ただし、それらの使用方法によって異なります。

多くの場合、利用可能な機能は、コードの構築方法を形成します。 OOは、すべてのコードとそれがどのように相互作用するかを視覚化するのに役立つ場合、さらに強力ですが、それは別の質問です。

オブジェクトには、階段の再利用を提供する能力はありません。開発者は、ツールを適切に使用するように動機付けなければなりません。

ソフトウェアチームが、すべての詳細を頭の中に保持する際よりもテスト済みコードの再利用に高い価値を置くと、はるかに細かいオブジェクトとメソッドが表示され、より多くのコードの再利用が表示されます。

はい

OOPは、コードを再利用するより多くの方法を提供します

いいえ

銀の弾丸はありません

場合によります

あなたがそれに入れたもの、そしてあなたが見返りに期待したものについて!

はい。優れたオブジェクト指向プログラミングは、懸念、低カップリング、高い結束、および情報の分離を促進します。これらのことはすべて、再利用可能なコードにとって重要です。

OOPの主な利点は、再利用するのではなく、モジュール性と修正可能性であると主張しますが、それは別の質問です。

オブジェクトはコードの再スーを有効にしますが、そのため、そのための最もテクニックではありません。コードの再利用は、継承、多型、過負荷、テンプレートなどのオブジェクト関連の手法を通じて促進されると思います。

はい、彼らは、スーパークラスのClearyから拡張(継承)する能力はコードの再利用に貢献することです。誰もがどのように議論できるかはわかりません。スーパークラスの残りを使用しながら、クラスを拡張して1つのメソッドをオーバーライドするだけで、これがコードの再利用を支援していない場合、何がわかりません

もし彼らがこれまでのところ、コードの再利用の約束で配信されたのですか?はい、OOPを念頭に置いて書かれたプログラムが設計パターンを賢く適用する場合。そうでなければ、ほとんどはありません。しかし、Adobe Systems、GoogleなどがC ++またはJava、またはその他のOOP言語で書く大規模な非些細なプログラムの人気を見ると、OOPは段階的に段階的に進む前に長い道のりがあると思います。その時間は、この質問をするのにはるかに適しており、新しいパラダイムのために地上作業を提供するのに役立ちます。

ライセンス: CC-BY-SA帰属
所属していません softwareengineering.stackexchange
scroll top