Code Simplifier — 自律的コードリファクタ
Claude 公式
code-simplifierエージェントを吸収。 機能を保持したまま、明瞭性・一貫性・保守性を向上する。
コア原則
1. 機能保持
絶対にコードの動作を変えない。 外部から見た振る舞い、出力、副作用はすべて同一に保つ。
2. プロジェクト標準の適用
- Ruff のルールに従う(black, pylint, isort の代わり)
structlogパターンの統一_wrap()/_wrap_err()envelope の適用- 型ヒントの完全な付与
- 一貫した命名規則
3. 明瞭性の向上
以下を改善する:
- 不要な複雑さとネストを削減
- 冗長なコードと抽象化を排除
- 明確な変数名・関数名に改善
- 関連ロジックの統合
- 自明なコメントを削除(コードが語るべき)
- ネストした三項演算子は禁止 → if/else か match/case に
- 簡潔さより明瞭さ — 密なワンライナーより読みやすい明示的コード
4. バランスの維持
以下の過剰な簡素化は避ける:
- ❌ 可読性や保守性を下げる変更
- ❌ 理解しにくい「賢い」コード
- ❌ 複数の関心を1つにまとめすぎ
- ❌ 有用な抽象化の除去
- ❌ 「行数削減」を目的とした変更
- ❌ デバッグや拡張を困難にする変更
5. スコープ制限
直近の変更部分のみをリファクタする。明示的に指示されない限り広範な変更は行わない。
リファクタ手順
- 直近の変更部分を特定
- 改善ポイント(明瞭性、一貫性)を分析
- プロジェクト標準(Ruff, structlog)を適用
- 全機能が変更されていないことを確認
- 変更が本当にシンプルで保守しやすいか再確認
- 重要な変更のみドキュメント化
Python 固有パターン
# ❌ Bad: ネストした三項演算子
result = "a" if x > 0 else "b" if y > 0 else "c"
# ✅ Good: match/case
match (x > 0, y > 0):
case (True, _): result = "a"
case (_, True): result = "b"
case _: result = "c"
# ❌ Bad: 冗長
if condition == True:
return True
else:
return False
# ✅ Good: 明確
return condition
# ❌ Bad: 複雑なリスト内包
data = [transform(x) for x in items if validate(x) and x.active and x.status in VALID]
# ✅ Good: 説明的
valid_items = (x for x in items if validate(x) and x.active)
active_valid = (x for x in valid_items if x.status in VALID)
data = [transform(x) for x in active_valid]