Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hirokisan/anti-pattern
アンチパターン学習用のリポジトリ
https://github.com/hirokisan/anti-pattern
Last synced: 9 days ago
JSON representation
アンチパターン学習用のリポジトリ
- Host: GitHub
- URL: https://github.com/hirokisan/anti-pattern
- Owner: hirokisan
- Created: 2019-11-03T14:11:50.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2019-11-08T13:01:14.000Z (about 5 years ago)
- Last Synced: 2024-05-05T15:20:29.496Z (8 months ago)
- Size: 5.86 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# anti-pattern
アンチパターンは設計の反面教師です
アンチパターンを理解すると落とし穴を避けられるかもしれません
## ソフトウェア開発
| 項目 | 状態 | 解決 |
| ---- | ---- | ---- |
| 肥満児(The Blob) | オブジェクトの肥大 | 分割 |
| お邪魔妖怪(poltergeist) | setter/getterのみのオブジェクト | 不要 |
| 溶岩流(lava flow) | プログラムの残骸 | 除去、アーキテクチャに基づく開発 |
| 打出の小槌(golden hammer) | 習慣依存 | ゼロベース思考 |
| スパゲッティコード (spaghetti code) | 解読困難 | 設計 |
| 切り貼りプログラミング(copy and paste programming) | 安易な流用 | 設計 |
| 曖昧な視点(ambiguous viewpoint) | 曖昧な用途 | 明確な用途 |
| 入力クラッジ(input kludge) | 甘い入力制御 | 入力バリデーション |
| 暗室栽培(mushroom management) | 情報欠如 | 情報公開 |## ソフトウェア基盤
| 項目 | 状態 | 解決 |
| ---- | ---- | ---- |
| システムのおんぼろ煙突化(stovepipe system) | コミュニケーション断絶 | 継続的リファクタリング |
| 砂上の楼閣(vendor lock-in) | 過度の外部依存 | 設計 |
| 組織硬直(design by committee) | ビジョン欠如 | ビジョン |
| 車輪の再発明 (reinventing the wheel) | 無知 | 調査 |## 組織
| 項目 | 状態 | 解決 |
| ---- | ---- | ---- |
| ドル箱商品 | 現状維持 | チャレンジ |
| 約束の拡大 | 決定維持 | 柔軟な変更 |
| 閻魔の組織管理 | 独裁 | x |
| モラル・ハザード | x | x |
| 縦割り | コミュニケーション欠如 | x |## プロジェクト管理
| 項目 | 状態 | 解決 |
| ---- | ---- | ---- |
| 分析地獄(analysis paralysis) | 分析過多 | バランス |
| デスマーチ(death march) | 無理 | 決断 |
| 集団思考(group think) | 浅慮 | 役割としての批判 |
| 手品師 | カモフラージュ | 事実共有 |
| ソフトウェアの肥大化(software bloat) | 肥大化 | プラグイン |## オブジェクト指向
| 項目 | 状態 | 解決 |
| ---- | ---- | ---- |
| 貧血ドメインモデル | ドメインロジックの欠如 | オブジェクト指向 |
| BaseBean | ユーティリティクラス継承 | 委譲 |
| スーパークラスの呼び出し | スーパークラスのメソッド | 設計 |
| 円-楕円問題 | 誤継承 | 設計 |
| 循環依存 | 双方依存 | 単方向依存 |
| 定数インターフェイス | x | x |
| 神オブジェクト | 過密結合 | 設計 |
| オブジェクトのゴミ溜め | 再利用不可の再利用 | 注意 |
| オブジェクトの乱交状態 | アクセス制限崩壊 | 設計 |
| シーケンスによる結合 | 結合 | 設計 |
| ヨーヨー問題 | 継承過多 | 設計 |## プログラミング
| 項目 | 状態 | 解決 |
| ---- | ---- | ---- |
| 偶発的な複雑性 | 非本質な複雑さ | グレーアウト |
| 遠隔動作(action at a distance) | 分散の相互作用 | 設計 |
| 盲信 | 思い込み | 確認 |
| ボートの碇 | 遺物 | 掃除 |
| ビジーウェイト | ポーリング | メッセージング |
| 失敗のキャッシュ | 残留キャッシュ | 削除 |
| カーゴ・カルト・プログラミング | 理解不足 | 訓練 |
| 特殊事項によるコーディング | 場当たり的な例外ハンドリング | 根本解決 |
| エラーの隠蔽 | 隠蔽 | 正直 |
| 例外によるプログラミング | 違反 | 準拠 |
| ハードコード | 埋め込み | 注入 |
| switchとループによる順序処理 | 無意味 | 設計 |
| マジックナンバー | 定義なき数字 | 定義 |
| マジックストリング | 定義なき文字列 | 定義 |
| ソフトコーディング | 管理の複雑性 | バランス |## 方法論
| 項目 | 状態 | 解決 |
| ---- | ---- | ---- |
| 発生しないであろう現象 | 思い込み | 認識 |
| 尚早な最適化 | 時期尚早 | タイミング |
| 書き直しプログラミング | 検討不足 | 設計 |
| 銀の弾丸 | 習慣依存 | ゼロベース思考 |
| テスター駆動開発 | 要求のバグ対応 | 管理 |## 参考
- [アンチパターン(wikipedia)](https://ja.wikipedia.org/wiki/アンチパターン)
- [アンチパターンってなに?](https://thinkit.co.jp/article/929/1)
- [やめた方が良いコーディング・設計、アンチパターン](https://qiita.com/peutes/items/ad046baa2428b522a133)
- [アンチパターン―ソフトウェア危篤患者の救出](https://www.amazon.co.jp/dp/4797321385)
- [継承とは?](http://www.fujigoko.tv/rev/prof/doc4/index.html)
- [君の継承の使い方は間違っている](https://qiita.com/tonluqclml/items/c0110098722763caa556)
- [結合度と凝集度!!](https://qiita.com/ozlee/items/64edb1cddab3a5a0bdb6)
- [プログラマが知るべき97のこと](https://プログラマが知るべき97のこと.com)
- [くたばれカーゴ・カルト・プログラミング](https://white-azalea.hatenablog.jp/entry/2017/05/16/002453)