敏捷与面向对象

我们在工作中采用的是敏捷的开发方式。其实对于这个开发方式,大家不必太较真。敏捷好是好,但是有很多的要求。比如,敏捷没有文档,代码就是文档。但是代码充当文档是有前提的,那就是这个代码质量要好。如果质量不行,那么还是有文档的好。其次,敏捷在编码的时候,一定要有一个规约,这个规约很细。ok,如果没有规约也行,那就要求敏捷团队的成员必须是工作四年以上的具有丰富应验的人,而且要精通面向对象的编程。

如果这些都没有,敏捷就是噩梦。给人的感觉就是又要马儿跑得快,又要马儿不吃草。这是不可能的。

另外如果你从事的是升级工作,那么敏捷其实意义不大了。除非,你参与过老系统的开发。

一个业务系统,无论是关于那个领域的,都一定要有一个抽象的业务层,我觉得这应当是一个常识。但是对于不了解面向对象编程的人来说,这种做法是难以理解的。他会觉得那是一个多余的层次。换一种说法,一个复杂的系统应当有一个自己的类库。这个类库应当是设计严密谨慎的。这样的好处有很多,特别是,如果我们需要升级系统的界面的时候,这种类库可以很好的加速开发的过程,而且,新手也能快速的上手工作,虽然可能他并不十分彻底的理解系统。这其实就是一种DSL。但是很不幸,许多的系统业务模型建立在成堆的工具类,大量的数据模型的背后,真正的业务过程存在在各个前台的view中,理解起来非常费劲。

自从我学习编程以来,我学习了很多中语言的技巧。其中包括面向对象的语言,函数式的语言,过程式的语言,大杂烩(scala)。其中最为困惑我的就是面向对象的语言。因为在做开发的这些年里面,我唯一见到的面向对象的设计好像就是我们的开发框架和java类库本身。我所经历的这些项目,好家伙,没有一个使用面向对象的开发方式的。有的项目连一个继承都没有更无论接口了。结果就是很多程序员在做了多年的开发之后,居然还不知道接口中的方法都是public的。

真正的程序员,不应当仅仅知道完成工作。我们要有我们的道。不然,我们就迷失在工作中了。

技术的本质,不是完成工作,而是更快更好的完成工作。

你可能感兴趣的:(敏捷)