File size: 2,037 Bytes
eca5751
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
"""Code Refactor Skill - Tái cấu trúc code."""
from __future__ import annotations
from typing import List
from .base import Skill, SkillResult, SkillContext, SkillCategory, SkillPriority


class CodeRefactorSkill(Skill):
    """Refactor code: extract functions, simplify logic, apply design patterns."""
    
    category = SkillCategory.CODE
    priority = SkillPriority.MEDIUM
    keywords: List[str] = [
        "refactor", "tái cấu trúc", "cleanup", "dọn dẹp",
        "optimize", "tối ưu", "simplify", "đơn giản hóa",
        "extract", "tách", "restructure",
    ]
    
    @property
    def name(self) -> str:
        return "code_refactor"
    
    @property
    def description(self) -> str:
        return (
            "Refactor code an toàn: extract method/function, rename variables, "
            "apply design patterns, reduce complexity, eliminate duplication."
        )
    
    def execute(self, context: SkillContext) -> SkillResult:
        refactorings = [
            "Extract Function / Method",
            "Extract Class",
            "Rename (variable/function/class)",
            "Inline Function / Temp",
            "Move Function / Field",
            "Replace Conditional with Polymorphism",
            "Replace Inheritance with Delegation",
            "Replace Nested Conditional with Guard Clauses",
            "Introduce Parameter Object",
            "Replace Magic Number with Symbolic Constant",
            "Decompose Conditional",
            "Consolidate Conditional Expression",
        ]
        return SkillResult(
            success=True,
            output=f"[CodeRefactor] Suggesting {len(refactorings)} refactoring patterns.",
            metadata={
                "skill": self.name,
                "available_refactorings": refactorings,
                "preserve_behavior": True,
            },
            suggestions=[
                "Always run tests after refactoring",
                "Use git branches for safe refactoring",
            ],
        )