如何把Kiss原则应用到工作中?
我对DRY的理解:
YAGNI 是You Ain’t Gonna Need It(你不会需要它)的简写,是极限编程的关键原则。YAGNI意思非常简单:仅在您真正需要它们时才去做,而不是在您认为或预见将来可能需要它们时就提前做了!
您可以将YAGNI视为即时制造的拥护者。在这种情况下,制造业正在编写代码并交付功能。只有当有人真的需求功能存在时,您才可以开始工作并创建它。否则,您将保持自己的懒惰!
它为什么如此重要?没有编写的每一行代码都是时间,因此可以节省金钱。但是,甚至更多!它是:
更少的代码维护
更少的代码测试
事情发生变化时更少的代码可重构
更多时间用于更重要的功能
而且还包括:
它可以防止什么?如今,大多数软件开发都是根据客户的需求进行的。无论您是在产品公司,在提供开发服务的公司还是在其他地方工作。总是会在某处某人想要具有某个功能。是您的客户要求具有某个需求的功能,还是产品经理响应客户的反馈的功能。无论实际驱动者是谁,无论是早晚,这都是实际需求的体现。您正确预见未来功能请求的机会非常低。因此,您很有可能实现某些功能,而不是您的实际利益相关者想要的功能。过早地执行某些操作很可能会导致一切都被丢弃。这是一个没人真正喜欢的场景!然后,有时会发生另一种情况:没有人真正需要该功能!
为维护者编写程序。比如让代码有自解释的功能。在你编写代码的时候永远记得将来需要维护他。
人类因“偷懒”而进步。懒惰只是创造了需求。需求本身并不算进步。满足需求形成了进步。
偷懒还包括:
不要重复发明轮子
过度优化是万恶之源
编码只是一种实现方式,而不是解决方案。编码只是告诉电脑应该如何去做。要编写高效、可靠的软件需要精通算法、最佳实践等其他与变成相关的内容。
编程前需要先了解你要解决的问题是什么。编程只是手段并不是目的。能实现并不代表需要实现。知道什么时候不需要编程或没有必须要去编程。
如果你很忙,那就放慢速度。如果你真的很忙,那就先放一放。这听起来很愚蠢,但是千万不要让自己陷入会导致后期问题的妥协。如果你正在编写程序的核心部分,尽可能保证精确。如果你在编写离核心代码较远的方法,可以尽可能的加快速度。
知道你的实现路径,你需要了解你每天使用的环境、工具及其他依赖的内容,并且把它调试到适合自己的配置。如果你的编程环境真的很好,那么你编程中的基本不需要关心他。如果你需要完成一项任务,最好的方式是不要引进“新的内容”,只有当你完全掌握“新的内容”的时候再去考虑引入。
如果没有经过测试的代码都是不能运行的。
我也就理解到如下几点知识:
1、简约,合理最小化任务分步解决
2、减少重复,开源现成使用
3、功能需求合理化,基本不出现的需求场景可以暂时忽略
4、新内容引入需要充分验证
5、任何程序代码必须先验证测试通过
相关的准则,包括:
最小化耦合关系:代码片段(代码块,函数,类等)应该最小化它对其它代码的依赖。这个目标通过尽可能少的使用共享变量来实现。
最大化内聚性:具有相似功能的代码应该放在同一个代码组件里。
开放/封闭原则:程序里的实体项(类,模块,函数等)应该对扩展行为开放,对修改行为关闭。换句话说,不要写允许别人修改的类,应该写能让人们扩展的类。
单一职责原则:一个代码组件(例如类或函数)应该只执行单一的预设的任务。
隐藏实现细节:隐藏实现细节能最小化你在修改程序组件时产生的对那些使用这个组件的其它程序模块的影响。
笛米特法则(Law of Demeter)— 程序组件应该只跟它的直系亲属有关系(例如继承类,内包含的对象,通过参数入口传入的对象等。)
架构师应该遵守的编程原则 (qq.com)