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?