只实现当前需要的复杂度
Implement only presently required complexity
有具体需求后再增加功能和抽象,避免为想象中的未来提前设计。
以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。
使用场景
现有服务需要一个百分比折扣函数,没有其他折扣模式的需求。教学约定:金额使用非负整数分,百分比是 0–100 的整数;折后金额按 floor(amount * (100 - percent) / 100) 计算,不符合输入约定时报错。现有代码已有整数校验工具。
具体做法
先列出当前必须满足的行为和例子,再找到现有校验与调用接口。实现百分比计算,复用校验并覆盖边界;检查新增代码能否对应某项需求。策略注册、插件和通知只有在具体用例需要时才增加,不能因将来可能扩展而先写进去。
反例
按上述金额和百分比约定增加折扣功能。为未来需要同时设计策略类、插件注册、动态配置和通知模块,即使当前只使用百分比。
改进写法
按上述教学约定实现一个百分比折扣计算,复用现有整数校验工具。支持 amount>=0 的整数分和 0–100 的整数 percent,按给定公式向下取整;非法输入报错。检查 10000 分打九折得到 9000,0% 保留原额,100% 得 0。只实现当前接口;若认为必须新增抽象,指出它服务的现有调用需求。
为什么这样改
没有当前使用者的扩展层增加了需要理解和维护的接口,却没有帮助完成这次计算。把实现关联到输入规则、公式和调用需求,既能限制推测性的复杂度,也不会为了少写代码删掉必要校验。
如何验证
检查三组正常输入以及负金额、非整数百分比和超出 100 的百分比。示意结果:discount(10000,10)=9000、discount(10000,0)=10000、discount(10000,100)=0;非法输入按约定报错。
逐个解释新增类、配置和依赖对应的当前需求。没有需求依据的扩展不算本任务的完成条件;代码行数本身也不是通过判据。
适用边界
公式和舍入方式是教学业务约定,真实货币精度、最大金额和安全整数范围要按项目规则定义。必要的安全、验证和既有架构契约必须保留;这个方法不等于永远不设计抽象。