在我所负责的产品项目中,在代码编码模式上,使用了函数式编程的方案。约定唯一的命名空间,提供namespace、mixin等基本的语言扩展功能。或者这并没有什么,重要的是一套编码模式。在linux中来说,就是将一个任务细化为一个细小、单一的功能。在我的方案中,基于目前公司开发流程上的约定和线上代码的发布方式,使用一个唯一的命名空间,之后通过这命名空间来维护代码的组织,将一个功能细化,尽量细化到功能单一,保持每一个函数都能够在20行代码以内,并且提供语义化清晰的命名,以及结构化的注释方式,这样代码看起来就整齐有道,极富特点,看起来愉悦,其中一个主要的是提高复用度和较少重复代码和重复功能。 在维护阶段,因为由于维护人员的不同,以前的做法是使用闭包的方式,来包含每一个人新增的代码,保持代码不影响其他的功能。这种方式是可取的,但是这样不容易形成统一的编码方式,在大方式上抓不住,特别在codereview的时候,不能形成统一的阅读方式;而且,使用闭包的方式,在代码复用度等方面基本是难以把握的,基本是代码堆砌,无视之前的实现代码中是否有能够复用的功能函数。使用函数式的方式,那么在维护方面,可以很方便的在原来的代码中复用功能,或者添加、删除功能,因为都在同一个context上下文中,同在一个命名空间下。 使用了函数式编程的方式之后,在我最近的一次项目中,得到了很好的实践,在频繁的需求更改中,由于将功能细化,实际上就是一个大功能,由一堆小功能函数根据不用的条件组织而成。那么在修改功能的时候,只是需要修改其中的小功能函数,或者是删除、增加某个小功能函数,都显得很方便,也很快速,在功能切换上也能够很快的过度。 尽量保持一个函数在20行以内,会让维护者看代码的时候很兴奋。