用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/microwind/ai-skills --skill kiss命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | KISS原则 |
| description | Keep It Simple, Stupid - 保持简单,避免不必要的复杂性。简单的设计更易理解、维护和扩展。 |
| license | MIT |
KISS 原则源自美国海军1960年代的设计理念:大多数系统保持简单而非复杂时运行得最好。
核心思想:
复杂性的代价:
// ❌ 过度设计:只是判断奇偶数
public interface NumberClassifier {
boolean classify(int number);
}
public class EvenNumberClassifier implements NumberClassifier {
@Override
public boolean classify(int number) { return number % 2 == 0; }
}
public class NumberClassifierFactory {
public static NumberClassifier create(String type) {
if ("even".equals(type)) return new EvenNumberClassifier();
throw new IllegalArgumentException("Unknown type: " + type);
}
}
// 使用
NumberClassifier classifier = NumberClassifierFactory.create("even");
boolean result = classifier.classify(4);
// ✅ KISS:直接写
public boolean isEven(int number) {
return number % 2 == 0;
}
# ❌ 过度设计:获取列表最大值
from abc import ABC, abstractmethod
class ComparatorStrategy(ABC):
@abstractmethod
def compare(self, a, b): pass
class MaxComparator(ComparatorStrategy):
def compare(self, a, b):
return a if a > b else b
class AggregatorService:
def __init__(self, strategy: ComparatorStrategy):
self.strategy = strategy
def aggregate(self, numbers):
result = numbers[0]
for n in numbers[1:]:
result = self.strategy.compare(result, n)
return result
# 使用
service = AggregatorService(MaxComparator())
result = service.aggregate([1, 5, 3, 9, 2])
# ✅ KISS
result = max([1, 5, 3, 9, 2])
// ❌ 复杂的条件判断
function getDiscount(user: User): number {
let discount = 0;
if (user.isPremium) {
if (user.years > 5) {
if (user.orders > 100) {
discount = 0.3;
} else {
discount = 0.2;
}
} else {
discount = 0.1;
}
} else {
if (user.orders > 50) {
discount = 0.05;
}
}
return discount;
}
// ✅ 简化:提前返回 + 扁平化
function getDiscount(user: User): number {
if (!user.isPremium && user.orders > 50) return 0.05;
if (!user.isPremium) return 0;
if (user.years > 5 && user.orders > 100) return 0.3;
(user. > ) ;
;
}
// ❌ 不必要的抽象层
public interface StringFormatter {
String format(String input);
}
public class UpperCaseFormatter implements StringFormatter {
public String format(String input) { return input.toUpperCase(); }
}
public class FormatterService {
private StringFormatter formatter;
public String process(String input) { return formatter.format(input); }
}
// ✅ KISS
String result = input.toUpperCase();
KISS 不等于偷懒:
❌ 没有错误处理
❌ 没有输入验证(在系统边界)
❌ 把所有逻辑塞在一个方法里
❌ 用全局变量代替参数传递
KISS 是关于"恰到好处"的复杂度:
✅ 满足当前需求
✅ 代码可读
✅ 逻辑清晰
✅ 容易修改
代码复杂性信号:
□ 方法超过 20 行
□ 嵌套超过 3 层
□ 参数超过 4 个
□ 一个方法中有超过 3 个 if-else
□ 类超过 200 行
□ 需要画图才能理解流程
□ 注释比代码多(说明代码不够清晰)
□ 使用了团队成员不熟悉的设计模式
1. Make it work(让它能用)
2. Make it right(让它正确)
3. Make it fast(让它快)—— 只在必要时
| 技巧 | 说明 |
|---|---|
| 提前返回 | 减少嵌套层级 |
| 使用标准库 | 不要重新发明轮子 |
| 命名清晰 | 好名字胜过注释 |
| 单一职责 | 每个方法做一件事 |
| 删除死代码 | 注释掉的代码直接删 |
□ 有没有更简单的方法实现同样的效果?
□ 新人能在 5 分钟内理解这段代码吗?
□ 如果删掉这个抽象层,会有什么影响?
□ 这个设计模式真的解决了当前问题吗?
| 原则 | 关系 |
|---|---|
| YAGNI | YAGNI 是 KISS 在功能维度的体现 |
| DRY | DRY 可能与 KISS 冲突,过度 DRY 增加复杂性 |
| SRP | SRP 帮助保持类和方法的简单性 |
KISS 核心:最好的代码是最简单的能满足需求的代码。
实践要点: