程序员修炼之道——第二章 注重实效的途径

7、 重复的危害

    需求会一直更新,代码会一直有变化;

    基于上一点来说,重复的代码会造成维护困难,可能会漏掉修改;

    重复等于效率低下;

    尽量避免重复,总有方案来解决重复,比如通过覆写方法,或者重写传入其他参数来进行控制;

    注释是必须的,但是多余的注释可能会带来不必要的重复性工作;

    多试试代码生成器,能让你的工作更快;

    设计程序的时候减少无意义的重复;

    复制粘贴代码可能带来另外一些不可控的问题,复制需要谨慎;

    多余团队成员交流,最好能建立团队的知识论坛,共享知识,防止重复性建设。

8、 正交性

    改动一个位置不会影响其他地方的代码,或者只 改一处;

    MVC架构为的也是达到正交性;

    正交性能提升效率,我认为提升的位置是开发后的变更;

    觉得JAVA里的类实现多接口可能会影响正交性;

    AOP编程实现正交性的一个好方式,但是使得代码可控性差,难以维护;

    自动化测试、自动化集成才是提升效率的方法,需要尽快实践;

9、 可撤销性

    没有决策是一成不变的;

    项目中可能遇到各种变更,而且变更可能是颠覆性的变动,写尽量灵活的代码,考虑多种可变方案应对变化;

    Mybatis、Hibernate框架就应对了这样的情况,改变方言,适应变化;

10、曳光弹

    开发过程中,先开发目标功能的最小解决方案,然后逐步优化;

    我是使用原型图作为目标,其实可以由原型图到前端界面,先有界面,后有功能,这样更容易让客户和开发看到成果;

    接口方面可以使用一些支持Mock的接口工具,比如RAP,提前定义接口返回值,这样前端可以先行调取,后端也有开发目标;

    曳光弹需要不断的纠正目标,因为需求会变;

    曳光弹比原型图更靠后一步,原型是让客户和团队了解功能;

11、原型与便笺

    原型可以用最简单的方式告诉你的客户或者团队实现效果;

    原型也可能不是最终的效果;

12、领域语言

   语言的界限就是一个人的世界的界限;

   不同的语言有不同的解决方案,还是应该学习多门语言,可以提升竞争力、扩宽世界范围;

   JAVACC可以实现自己的小型语言,其他各种语言也都有支持工具;

   选择最贴合业务需求实现的编程语言来进行实现,但是需要考虑到后期的维护成本,如果贴合业务实现的编程语言不易维护的话,建议选择易维护的。

   尝试将需求以某种小型语言来实现;

13、估算

      编程世界里,每件事都有一个固定的值,除非有人为干涉,所以每个事情都可以估算;

      根据不同的应用场景估算你的工作量,并完成这项工作验证你的估算准确性;

      被要求估算的时候,先说我等会儿回答你,不要盲目估算。

  

      

     

猜你喜欢

转载自blog.csdn.net/zhouzhupianbei/article/details/81096638
今日推荐