7、 重复的危害
需求会一直更新,代码会一直有变化;
基于上一点来说,重复的代码会造成维护困难,可能会漏掉修改;
重复等于效率低下;
尽量避免重复,总有方案来解决重复,比如通过覆写方法,或者重写传入其他参数来进行控制;
注释是必须的,但是多余的注释可能会带来不必要的重复性工作;
多试试代码生成器,能让你的工作更快;
设计程序的时候减少无意义的重复;
复制粘贴代码可能带来另外一些不可控的问题,复制需要谨慎;
多余团队成员交流,最好能建立团队的知识论坛,共享知识,防止重复性建设。
8、 正交性
改动一个位置不会影响其他地方的代码,或者只 改一处;
MVC架构为的也是达到正交性;
正交性能提升效率,我认为提升的位置是开发后的变更;
觉得JAVA里的类实现多接口可能会影响正交性;
AOP编程实现正交性的一个好方式,但是使得代码可控性差,难以维护;
自动化测试、自动化集成才是提升效率的方法,需要尽快实践;
9、 可撤销性
没有决策是一成不变的;
项目中可能遇到各种变更,而且变更可能是颠覆性的变动,写尽量灵活的代码,考虑多种可变方案应对变化;
Mybatis、Hibernate框架就应对了这样的情况,改变方言,适应变化;
10、曳光弹
开发过程中,先开发目标功能的最小解决方案,然后逐步优化;
我是使用原型图作为目标,其实可以由原型图到前端界面,先有界面,后有功能,这样更容易让客户和开发看到成果;
接口方面可以使用一些支持Mock的接口工具,比如RAP,提前定义接口返回值,这样前端可以先行调取,后端也有开发目标;
曳光弹需要不断的纠正目标,因为需求会变;
曳光弹比原型图更靠后一步,原型是让客户和团队了解功能;
11、原型与便笺
原型可以用最简单的方式告诉你的客户或者团队实现效果;
原型也可能不是最终的效果;
12、领域语言
语言的界限就是一个人的世界的界限;
不同的语言有不同的解决方案,还是应该学习多门语言,可以提升竞争力、扩宽世界范围;
JAVACC可以实现自己的小型语言,其他各种语言也都有支持工具;
选择最贴合业务需求实现的编程语言来进行实现,但是需要考虑到后期的维护成本,如果贴合业务实现的编程语言不易维护的话,建议选择易维护的。
尝试将需求以某种小型语言来实现;
13、估算
编程世界里,每件事都有一个固定的值,除非有人为干涉,所以每个事情都可以估算;
根据不同的应用场景估算你的工作量,并完成这项工作验证你的估算准确性;
被要求估算的时候,先说我等会儿回答你,不要盲目估算。