Agent skill

refactoring-suggester

Suggest refactoring opportunities to improve code structure and maintainability. Use when improving code design or reducing complexity.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/refactoring-suggester

SKILL.md

Refactoring Suggester Skill

コードのリファクタリング提案を行うスキルです。

主な機能

  • Extract Method: 長いメソッドを分割
  • Rename: 分かりやすい命名に変更
  • Remove Duplication: 重複排除
  • Simplify Conditionals: 条件式の簡略化
  • Design Patterns: パターン適用提案

リファクタリング例

Extract Method

javascript
// Before
function processOrder(order) {
  // 検証
  if (!order.items || order.items.length === 0) {
    throw new Error('No items');
  }
  if (!order.customer) {
    throw new Error('No customer');
  }

  // 価格計算
  let total = 0;
  for (const item of order.items) {
    total += item.price * item.quantity;
  }
  const tax = total * 0.1;
  total += tax;

  // 保存
  const saved = db.orders.save(order);
  return saved;
}

// After: Extract Method
function processOrder(order) {
  validateOrder(order);
  const total = calculateTotal(order);
  return saveOrder(order, total);
}

function validateOrder(order) {
  if (!order.items || order.items.length === 0) {
    throw new Error('No items');
  }
  if (!order.customer) {
    throw new Error('No customer');
  }
}

function calculateTotal(order) {
  const subtotal = order.items.reduce(
    (sum, item) => sum + item.price * item.quantity,
    0
  );
  return subtotal * 1.1; // +10% tax
}

function saveOrder(order, total) {
  order.total = total;
  return db.orders.save(order);
}

Replace Magic Numbers

python
# Before
def calculate_price(item):
    if item.category == 'premium':
        return item.price * 0.9
    elif item.category == 'vip':
        return item.price * 0.8
    return item.price * 1.0

# After
DISCOUNT_RATES = {
    'premium': 0.9,
    'vip': 0.8,
    'regular': 1.0
}

def calculate_price(item):
    rate = DISCOUNT_RATES.get(item.category, 1.0)
    return item.price * rate

Simplify Conditionals

typescript
// Before
function getShippingCost(weight: number, distance: number): number {
  if (weight < 5) {
    if (distance < 100) {
      return 10;
    } else {
      return 15;
    }
  } else {
    if (distance < 100) {
      return 20;
    } else {
      return 25;
    }
  }
}

// After: Guard Clauses
function getShippingCost(weight: number, distance: number): number {
  const isLight = weight < 5;
  const isNear = distance < 100;

  if (isLight && isNear) return 10;
  if (isLight && !isNear) return 15;
  if (!isLight && isNear) return 20;
  return 25;
}

// Better: Lookup table
const SHIPPING_RATES = {
  'light_near': 10,
  'light_far': 15,
  'heavy_near': 20,
  'heavy_far': 25
};

function getShippingCost(weight: number, distance: number): number {
  const weightKey = weight < 5 ? 'light' : 'heavy';
  const distanceKey = distance < 100 ? 'near' : 'far';
  const key = `${weightKey}_${distanceKey}`;
  return SHIPPING_RATES[key];
}

バージョン情報

  • Version: 1.0.0

Didn't find tool you were looking for?

Be as detailed as possible for better results