mcpField
C
clean-general

clean-general

github.com/ertugrul-dmr開発208122 回インストール27 週間前に更新
リポジトリ

clean-general について

clean-generalは、一般的なクリーンコード原則に沿ったコードレビュー用スキルです。特にAI生成コードを対象に、意図の明確さや重複の回避、設計と境界条件を確認します。

主な機能

  1. 01知識の重複を避ける
  2. 02明確で意図の伝わる表現を優先
  3. 03条件分岐よりポリモーフィズムを選ぶ
  4. 04マジックナンバーを名前付き定数にする
  5. 05関数の責務を絞る
  6. 06境界条件を確認し不要コードを削除

活用シーン

  1. 01AI生成コードの重複をレビュー
  2. 02不明瞭または複雑すぎるコードの発見
  3. 03関数が単一の責務か確認
  4. 04境界条件や不要コードの点検

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ertugrul-dmr/clean-code-skills --skill clean-general

インストール後、Claude Code で/clean-generalを入力して読み込まれたか確認します。

詳細

一般的なクリーンコードの原則

重要なルール

G5:DRY(Don't Repeat Yourself)

あらゆる知識は、信頼できる唯一の表現を持つべきです。

# Bad - duplication
tax_rate = 0.0825
ca_total = subtotal * 1.0825
ny_total = subtotal * 1.07

# Good - single source of truth
TAX_RATES = {"CA": 0.0825, "NY": 0.07}
def calculate_total(subtotal: float, state: str) -> float:
    return subtotal * (1 + TAX_RATES[state])

G16:意図を曖昧にしない

巧妙さを求めず、明確にしましょう。

# Bad - what does this do?
return (x & 0x0F) << 4 | (y & 0x0F)

# Good - obvious intent
return pack_coordinates(x, y)

G23:if/else よりポリモーフィズムを優先する

# Bad - will grow forever
def calculate_pay(employee):
    if employee.type == "SALARIED":
        return employee.salary
    elif employee.type == "HOURLY":
        return employee.hours * employee.rate
    elif employee.type == "COMMISSIONED":
        return employee.base + employee.commission

# Good - open/closed principle
class SalariedEmployee:
    def calculate_pay(self): return self.salary

class HourlyEmployee:
    def calculate_pay(self): return self.hours * self.rate

class CommissionedEmployee:
    def calculate_pay(self): return self.base + self.commission

G25:マジックナンバーを名前付き定数に置き換える

# Bad
if elapsed_time > 86400:
    ...

# Good
SECONDS_PER_DAY = 86400
if elapsed_time > SECONDS_PER_DAY:
    ...

G30:関数は1つのことだけを行うべきです

別の関数に切り出せるなら、その関数は複数のことを行っています。

G36:デメテルの法則(連鎖呼び出しを避ける)

# Bad - reaching through multiple objects
output_dir = context.options.scratch_dir.absolute_path

# Good - one dot
output_dir = context.get_scratch_dir()

適用状況チェックリスト

AI が生成したコードをレビューするときは、次の点を確認してください。

  • 重複がない(G5)
  • 意図が明確で、マジックナンバーがない(G16、G25)
  • 条件分岐よりポリモーフィズムを優先している(G23)
  • 関数が1つのことだけを行っている(G30)
  • デメテルの法則に違反していない(G36)
  • 境界条件が処理されている(G3)
  • デッドコードが削除されている(G9)

コメント