架构师应该遵守的设计原则
目录
KISS(Keep It Simple Stupid) DRY(Don’t Repeat Yourself) YAGNI – You ain’t gonna need it Code For The Maintainer Be as lazy as possible. Programming is only the road, not the way. If you are in a hurry, stroll along slowly. If you really are in a hurry, make a detour. Know your path, Neo. If it wasn’t tested, it is broken. 与程序沟通时分辨原因和结果,与人交流时要分辨事实和观点
KISS(Keep It Simple Stupid)
Don’t Make Me Think:如果一段程序对于阅读者来说需要花费太多的努力才能理解,那它很可能需要进一步简化。 最少意外原则:程序代码应尽可能的不要让阅读者感到意外。也就是说应该遵循编码规范和常见习惯,按照公认的习惯方式进行组织和命名,不符常规的编程动作应该尽可能的避免。
要谦虚,不要认为自己是个天才,这是你第一个误解。只有谦虚了,你才能真正达到超级天才的水平,即使不行,who cares!你的代码那么stupid simple,所以你不需要是个天才! 将你的任务分解为4-12小时的子任务。 把你的问题拆分成多个小问题。每个问题用一个或者很少的几个类来解决掉。 保持你的方法足够小,每个方法永远不要超过30-40行代码。每个方法都应该只处理一个小小的问题,不要搞太多uses case进去。如果你的方法中有多个分支,尝试把他们拆分成多个小的方法。这样不仅容易阅读和维护,找bug也更快。慢慢的你将学会爱。 让你的类也小点,原则和上面的方法是一样的。 先解决问题,然后开始编码。不要一边编码,一边解决问题。这样做也没什么错,但你有能力提前把事情切分成多个小的块,然后开始编码可能是比较好的。但也请你不要害怕一遍遍重构你的代码。另外行数还不是为了衡量质量的标准,只是有个基本的尺子而已。 不要害怕干掉代码。重构和重做是两个非常重要的方面。如果你遵循上面的建议,重写代码的数量将会最小化,如果你不遵循,那么代码很可能会被重写。 其他的任何场景,都请你尝试尽可能的简单,simple,这也是最难的一步,但一旦你拥有了它,你再回头看,就会说,之前的事情就是一坨屎。
参考链接: Do The Simplest Thing That Could Possibly Work: http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html
DRY(Don’t Repeat Yourself)
尽可能的减少重复,如代码重复、文档重复、数据重复、表征重复、开发人员重复(相同的功能不能的开发人员的优自己的实现) 不重复造轮子,能够使用开源的解决方案的情况下没有必要再实现一遍。 重复的事项,尽可能的使用自动化程序解决。 不要过于优化,过度追求DRY,破坏了程序的内聚性。
相关规则有: 代码复用:http://en.wikipedia.org/wiki/Code_reuse
YAGNI – You ain’t gonna need it
更少的代码维护 更少的代码测试 事情发生变化时更少的代码可重构 更多时间用于更重要的功能 更多时间用于文档编制
节省了编译/移植的时间 节省了测试运行的时间 生成时/运行时节省了资源 不必以某种方式保留的知识
Code For The Maintainer
参考链接:
Code For The Maintainer:http://wiki.c2.com/?CodeForTheMaintainer
Be as lazy as possible.
不要重复发明轮子 过度优化是万恶之源
参考链接: Do The Simplest Thing That Could Possibly Work: http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html
Programming is only the road, not the way.
If you are in a hurry, stroll along slowly.
If you really are in a hurry, make a detour.
Know your path, Neo.
If it wasn’t tested, it is broken.
与程序沟通时分辨原因和结果,与人交流时要分辨事实和观点
最小化耦合关系:代码片段(代码块,函数,类等)应该最小化它对其它代码的依赖。这个目标通过尽可能少的使用共享变量来实现。 最大化内聚性:具有相似功能的代码应该放在同一个代码组件里。 开放/封闭原则:程序里的实体项(类,模块,函数等)应该对扩展行为开放,对修改行为关闭。换句话说,不要写允许别人修改的类,应该写能让人们扩展的类。 单一职责原则:一个代码组件(例如类或函数)应该只执行单一的预设的任务。 隐藏实现细节:隐藏实现细节能最小化你在修改程序组件时产生的对那些使用这个组件的其它程序模块的影响。 笛米特法则(Law of Demeter)— 程序组件应该只跟它的直系亲属有关系(例如继承类,内包含的对象,通过参数入口传入的对象等。)
原文链接:What do you consider the 1st principle(s) of programming?
http://programmers.stackexchange.com/questions/91527/what-do-you-consider-the-1st-principles-of-programming参考链接:Programming Principles
https://github.com/webpro/programming-principles
有收获,点个在看
评论