ができるデザインパターンを作るソフトウェアか[定休日]
-
10-07-2019 - |
質問
ができるデザインパターンを作るソフトウェアか
見たことがあるプログラムがそのファサードパターンのGUIと論理です。いると考えられないオブジェクト輸送することであり、プリミティブ型を使用するのが難しくなっています。
解決
何十年もの間、プログラマーはソフトウェアの作成に多くの時間を費やしてきました。悪いは、そのプラクティスがなぜ良いのかを学ぶのではなく、理解していないプラクティスを適用することです。特定のツールの使用/ keywords / frameworkesは、プログラマーが物事を台無しにしているだけで、洗練された気分にさせることができます。一般的な例:
- 多くのtry / catch / finallyブロックをスローすると、実際にはそうではない場合でも、エラー処理スキームがあるとプログラマーに感じさせることができます。
- SQLをストアドプロシージャに置き換えると、プログラマーは、実際にはそうでない場合でも、効率、再利用性、カプセル化を魔法のように提供するデータアクセスレイヤーを持っていると感じることができます。
- クラスを使用すると、多くのプログラマーは、オブジェクト指向プログラミングに従事していると信じていますが、実際にはそうではありません(またはオブジェクト指向のほんの一部に過ぎません)。
このリストは永遠に続く可能性があります。私たち人間は常にショートカットを探すので、この傾向は常に存在し続けています。現在、パターンが人気があるため、パターンでこれをよく見かけます。根本的な問題は同じです。開発者はソフトウェア開発の複雑さを尊重せず、盲目的に実装されたパターンや実践を考えることは学習と謙虚さの代わりになります。
解決策は?言いにくい。後輩デベロッパーにコード完了などを渡しても、間違いはありません。そのため、彼らがこれを理解できるようにすることは、原則を特定の状況に適用することであり、優れた開発者はそれをシンプルに保ちます。
他のヒント
誤用した場合、またはさらに悪い場合には、パターンを不必要に使用した場合。後者は、私がコードの一部を分析するとき、私は当然、最初にそこにすべての理由があると仮定し、何かの理由がわからないとき、最も安全なデフォルトの仮定は私が何かを見逃しているという理由で私を夢中にさせます。そして、未知のまたは予測不可能な方法でコードを壊す危険を冒したくないので、コードをいじる前にコードがそこにある理由を理解しようとして時間を無駄にします。
名前が シングルトン >
デザインパターンは、一般的なコード構造に名前を付けて文書化する方法です。そのため、すべてのパターンが良いパターンであると結論付けるべきではありません。デザインパターン(例:GoF)をドキュメント化するのに適した人は、パターンを使用するタイミングと使用しないタイミングを説明するセクションを常にパターンの説明に含めます。そのため、ほとんどのデザインパターンブックのポイントの半分は、「デザインパターンがソフトウェアを悪化させる可能性があるのはいつか」という質問に答えることです。
経験の浅い開発者の多くは、適切な使用法セクションを学習することを決して気にせず、不適切なパターンを適用することになります。これがデザインパターンを取り巻く多くの否定性の原因だと思います。
結論として、この質問への答えは本当に次のようになります。-設計パターンを読んで読んでください。
設計パターンは、誤用するとソフトウェアを悪化させ、間違った状況で適用する。常識は、デザインパターンの完璧な仲間となるはずです。
パターンの誤用は、問題に関連する力の理解の欠如に関連付けられている場合があり、パターンはその問題の解決策を提案しました。また、パターンの意図が誤解され、誤用につながる可能性があります。
パターンをよりよく理解するには、 Antiについても学習する必要があります。パターンの概念、GOFの本よりもはるかに多くを読んでください。 1つの提案は、パターンのハッチングを読んでGOFの概念を補完することです。
興味深いことに、過去1年間、デザインパターンとその実装を学習するためにかなりの時間を費やしてきました。デザインパターンに対する反発が増えているようです。デザインパターンは、ソフトウェアを定量化できるスキルにするはずのプロセスや方法論のランクに公平に参加しました。つまり、それらを使用すると、より良いコードを作成できるという誤りです。デザインパターンの問題は、スキルの低いプログラマが「ゴールデンハンマー」としてそれらを使用することだと思います。彼らは戦略パターンを学びます-これは価値のあることですが、それからどこでも使用し、コードを過度に複雑にし、不要な機能と「拡張性」を追加します。
既存のコードをクリーンアップしているため、パターンのリファクタリングには大きな価値があると思います。また、パターンは価値の高いコミュニケーションツールであり、コードをより高いレベルで説明できます。しかし、デザインパターンがクールで市場性がある(「再開駆動型開発」など)ため、ソフトウェアにデザインパターンを詰め込むことは悪い考えです。
簡単にするのが難しいこと(EJB)
問題のパターンが間違っている場合。
一般に、コーダーがソフトウェアを構築するレゴのようなレンガであるという態度を取ると、本当に奇妙なコードが得られます。
のソフトウェアがご利用の際はデザインパターンとして絶対のビルブロックの代わりとして青色の版画の解決に向け、符号化です。
いずれのブロックの問題は、骨.なのオブジェクトの命名規則.オブジェなどを行*と呼ばれる工場又は*シングルトン、その他のパターンの名前です。すべきではないロックされる特定のパターンです。
ばかりで本当に良い"原点"を一つの構築の複雑なコードが向上している。できる(すべ)ミックスのアイデアとして必要です。書類?そのコメントは、オブジェクトの名前空間...
れた。
これはアンチパターンと呼ばれます。例については、AntiPatterns:Refactoring Software、Architectures、and Projects in Crisis bookを参照してください。
たとえば、アンチパターンについてはこちらをご覧ください。
戦略パターンは、ソフトウェアが必要でない場合、それを悪化させる可能性があると思います。戦略パターンは基本的に機能を「プラグ可能」にします。つまり、異なる実装を即座に切り替えることができます。しかし、このプラグ可能な機能は、多くの場合、構成に多くの複雑さ(および場合によっては余分なオーバーヘッド)を追加し、必要でない場合は無駄です。このパターンは頻繁に乱用されています。
レヴィ、 特定のパターンを使用するのは、それが私の生活(およびコードの保守を担当するもの)を容易にする場合のみです。適切なデザインパターンの選択はコメントと同じくらい重要だと思います。おそらくコメントの方が重要でしょうか。設計パターンは、ほとんどの場合、開発者として私たちが長年使用してきた手法を正式に説明していることがわかります。
TheEruditeTroglodyte
誤解または誤用されたパターンは、コードを悪化させる傾向があります。また、パターンのためだけに適用されるパターン。 "私たちは今SOAです!"。 一般に、パターンが" code-smell "を導入する場合その使用は疑わしいはずです。
1つの問題を解決することに基づいてパターンを選択するときはいつでも、ソフトウェアが解決しようとするすべての問題ではありません。
逆に、考えられるすべてのユースケースに適合するようにソリューションを過剰に設計しようとすると、ユースケースの大部分に適合するには大きすぎる設計パターンを使用することになります。
したがって、理想的なパターン/そのパターンへの遵守のレベルは、2つの両極端の間にあるものになります。
デザインパターンがうまくいかない多くの方法が考えられます。 GoFの本は、それが話すすべてのパターンの問題、解決策、欠点を説明しています。 -パターンは問題の解決策です。その問題があなたの問題でない場合、それはおそらくアンチパターンになるだろう。 -パターンには欠点があり、それらに注意する必要があります。 -必要ないとき。パターンは多くのクラスを暗示している可能性があり、将来発生する可能性があるがまだ解決していない問題を解決しようとしています。 -どのように機能するか理解できず、間違って実装すると、アンチパターンにもなります。あなたは多くの役に立たないクラスとコードになってしまうでしょう。 -あなたがそれに夢中になり始めるとき。深すぎる階層、ポリモーフィズムやシングルトンの不適切な使用などが問題を引き起こす可能性があります。
おそらく他の理由もあります...
人々がコードを分析し、ビジネスロジックよりもパターンの理解に時間を費やすとき。パターンは優れていますが、関係者全員がパターンの読み方を知っている場合のみです。