2010-12-13 7 views
3

OOPに関する多くの議論では、利便性が再利便性であると言われています。あなたはクラスを定義するために余分な作業を行い、後でそれらのオブジェクトの多くのインスタンスと拡張を作成できるようになります。手続き型からOOP型への切り替えはいつですか?

これは、オブジェクトの中にすべてを書き込むことのトレードオフが節約されるまでは、手続き型プログラミングからOOPプログラミングに切り替えるべきではないように思われる。

一般的に、手続き型プログラミングからOOPプログラミングに切り替えるのは良い時期ですか?あなたは、あなたのプロジェクトがそのスイッチを作る必要があることを知るために一般的に探している兆候や特徴はありますか?

+2

OOPは「唯一の道」ではありません、あなたはまだOOPではありませんよく組織再利用可能なコードを持つことができます。しかし、確かにOOPは自然なものであり、物事を楽にします。 – Kos

+0

PHPはハイブリッド言語です。手続き型またはすべてのOOP型のアプリケーションを構築する場合は、それを間違って使用しており、標準以下のAPIを生成する可能性が非常に高いです。 – mario

+0

@mario:それは面白いです。利用できる資料がありますか? – Jonah

答えて

3

非常に単純なアプリケーションではない場合、今は時間です。実際には、常にプログラムOOlyでなければならないと主張することができます。これは、今後プログラムを拡張したいときには難しくなるからです。

+2

これに同意してください。 10行のバッチスクリプトやそれに相当するものを扱っているのであれば、手続きコードを数行使用して作業を完了させるだけですが、しばらく使用する予定のものについては、 (100行程度以上のコード行)、私はあなたがoopに投資する方が良いと言いたいと思います。 – DarinH

4

私はこの質問が初心者の立場かパラダイムであると仮定しています。プログラマがオブジェクト指向のコードを書く経験があると、最初にこのアーキテクチャを使用してプロジェクトを作成することができます。実際、トップダウンのアプローチは、大規模なプロジェクトに莫大な時間を節約できると主張します。

ボトムアップのシナリオでは、あなたはそれを感じなければならないと言っています。一般的に言えば、さまざまなアプローチの詳細については、参考文献thisを参照してください。

PHPに固有の、私はあなたが移行のために、このアプローチを使用することができますと言うだろう:

  1. な限り多くのコード(すなわち: 関連の機能を)取るとファイルが含まに彼らに を置きます。
  2. そのファイルのコンテナクラスを作成します。あなたはstaticの方法でそれらを呼び出すことによって、または静的な(シングルトン)クラスを使用することによってすべての機能を使用することから始めることができます。
  3. プロシージャプログラミングの悪さであるグローバルデータ/静的関数の代わりに、徐々にインスタンスパラダイムに変換します。

このプロセスは、OOの機能と特長を学ぶうえで効果的です。それはまた、私の最初のポイントを教えてくれるでしょう:最初から良い(高次の)デザインのものから始めるよりも何かをオブジェクト指向に変換するのに時間がかかります。

+0

私はあなたに同意するのか分からない。私はあなたがそれを記述した正確な方法を作成した多くのWannabe-OOコードを見てきました。残念ながら、OOPの背後にある主な原則を理解することはできません。主なものは、オブジェクトが何であるか、それが何をすることができるか、何ができないか、または行かないかなどを理解することです。コードの再利用よりもOOには方法があります。また、私は手続き型プログラミングが悪いことに同意しない。すべてのオブジェクト指向プログラムにも手続き型コードがあります。ほとんどの場合、オブジェクト指向は動作する手続き型コードに依存しています(つまり、PHPはC言語でコード化されており、Javaもそうです)。 – netcoder

+0

私はそのような1つのプロジェクトにも取り組んできました。正しい方向に向かっていないということよりも適切に変換されていないということがより重要でした。 GOTOは常に「悪い」ではありません。手続き型プログラミングには場所があるかもしれませんが、私はそれを受け入れます。しかし、まだ私がリードしているプロジェクトにはまだ道を見いだしていません:) – zanlok

+0

p.s.最近ではC#を何とかしているし、強く型付けされたシステムの利点が明らかになってから、より大きなアーキテクチャーモデルも大部分はおそらくOOが理由のために未来の波になったことに同意するだろうか? – zanlok

1

文脈によっては違うと思います。既存のOOPフレームワークを使用するグラフィックスアプリケーションでは、瞬間的なトレードオフがあります。状況によっては手続き型のGUIコードを記述する必要があります。

しかし、生データ処理を行い、OOPフレームワークとの相互運用性がない場合は、OOPが理にかなっていない可能性があります。

1

プロジェクトでOOPに切り替えるのは非常に時間がかかることがあります。それは多くのコーディング、大量のテスト、そしてたくさんのリファクタリングを必要とするので、利益があるとは思えません。 OOPの全体概念はPPとは異なります。

私はプロジェクト内で切り替えることはお勧めしませんが、OOPをできるだけ早く新しいプロジェクトに使用することをお勧めします。あなたが快適に感じるときは、既存のプロジェクトのOOPデザインを考え始め、徐々にOOPで機能を実装することができます。しかし、それはたくさんの作業になるだろうし、おそらくプロジェクト全体を書き直すように感じるだろう。

0

私はあなたが切り替える必要がある兆候がどこかにあります。すべての誇大宣伝のために、私はOOPを大いに支持しています。コードの再利用は、OOP言語のほうがほんのわずかです。

OOPは、過去の機能のようにコードを整理するのに役立つ単純な別のツールです。それは素晴らしいと便利なツールです。しかし、主なメリットは、コードの作成と保守が容易になることです。

私がOOPに移行するには、ほぼ完全な書き換えが必要でしたが、スイッチの重要なメリットが明らかになるまでは、私は断るつもりでした。あなたのコードがうまくいけば、なぜ書き直すのか分かりません。

+2

_ "コードの再利用は多くの場合、OOP言語ではほんのわずかです。私の認識は、それが非常に簡単だということです。特にフレームワーク間でライブラリを移動する。 – Jonah

+0

はい、確かに簡単にできます。また、既存のコードを拡張するためのツールも提供します。実際には、より多くのコードを再利用する人は実際にはいません。私はOOPなしで再利用する巨大な図書館を持っている多くの人々(最近)と仕事をしてきました。それはただの観察です。あなたのマイレージは異なる場合があります。 –

0

それはタスクによって異なりますが、両方をやった、ここで私が考えるだろうかだ:

  1. あなたは仕事がモジュール性を必要と感じていますか?類似した物や異種のものを中央の場所から管理する能力?反復要素がたくさんあるのですか?迅速な開発や管理の変更が重要になるでしょうか?

  2. あなたが攻撃している問題が予測可能で反復的だと感じていますか?アルゴリズムを適用するか、解決するための手順を実行することで最も効果的なタスクですか?

さらに1の場合はOOP、そうでない場合は2のような場合は手順のアプローチに進みます。

ご不明な点がある場合は、お気軽にお使いください。

0

進行中のプロジェクトのプログラミングスタイルを変更することはほとんどありません。

エンティティ間でより明確な責任を求めたい場合は、手続き型コードに常にOO原則を適用できます。

ANSI-C

でOOコーディング上のインスタンス this very interesting bookのチェック
関連する問題