プロジェクト指向のソフトウェアの障害

フォーギャングによって書かれたパターンブックに精通している人なら誰でも、この本で説明されているパターンは、時間をかけてテストされたエレガントなソリューションであることを知っています。 残念ながら、継承コードからこれらのパターンを抽出することはできません。継承コードを書いたときにこれらのパターンを提案したことを誰も知らないためです。 したがって、次のテキストは大衆のパターンです。 このドキュメントに示されているパターンは、多くの問題を解決したソリューションです。 読書を楽しみますが、実際には使用しないでください!





焼却パターン(火葬パターン)




以下は、5つの焼けるようなパターンのリストです。



極度の貧困

極端な貧困パターンは、テストと保守が非常に難しく、莫大なコストにつながるソフトウェアの場合に明らかです。



盲目

Putter Slepetsは、プロジェクト要件の将来の変更を見ることなく、問題を解決します。 プログラマーがコードを書く過程で無駄な経験をしたためにパターンにそのような名前が付けられているのか、プロジェクトのサポートの段階で目を絞りたがっているのかはわかりません。



誤った方法

エラーメソッドは、極端なケースの処理に使用されます。 ロジックは正しく見えますが、誰かがそれをテストしようとした場合、または極端なケースがポップアップした場合、ロジックのエラーが明らかになります。



ProtoTry(プロトトライ)

Proto Attemptパターン-実用的なソフトウェアモデルを迅速かつダーティーに開発する試み。 当初、目標はすべての落とし穴を考慮してプロトアテンプトを書き直すことですが、スケジュールではこれが許可されていません。 Proto Attemptは後継コードとも呼ばれます。



シンプトン。 (シンプルトン)

シンプトンは、最も一般的なタスクに使用される非常に複雑なソリューションです。 このパターンを使用すると、スキルを使用して話す



破壊パターン




以下は、7つの破壊的なパターンです。



Adopter(アダプター)

養子の親は、失われた機能のためのシェルターを提供します。 結果は、異なる機能の巨大なジプシーファミリーです。 それらをつなぐ唯一のものは、養子の親です。



ブリーク

ブリークは、不良ソフトウェアのコンテナクラスです。 モジュールとも呼ばれます。



妥協

妥協パターンは、速度と品質のバランスを取るために使用されます。 その結果、不要な低品質のソフトウェアが作成されます。



起爆装置

起爆装置はしばしば発見されますが、特に気づかれていません。 典型的な例は、年の2桁の表現に基づく計算です。 この爆弾はその時を待っています!



リーキー(フロマージュ)

漏れやすいパターンには通常、穴がたくさんあります。 サポートを不可能にする多くの小さなダーティハックで構成されています。 この決定が古くなるほど、悪臭を放ちます。



飛行機(フライペーパー)

この飛行機は、あるプログラマーによって作成され、別のプログラマーによってサポートされています。 飛行機をサポートしなければならないプログラマーは、飛行機が良くないことに気づきます。したがって、原則として、飛び散ります。



エポキシ(ePoxy)

エポキシは、非常に密結合されたソフトウェアモジュールによく見られます。 接続性が向上し、ある時点でモジュールがエポキシで接着されているように見え始めます。



いたずらなパターン(誤動作パターン)




Sea of​​ Opportunities(可能性の連鎖)

可能性の海は、巨大で不十分に文書化されたモジュールにあります。 そのようなモジュールが何をするのかを完全に知っている人はいませんが、その可能性は無限に思えます。 非決定的とも呼ばれます。



コマンドー

コマンドを使用するのは、プロジェクトにすばやく侵入し、静かに仕事をして、それを忘れる必要がある場合です。 コマンドーは、カプセル化を解いて目標を達成できます。 そしてもちろん、彼は人質をとっていません。



スプレイヤー(Intersperser)

アトマイザーは、テスト、修正、または理解が不可能になるような方法で、システム全体に機能の一部を分散します。



扇動者

扇動者は質が良いように見えますが、システムのもう一方の端でカオスを徐々に作り始めています。



インパルス(運動量)

勢いは指数関数的に増大し、プログラムのサイズ、メモリ要件、複雑さ、稼働時間が増加します。



メディケーター

メディエーターは巨大な一時的な刺し傷であり、その存在により、システムの残りの要素が強力な鎮静薬の下にあるかのように機能します。



アブソルバー

元従業員が開発したシステムで発生します。 このソフトウェアに関連する歴史的な問題は非常に多く、現在の従業員は元従業員のすべてを非難しています。 「This-not-I-wrote」とも呼ばれます



ステーキ

ステーキは、管理者として再教育された開発者が作成したソフトウェアに含まれています。 このようなソフトウェアは、マネージャーが他の人に書き直すことをgeneしみなく提供する問題でいっぱいです。なぜなら、ソフトウェアはマネージャーの技術的スキルの単なるデモンストレーションであるからです。



パネギリック(ユーロジー)

Panegyricは、残りの22のパターンを考慮したプロジェクトに含まれています。 来世とも呼ばれます。



自発的な開発方法(テンペスト法)

自発的な開発方法は、ソフトウェアのリリース前の最後の数日間に使用されます。 コメントがなく、起爆装置を頻繁に使用することが特徴です。



ヘルレイザー(ビジターフロムヘル)

配列の境界のチェックがないことです。 システムの少なくとも1つのブロックには、重要なデータを上書きするHellRaiserのサポートが組み込まれていると考えられています。



PS読者は、翻訳の修正に参加するだけでなく、アンチパターンとその説明を作成することもできます(ロシア語のみ)。 ここにプルリクエストを送信します: github.com/allaud/resign_patterns



All Articles