アンチパターンの日本語訳がひどい
Wikipediaのアンチパターンの記事(アンチパターン - Wikipedia)の日本語訳がひどい
翻訳の問題
だいたい岩谷宏のせい
アンチパターンのタイトルが日本人にはなじみがないものである
微妙なニュアンスが伝わりにくい
適切に意訳する必要があるが、
日本語訳が面白くない、というかつまらない、センスがない
直訳して、補足の解説を入れたほうがよい
ソフトウェア開発のアンチパターン
The Blob
❌肥満児
⭕人喰いアメーバ - anti-pattern
poltergeist
❌お邪魔妖怪
⭕ポルターガイスト - anti-pattern
オブジェクトに情報を渡すだけが目的のオブジェクト
lava flow
溶岩流 - anti-pattern
除去することが非常に困難で、結果が予測できないために悪い(冗長で品質の低い)コードを維持する
golden hammer
❌打出の小槌
金のハンマー
⭕ゴールデンハンマー - anti-pattern
気に入った方法が、あらゆるところで利用できると思い込む(銀の弾丸も参照)
spaghetti code
スパゲッティコード - anti-pattern
構造がほとんど理解できないようなシステム、特にコードの構造が誤っているもの
copy-and-paste programming
コピー&ペーストプログラミング
切り貼りプログラミング - anti-pattern
汎用的なコードを作らず、既存のコードをコピーし(改変して)使う
abstraction inversion
抽象化の逆転
利用者に必要な機能が表に出ていないため、同じ機能が上位の機能を使って再実装されてしまう
ambiguous viewpoint
あいまいな視点 - anti-pattern
(通例オブジェクト指向分析設計において)表現される視点を示さずに記述されたモデル
big ball of mud
泥団子、大きな泥だんご
構造が認識できないシステム
Database-as-IPC
データベースでIPC
より軽量なメカニズムがふさわしい場面で、データベースをプロセス間通信のメッセージキューとして使ってしまう
gas factory
石油精製工場
不必要に複雑な設計
gold plating
金箔
もはや更なる開発を行っても価値が向上しない業務やプロジェクトに対して作業を継続すること
inner-platform effect
内部プラットフォーム効果、内部プラットフォーム化
カスタマイズ性を持たせすぎ、基礎にしたプラットフォームの劣化したコピーとなってしまったシステム
interface bloat
インターフェースの肥大化
実装が極めて困難になるほどインターフェースを強力にしてしまうこと
magic pushbutton
魔法のボタン
抽象化を行わず、インターフェースコードの中でロジックを実装してしまうこと
race hazard
競合状態
イベントが想定と異なる順序で発生することを予見していないこと
input kludge
不適切な入力
入力クラッジ - anti-pattern
正しくない入力の検出や扱いの失敗
mushroom management
❌暗室栽培
キノコ栽培的組織管理
⭕マッシュルームマネジメント - anti-pattern
部下に情報を伝えなかったり、誤った情報を伝える(暗所で栽培する)
分析におけるアンチパターン
bystander apathy
傍観者効果
要求や設計上の判断が誤っているが、そのことに気づいた人間が、影響が大きいために見過ごしてしまう
ソフトウェア基盤のアンチパターン
stovepipe system
❌システムのおんぼろ煙突化
煙突システム
⭕ストーブパイプシステム - anti-pattern
コンポーネントの複雑な相互関連により、メンテナンスが困難なシステム
stovepipe enterprise
❌全社的おんぼろ煙突化
⭕ストーブパイプエンタープライズ - anti-pattern
vendor lock-in
❌砂上の楼閣
ベンダー依存
⭕ベンダーロックイン - anti-pattern
外部提供のコンポーネントに極度に依存したシステム
design by committee
❌組織硬直
⭕委員会による設計 - anti-pattern
多数の人間が設計に関与しているが、統一された考え方がないこと
reinventing the wheel
❌自作固執
⭕車輪の再発明 - anti-pattern
architecture by implication
❌文書化軽視 - 意味を誤解されやすい
⭕含蓄アーキテクチャ - anti-pattern
組織上のアンチパターン
cash cow
ドル箱商品
収益が上がっている古い製品に満足して、新しい製品に無頓着になること
escalation of commitment
約束の拡大
コミットメントのエスカレーション
後で誤っていると判っても、決定を取り消せないこと
management by perkele
閻魔の組織管理
異議を許さない、独裁的な組織管理方法
moral hazard
モラルハザード - anti-pattern
意思決定者が、意思決定の結果から隔離されていること
stovepipe
縦割り
ストーブパイプ - anti-pattern
上下方向の情報の流れが強く、組織間のつながりを禁じる組織構造
プロジェクト管理上のアンチパターン
analysis paralysis
分析地獄
アナリシスパラリシス
分析麻痺 - anti-pattern
プロジェクトの分析段階に、不釣合いなほどの労力を費やすこと
death march
デスマーチ - anti-pattern
プロジェクトが大失敗に終わることを CEO 以外全員が気づいているが、プロジェクトはデイ・ゼロ(ビッグバン)が来るまで無理やり存続させられる。あるいは、理解できない締め切りのため、従業員が深夜や休日まで勤務するよう共用される
death by planning
計画倒れ
デスバイプランニング - anti-pattern
project mismanagement
暴走プロジェクト
プロジェクトミスマネジメント - anti-pattern
irrational management
理性の欠落
イラショナルマネジメント - anti-pattern
group think
集団思考 - anti-pattern
集団の各メンバーが、同意が得られそうな領域以外の考え方を避ける
smoke and mirrors
手品師
誇大営業 - anti-pattern
未実装の機能を実装されているように見せる
software bloat
ソフトウェアの肥大化 - anti-pattern
システムの後続のバージョンに、より多くの人員が必要になる
scope creep
スコープクリープ - anti-pattern
オブジェクト指向設計のアンチパターン
anemic domain model
弱いドメインモデル
貧血ドメインモデル
ドメインモデル貧血症
ビジネスロジックが欠けたドメインモデル。オブジェクトは属性と振る舞い持たなければならないので、オブジェクト指向プログラミングではない
base bean
BaseBean
ユーティリティクラスに処理を委譲せず、継承して使ってしまう
call super
スーパークラスの呼び出し
サブクラスがスーパークラスのオーバーライドされたメソッドを呼び出さなければならないような設計
circle–ellipse problem
円-楕円問題
変更できない型から変更可能な派生型を作成する際の問題
circular dependency
循環依存
オブジェクトやモジュール間の直接的・間接的な依存関係を不必要に取り込む
constant interface
定数インターフェイス
インターフェイスを定数の定義に用いる
God object
神オブジェクト
設計の一部分(クラス)に、過剰に機能を集中させる
object cesspool
オブジェクトのゴミ溜め
再利用に必要な(暗黙のうちの)規則に合致しない状態のオブジェクトを再利用する
object orgy
オブジェクトの乱交状態
オブジェクト乱交状態
内部へのアクセスを制限なく許し、適切なカプセル化に失敗する
sequential coupling
シーケンスによる結合
メソッドが特定の順序で呼び出される必要のあるクラス
yo-yo problem
ヨーヨー問題
過剰な断片化により、理解するのが難しい構造(たとえば継承関係)
プログラミングのアンチパターン
accidental complexity
偶発的な複雑性、偶有的な複雑性
問題の解決に不要な複雑性を導入する
action at a distance
遠隔動作
遠隔作用
システムの大きく分散した部分同士が相互作用する
blind faith
盲信
バグ修正の正しさ、あるいはサブルーチンの結果を確認しないこと
boat anchor
ボートの碇
もはや使用されていない部分をそのままにしておく
busy spin
ビジーウェイト
何らかの事象が発生するのを待つ際に、メッセージングを使わずに、繰り返し確認することでCPUを無駄に使用する
caching failure
失敗のキャッシュ
回復された後も、エラーフラグをリセットしない
cargo cult programming
カーゴカルトプログラミング
パターンや方法論を理由を理解せずに用いる
coding by exception
特殊事項によるコーディング
特殊なケースが認識される度に、それに対応するコードを追加する
error hiding
エラーの隠蔽
エラーメッセージをユーザーに通知する前に捕捉し、隠蔽したり、安全なメッセージを見せたりする
coding by exception
例外によるプログラミング
プログラミング言語のエラー捕捉機構を、正常なプログラムのロジック記述に使用する
hard code
ハードコード
システムの動作環境についての仮定を実装に埋め込む
loop-switch sequence
switchとループによる順序処理
順序的な処理を、swtich文を使ったループ文の中に埋め込む
magic number
マジックナンバー
説明のない数値をアルゴリズムで使用する
magic string
マジックストリング
イベントの比較などのために、リテラルの文字列を用いる
soft code
ソフトコーディング
ソフトコード
ビジネスロジックをソースコードではなく設定ファイルに格納する
方法論のアンチパターン
improbability factor
発生しないであろう現象
発生しなくなる問題
エラーが発生するのはわかっているが、発生しないということにする
premature optimization
尚早な最適化
早すぎる最適化
初期の段階から効率を追求してコーディングし、良い設計やメンテナンス性を犠牲にしてしまう。時には現実の効率も悪化させてしまう
programming by permutation
書き直しプログラミング
組み合わせプログラミング/偶然にもとづくプログラミング
動くかどうかを見ながら、コードを徐々に変えて行くような方法
reinventing the wheel
車輪の再発明
すでに存在する十分な解決方法を採用しない
silver bullet
銀の弾丸
気に入った方法が、問題の大半を解決できると思い込む
tester-driven development
テスター駆動開発
新しい要求がバグ報告書で記述されるようなプロジェクト
構成管理のアンチパターン
dependency hell
依存関係地獄
必要とする構成要素のバージョンによる問題
DLL hell
DLL地獄
特にMicrosoft Windowsにおける、ダイナミックリンクライブラリ (DLL)の不適切な管理
extension conflict
機能拡張の競合
Mac OS Xより前のMac OSにおいて、オペレーティングシステムの同じ箇所に複数の拡張機能を追加した際に発生する問題
JAR hell
JAR地獄
JARファイルを使用しすぎ、Java クラスローダーのモデルを理解しておらず、バージョンや配置場所の問題を生じる
#anti-pattern