Optimization convention-kiss

KISS (Keep It Simple, Stupid). 불필요한 복잡성을 금지한다. 단순한 해결책이 항상 우선이다.

install
source · Clone the upstream repo
git clone https://github.com/sunLeee/optimization
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sunLeee/optimization "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/reference/philosophy/principles/kiss" ~/.claude/skills/sunleee-optimization-convention-kiss && rm -rf "$T"
manifest: .claude/skills/reference/philosophy/principles/kiss/SKILL.md
source content

convention-kiss

@AW-017 | @docs/design/ref/team-operations.md § AW-017

KISS: 시스템은 가능한 한 단순하게 유지되어야 한다. 복잡성은 버그를 낳고, 유지보수를 어렵게 하며, 팀원이 이해하기 힘들게 만든다.

VIOLATION 1: 단순한 집계에 과도한 추상화

# VIOLATION: 단순한 합계 계산에 Strategy + Factory + Template Method 적용
class AggregationStrategy(ABC):
    @abstractmethod
    def aggregate(self, values: list[float]) -> float: ...

class SumStrategy(AggregationStrategy):
    def aggregate(self, values: list[float]) -> float:
        return sum(values)

class AggregationFactory:
    @staticmethod
    def create(strategy_type: str) -> AggregationStrategy:
        if strategy_type == "sum":
            return SumStrategy()
        raise ValueError(f"Unknown: {strategy_type}")

# 사용: 단 한 번, sum만 사용
factory = AggregationFactory()
strategy = factory.create("sum")
result = strategy.aggregate([1, 2, 3])
# CORRECT: 한 줄로 충분
result = sum([1, 2, 3])

# 또는 pandas vectorization
result = df["demand"].sum()

VIOLATION 2: ADK tool에서 불필요한 중간 레이어

# VIOLATION: 단순한 데이터 로딩에 과도한 추상화 계층
class DataSource(ABC):
    @abstractmethod
    def fetch(self) -> pd.DataFrame: ...

class CSVDataSource(DataSource):
    def __init__(self, path: str) -> None: self.path = path
    def fetch(self) -> pd.DataFrame: return pd.read_csv(self.path)

class DataSourceFactory:
    def create(self, source_type: str, path: str) -> DataSource:
        if source_type == "csv":
            return CSVDataSource(path)
        raise ValueError(source_type)

def load_demand_data(tool_context: ToolContext) -> pd.DataFrame:
    factory = DataSourceFactory()
    source = factory.create("csv", tool_context.state["app:demand_file"])
    return source.fetch()
# CORRECT: 직접 읽기로 충분 (현재 CSV만 사용)
def load_demand_data(tool_context: ToolContext) -> pd.DataFrame:
    """수요 데이터를 로드한다.

    Logics:
        state에서 파일 경로를 읽어 CSV를 반환한다.
    """
    return pd.read_csv(tool_context.state["app:demand_file"])
# Parquet 지원이 실제로 필요해지면 그때 추상화 (YAGNI와 연계)

관련 CLAUDE.md 규칙

규칙위치내용
@AW-017@docs/design/ref/team-operations.md § AW-017KISS — 단순한 해결책 우선
@AW-019@docs/design/ref/team-operations.md § AW-019YAGNI — 필요할 때만 구현
Simplicity FirstCLAUDE.md § LLM 행동지침No abstractions for single-use code

참조

  • @docs/design/ref/team-operations.md § AW-017
  • @.claude/skills/convention-yagni/SKILL.md
  • @.claude/skills/convention-solid-srp/SKILL.md