オブジェクト指向の分析と設計(OOAD)を上手にするには?


26

優れたアナライザーおよびデザイナーになることは、開発者に大きな利益をもたらします。しかし、これには間違いなく障害があります。誰もがOOADに興味があるわけではなく、興味のあるすべての人が経路を知っているわけでもありません。優れたOOADは複数のOO言語を知っているべきですか?または彼/彼女はプロジェクトに失敗したはずですか?どうすればよいOOADになれますか?

回答:


34

興味のない人は自分の障害を作成しています。心配することはできません。

パスを知らない人のために、私は提案します:

  • 私が学ぶすべてのオブジェクト指向言語は、私をより良いオブジェクト指向開発者にすることがわかります。コミュニティを見つける限り、各言語から他の言語に多くのものを持ち込むことができます。
  • あなたは成功からよりも失敗から多くを学びますが、あなた自身の時間にそれをしようとします。専門的には、少なくともある程度は経験が豊富な人を信頼してください。しかし、「なぜ?」と尋ねることを恐れないでください。
  • SOLIDの5つの原則すべてを学び、それらが存在する理由を理解してください。いずれもルールではありませんが、迷子になったときの良いガイドラインです。
  • テスト駆動開発は、私がこれまでに学んだ何よりも、オブジェクト指向設計のスキルを向上させました。
  • アンダーエンジニアリングからオーバーエンジニアリングに移行して、正しいバランス(後者に近い)を見つけるまで、あなたはベストではありません。
  • 実際、2年後になると決して上手くはなれません。
  • たくさんの本やブログを読みますが、福音としては何も取りません。この業界は完璧な道をまだ見つけていないし、決して見つけないかもしれない。
  • 設計パターンは必ず学習しますが、使用する場所を探すのではなく、単にコミュニケーションの促進役として使用します。

そのいくつかが役立つことを願っています。


1
適切なリスト@pdr。+1
Saeed Neamati

5
+1「完璧な道をまだ見つけていない、見つけられないかもしれない」
オコド

1
+1「テスト駆動開発は、私がこれまでに学んだ中で最も優れたオブジェクト指向設計スキルの改善をもたらしました。」
ケビンクライン


ありがとう。私は、SOLIDディスカッションのプログラマーに
155852 /

5

OOモデルを十分に理解するには、OO以外のプログラミング手法で悲惨な失敗を経験している必要があると思います。オブジェクト指向の内部と外部を理解することはできますが、それを評価し尊重するためには、役に立たなかった古いさびたツールを置き換える光沢のある新しいツールでなければなりません。

大学レベルのJavaでオブジェクト指向を最終的に学ぶ前に、私は自分自身を7年間独学しました。それ以前は、これらのプロジェクトを絶えず構築していましたが、それらは非常に大きくなるので、一体何が起こっているのか忘れてしまいます。それらはかさばり、組織化されておらず、小さな変更を行うには多くのメンテナンスが必要です。基本的に、私は自分のコードが行き詰まっていて、常に新鮮な状態からやり直していることに気付きました。

私が採用した線形設計から頭を出すのに少し時間がかかりましたが、OOモデルを完全に理解すると、それはユーレカのようでした!私は自分ではるかに複雑なプロジェクトをコーディングすることができ、継承などの概念を学習した後、私の生産性は屋根を突き抜けました。客観的にはすべてが理にかなっており、それは直観的であるため、コードを書き直したり、やり直したりするのに時間を無駄にしません。

私の意見では、すべてのプログラマーはできるだけ多くの言語を知っている必要があります。これにより、OOであるかどうかに関係なく、よりベテランのベテランになります。OOを理解したら、これらの手法を使用して、実装されているすべての場所に適用できます。

私見、もしあなたが理解できないか、オブジェクト指向を学びたいと思わないなら、あなたは人生の戦場で不十分に装備されるでしょう。より多くの企業が新しいオブジェクト指向言語を使用しています。私はこの日、オブジェクト指向モデルを知らない理由は見当たりません

人がどのように学習するかに応じて、モデルをどのように学習したいかは彼ら次第です。個人的には、誰かが教えてくれたときに一番よく学べるので、Java IとJava IIのクラスに行くことは本当に大きな違いをもたらしました。大学でソフトウェアエンジニアリングの選択科目を受講するか、大学のコースにアクセスできない場合や暇なときに学習したい場合は、単にオンラインでOOチュートリアルを探すことをお勧めします。

それが私にどのように説明されたかを振り返ると、私は言います。リンゴはリンゴであり、オレンジはオレンジです。はい、両方とも木から落ちますが、それらは2つの全く異なる果物であり、あなたの調和があります。


1
関数型プログラミングで悲惨に失敗する、または手続き型プログラミングで悲惨に失敗するということですか?
アンドリューグリム

関数型プログラミングで惨めに失敗するが、習熟に失敗しない。私はその制限のために成功した実装に失敗することを意味します。
スタイラー

手続き型プログラミングではなく、関数型プログラミングを意味しましたか?
アンドリューグリム

非オブジェクト指向プログラミング。
スタイラー

2
OO以外の!=は想像力の範囲内で機能するため、これを編集することをお勧めします。物事は両方の場合もあります。
メイガス14

0

関心のある人にとってもそうでない人にとっても常に障害はありますが、状況と重大度は異なる場合があります。

オブジェクト指向の概念のために複数の言語を学ぶ必要はありません。好きな1つの言語から始めてください。しばらくすると、その言語に強い足がかりを得ることができます。すでに別の言語で同じことを実行してみてください。1つの言語の専門知識は、評価するベンチマークがあるため、新しい言語に切り替えるのに役立ちます。

どのプロジェクトも、成功よりも学習体験です。重要なのは、機能を最適に使用するためにどれだけうまく適合させたか、時には他のコードを読んで、その方法と理由を理解することです。メンターを獲得できれば、それは素晴らしいことです。これが選ばれる理由を常に知ってください、他の方法でそれをするのはどうですか。独自のロジックと設計モデルに取り組み、それを先輩/指導者に投げつけてみてください。このようにして、スキルを向上させることができます。おそらく最初はゴミ箱に直行するでしょうが、その後、あなたは間違ったことを試みて学びました。繰り返し、あなたはどんどん良くなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.