“アンチパターン”についてのたった一つの大きな誤解

“アンチパターン”=“やってはいけない、こうあってはならない”という誤解

“アンチパターン”について不適切な解決策とか悪習といったように“やってはいけない、こうあってはならない”といったように認識している人が多い。

しかし、Wikipediaを見ると、不適切な解決策や悪習といったように“やってはいけない、こうあってはならない”とアンチパターンは明確に区別されている。

Anti-pattern – Wikipedia, the free encyclopedia
アンチパターン – Wikipedia

アンチパターン (英: anti-pattern) とは、ある問題に対する、不適切な解決策を分類したものである [1][2]。語源は、ソフトウェア工学におけるデザインパターンである。
主に失敗した開発プロセスに焦点を当てて失敗に陥るパターンを類型化する。そうすることで、そのような事例の早期発見と対応策に関しての提案を目的とする。
(中略)
AntiPatternsの著者によれば、アンチパターンと単なる悪癖、悪習などと区別するには二つの要素があるという。
・動作やプロセス、構造についての繰り返されるパターンで、最初は有益だと思えるが、最終的に悪い結果をもたらすもので、
・リファクタリングするための方法が存在し、文書化され、実例で証明されており、再現可能であること
数多く挙げられたアンチパターンは、矛盾した言葉を侮蔑的に用いた新しい用語で呼ばれ、可能なら避けられるべき、単なる誤り、未解決の問題、悪習以上の意味を持っている。「落とし穴」や「暗黒のパターン」とも呼ばれる別の呼び方があるが、これは、悪い問題の解決策が再発明されることを指す。こうしたアンチパターンの候補は、公式にアンチパターンとは考えられない。

アンチパターン

A well formulated AntiPattern also tells you why the bad solution looks attractive (e.g. it actually works in some narrow context), why it turns out to be bad, and what positive patterns are applicable in its stead.

上記による“アンチパターン”というものをソフトウェア以外にも適用できるように言い換えると

  • 最初はうまくいくように見えるが、実際にはうまくいかないことが繰り返される
  • うまく行く代替案が明確に定義している

となる。

そして、原文には存在しないが、上記2つに加えて、私は

  • 例外が明確に定義している

という条件もあるのではないかと考えている。

そもそもルールには例外がつきものだ。通常は“アンチパターン”であると思われるアプローチでも、状況によってはそれが適切である場合やその状況(コンテキスト)で打てる手の中で一番マシなものである場合もあると考えている。

ただ単純にどこかで覚えた、またはどこかの誰かが言った“アンチパターン”を杓子定規に当てはめて、“アンチパターン”=“やってはいけない、こうあってはならない”と認識するのは如何なものか、今一度考えて欲しい。