1. ホーム
  2. design-patterns

[解決済み】アンチパターンとは何ですか?

2022-04-03 17:37:49

質問

パターンとアンチパターンを勉強しています。パターンについては明確に理解しているのですが、アンチパターンについては理解できていません。ウェブやウィキペディアの定義は私を大いに混乱させる。

アンチパターンとは何か、誰かわかりやすく説明してください。目的は何なのか?彼らは何をするのでしょうか?悪いことなのか、良いことなのか?

どのように解決するのか?

アンチパターン とは、ソフトウェア開発において、プログラミングの悪習慣とみなされる特定のパターンのことです。

とは対照的に デザインパターン アンチパターンは、一般的な問題に対する共通のアプローチで、形式化されており、一般的に良い開発手法と考えられていますが、アンチパターンはその逆で、好ましくはありません。

例えば、オブジェクト指向プログラミングでは、ソフトウェアをオブジェクトと呼ばれる小さな部品に分離する考え方があります。オブジェクト指向プログラミングにおけるアンチパターンは 神オブジェクト のような、別のオブジェクトに分離した方がよい機能をたくさん持っているものです。

例えば

class GodObject {
    function PerformInitialization() {}
    function ReadFromFile() {}
    function WriteToFile() {}
    function DisplayToScreen() {}
    function PerformCalculation() {}
    function ValidateInput() {}
    // and so on... //
}

上記の例では、以下のようなオブジェクトがあります。 すべて . オブジェクト指向プログラミングでは、コードの結合を少なくし、最終的に保守性を高めるために、異なるオブジェクトに対して明確に定義された責任を持つことが望ましいとされています。

class FileInputOutput {
    function ReadFromFile() {}
    function WriteToFile() {}
}

class UserInputOutput {
    function DisplayToScreen() {}
    function ValidateInput() {}
}

class Logic {
    function PerformInitialization() {}
    function PerformCalculation() {}
}

要するに、よく使われるパターンを使ってソフトウェアを開発する良い方法があるのです( デザインパターン しかし、ソフトウェアには問題を引き起こす可能性のある開発方法と実装方法があります。悪いソフトウェア開発手法とされるパターンはアンチパターンです。