提示:缘起于《程序员修炼之道》,总容易在工作中写出违反DRY(Don’t Repeat Yourself)的代码来。


前言

提示:以下是软件开发中的关键原则,涵盖编码、设计、架构、协作全流程:


一、基础编码原则

  • KISS (Keep It Simple, Stupid)
    → 保持简单愚蠢,避免过度设计

  • YAGNI (You Aren’t Gonna Need It)
    → 不要实现"将来可能用"的功能

  • POLA (Principle of Least Astonishment)
    → 最小意外原则,代码行为应符合预期

  • SLAP (Single Level of Abstraction Principle)
    → 函数内保持单一抽象层级

二、面向对象设计原则

SOLID 原则群:

- SRP: 单一职责原则

- OCP: 开闭原则(对扩展开放,修改关闭)

- LSP: 里氏替换原则(子类可替换父类)

- ISP: 接口隔离原则

- DIP: 依赖倒置原则

- GRASP (General Responsibility Assignment)
→ 包括信息专家、创建者、控制器等9个模式

- LoD (Law of Demeter / 迪米特法则)
→ 只与直接朋友通信

三、架构设计原则

SoC (Separation of Concerns)
→ 关注点分离

CQRS (Command Query Responsibility Segregation)
→ 命令与查询分离

CAP Theorem
→ 分布式系统三选二:一致性/可用性/分区容错性

Fallacies of Distributed Computing
→ 分布式计算八大谬误(如"网络可靠"等)

CALM Theorem
→ 一致性、可用性、延迟的权衡

四、过程优化原则

TDD (Test-Driven Development)
→ 测试驱动开发

BDD (Behavior-Driven Development)
→ 行为驱动开发

Continuous Integration
→ 持续集成

Feature Flags
→ 功能开关控制发布

五、系统质量原则

FAIL FAST
→ 快速失败暴露问题

Poka-Yoke (防错机制)
→ 预防错误的设计

MTTR over MTBF
→ 重视平均修复时间而非平均故障间隔

Circuit Breaker Pattern
→ 熔断机制防止级联故障


六、数据管理原则

ACID
→ 事务四特性:原子性/一致性/隔离性/持久性

BASE
→ 基本可用/软状态/最终一致性

Event Sourcing
→ 事件溯源存储状态变更


七、认知协作原则

Conway’s Law
→ 系统架构反映组织架构

The Boy Scout Rule
→ 离开时比来时更整洁

The Broken Windows Theory
→ 及时修复代码"破窗"

Hammock Driven Development
→ 留白思考时间

Worse is Better
→ 简单可行的方案优于复杂完美方案


总结

经典原则组合包

名称 包含原则 适用场景
UNIX哲学 KISS + POLA + Do One Thing 系统工具开发
12要素应用 配置分离/无状态/日志流 云原生应用
CUPID 可组合/通用/可预测等 函数式编程
FIRST 快速/独立/可重复/自验证/及时 单元测试设计

提示:实际开发中需动态权衡原则冲突(如DRY vs YAGNI),根据业务场景选择最优解。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐