2009-05-08 7 views
17

私は自分の会社の開発者にデザインパターンに関するクラッシュコースを提供するつもりです(最近、いくつかの怖いコードに出くわした後)。デザインパターンに関するクラッシュコースの提案はありますか?

私が渡したい最も重要なことのひとつは、ここでの開発者がかなりの時間をかけているため、長期間と短期間の両方で時間を節約できるということです。私は、毎日のメリット - 早く家に帰ることができるもの - を実証する必要があります。

バグの少ない可能性があることを伝えると、おそらく家に帰ることはありません。私は沈んでしまうものが必要です。

私はたぶん1時間に3,4回のセッションを行います。あなたは何をやるべきかについて何か提案していますか?

+2

このクラスはどのように行きましたの? – jmucchiello

+0

Pluralsight:https://www.pluralsight.com/courses/patterns-library – ssmith

答えて

14

私の意見では、どのような教育コースの良いスライドもあります:
1)なぜここにいるのですか? (このコースの必要性はどこにありますか?)
2)私は何を習得すると思いますか?
3)誰がこのコースに参加しますか? (対象となる学生、前提条件とは何ですか?)
4)私が学んだことはいつ適用できますか?デザインパターンのためにあなたの
5)期待(参加、宿題、テスト、出席するために最小クラス、など)

私はいくつかのビジュアルツールや"job aids"を期待できます。
私はElements of Reusable Object-Oriented Softwareブックと同様の構造をたどる


1)UML - クラス図の概要
2)OOP - 抽象化、カプセル化、ポリモーフィズム、継承
3)凝集度とのカップリング
4)デザインパターンとは何ですか? - パターンの名前、問題、解決策、結果
5)なぜデザインパターンが覚えにくいのですか?
6)デザインパターンを使用する理由デザインパターンを適用する前に、コードの表示例、およびVince Hustonが行うようにした後、どのように見える - デザインパターン
8を選択する方法
7))どのようにデザインパターン
9を使用するには)の例で、様々なGoFデザインパターンをカバー彼のexamples
10)まとめ

すでに述べたように、デザインパターンは実際にアイデアなので、教えるときにアイデアを伝えなければなりません。設計パターンの問題、解決策、結果を理解していれば、パターンをコードに強制的に適用しようとするよりもはるかに良いでしょう(それは悪夢になるでしょう)。どこにどのパターン(もしあれば)を適用できるかの認識は本当の目標です。 Hustonの例は、コードの例をクラスに入れ、それを改善するためのパターンを特定できるかどうかを確認するのに本当に良いです。お役に立てれば。理解することがA Beginner’s Guide to Design Patterns

非常に簡単:ここ

+1

これは素晴らしい概観です。すべてのリンクとポインタをありがとう - おそらく私はもう少しセッションを行うことを見ていきます。 –

+0

私は何かが欠けていない限り、 "仕事の助け"のリンクが壊れているようです。 –

20

Head First Design Patternsは、スタートするのに最適な場所です。主流のデザインパターンをカバーしています。

Refactoring to Patternsも関心があります。

開発者ごとに書籍を購入することができない場合は、購入して周りに広げます。

+0

はすべての開発者向けの書籍ですか?私は望む。 –

+2

なぜですか?比較的安い本は、開発者の時間に比べて... –

+3

+1頭の最初のデザインパターン - 私はそれがJavaでC#ではなかったことに気づく前にそれを半分方法でした... – Pondidum

7

パターンは最初に覚えにくいです。私はthe GoF bookを頻繁に読んでいます。毎年別のパターンが私の頭の中に沈んだ。だから私の唯一のアドバイスは、最大2つのパターンを選択し、それを使って何を解決するのか多くの例に入るということです。

コンポジットは誰もが知っているものです。この上に、あなたが使用して通信できる名前があることを知ることが重要であるかもしれないことを説明することができます。パターンで重要なことは、他の人があなたの意図を容易に認識できるようにすることです。そして、この小さな名前はとても役に立ちます。

私は個人的に、OOベースの開発を扱うのに本当に良いテンプレートメソッドパターンを見つけます。これは、OOPがどのように起こるべきかに非常に近く、コーディングスタイルを改善する恩恵を受ける可能性があります。

+1

+1本当にパターンを学ぶために非常に難しいあなたがそれを見たまで*適切に実装 – RobS

+0

+1は間違いなく適切なものをヒットしようとしています... –

+0

はい、それはあなたの頭の中でこれがすべてであるかを見るために*クリック*が必要です。そして、あなたがそれらを学んだと誰かが何が違いがあなたが最初から再び始めることを尋ねる場合:) –

7

パターンを説明するためのほとんどの書籍のアプローチは、私が見たいと正反対です。彼らはパターンを取り、前提条件を説明し、何をしていないのかを示し、次に例を挙げます。私はむしろ具体的な問題を取り上げ、代替案を議論することが大事です。際立っているもの、つまり 'パターン'になるものは、それだけでそのようなものを紹介します。

a)easyとb)あなたのコードで使用される可能性が高いパターンを選択します。シングルトンは習得が容易です(サブジェクト/オブジェクトを伴わないため)。もう一つ興味深いのは観察者のパターンです。

+1

+1 ...私は '正しい'答えを選択するのは難しい問題があると思う... –

+3

+1パターンは長年の経験を凝縮した形で表しています。それを盲目的に本からコピーしても、その経験は得られません。徹底的に議論することは、 – palm3D

4

あなたはコース受講者にとってユニークな立場にあります。デベロッパーを知っていて、自分が作業しているコードを知っています。

恐ろしいコードの一部を見て、「これを改善するにはどうすればいいのですか?」というメッセージが表示されます。

これは、最終的にdesign patternsrefactoringの組み合わせになる可能性があります。しかし、既存のコードベースで作業している開発者にアプローチしようとしている場合は、適切かもしれません。

+0

+1のためのrefectoring !!!!これをお寄せいただきありがとうございます –

+0

これはすばらしいアイデアです。私たちのコードベースのコードを使って実際に家に帰るでしょう –

4

パターンを学習する際の問題は、書かれたコードで(通常は名前のない)パターンを見ただけで十分なソフトウェア体験があることです。オブザーバーを書いたことがないなら、パターンの説明を読むことは簡単にはできません。

パターンについて読んではいけないと言っているわけではありません。しかし、パターンを理解する自分の能力は、経験不足によって制限されることに注意してください。

パターンのもう1つの問題と問題は、存在しないということです。少なくとも、「ソフトウェア」が存在することはそれよりも少ない。パターンはアイデアとコンセプトです。実行可能なコードではありません。実行可能コードはパターンを実装できますが、その逆は存在しません。コードに「シングルトン」と入力するだけで、突然シングルトンが存在するわけではありません。 「訪問者」属性を追加すると突然すべての接着剤が訪問者パターンを実装する言語はありません。さまざまな言語のパターンのベストプラクティスと例がありますが、図書館にくっついて電話するだけのものではありません。

あなたが本当にやりたいことは、パターンを認識して使用することの中核であるベストプラクティスを教えることです。観察することは、(すべての形式の観察のために)教えることは非常に困難なスキルです。

パターンの第3の問題は、実際にはコーダのドメインではないということです。彼らは正式に理由のためにデザインパターンと呼ばれています。それらは最も適切に設計時の構成です。もちろん、既存のコードをリファクタリングするのに役立つパターンを使用できます。しかし、設計の議論を単純化するために、デザインパターンは専門用語ではありません。これが、シングルトンコードライブラリがない理由です。シングルトンを使用することは、コード自体ではなく、コードに対するアプローチです。

すべてのことは、あなたのプログラマーに設計パターンを教えようとすると傷つけることはできません。プログラマーに考えさせることは良いことです。パターンの表面的な理解以上のものがあれば、おそらくゲームの前に出てくるでしょう。がんばろう。

+0

うわー!私はあなたが正しいと思います - 残念ながら、開発者とデザイナーは同じです。私はパターンが主に実際の解決策を発動させるために使用されていることを確かに知っています。パターンを教えることは、単に「あなたの物事を正しくする」というだけでなく、それよりも奨励するよりも説得力があります。 –

2

このサイトをご覧ください:http://www.dofactory.com/Patterns/Patterns.aspx これは、さまざまな種類の創造的、構造的、行動的パターンに焦点を当て、構造的、実世界的、および.net最適化コードの例を示しています。これがうまくいきたいと思っています

+0

Googleにはじめてのヒット。間違いなくそこからいくつかのコード例を得るつもりです(多くの場合、コードは図よりも大きく語ります) –

2

はNettuts +からチュートリアルです。デザインパターンを開始するのに最適です。

このチュートリアルでは、明確に説明しています

  • たときに、なぜ彼らは
  • 各パターン
のために、PHPで、例を提供して使用する必要がありますデザインパターンが重要である理由

チュートリアルでは、次のデザインパターンについて説明しています。

  • Strategyパターン
  • Adapterパターン
  • ファクトリメソッドパターン
  • Decoratorパターン
  • Singletonパターン
関連する問題