一、解决问题
1、提高产品质量。
2、提升代码质量通用性,扩展性等。
3、提升团队个人能力,相互交流学习优秀开发经验。
4、便于研发主管和核心人员掌握产品功能具体实现,方便交接。
二、开发阶段流程
1、功能列表,数据模型,服务设计等具备。进入功能开发之前开始进行代码设计 。
2、对照功能,以及功能可扩展等思路,进行代码结构设计。
3、 开发人员对分配的开发任务服务进行类设计。主要是对开发的功能进行抽象,功能是否需要工具化?功能是否可复用是否需要插件包化,以及是否有开源工具可选择。
最后输出类图和包图。类图要求有接口,实现,类的主要方法、入参对象关键字段等信息。
4、研发组长组织评审,对服务的开发设计进行讨论,主要评审思路是否清晰,逻辑是否存在漏洞,线程是否安全,事务是否正常等方面。
5、功能开发完成,按照迭代周期进行代码评审。查看是符合设计。总结偏离代码设计的原因?
三、参与职责
1、工程搭建,中台体系工具和版本选用。
2、组织代码设计,核心功能设计研发。
3、组织类图评审,核查编码逻辑和实现逻辑。
4、开源组件使用指导,开发功能是否需要组件化位公共插件开发。以及中台工具使用指导。
5、单元测试覆盖检查,代码质量监督。
5、归纳和总结开发问题,整理为相关的问题文档。
四、输出文档
1、工程的结构示意图、核心功能的类设计图
2、评审发现的问题,以及开发中遇到的常见问题整理为文档,共享到知识库
3、需要组件化的功能提供为公共jar包,使用场景和用法的相关整理。
五、人员构成
研发组长,专家组成员,以及其它有意向的同事
人员要求:了解设计原则和使用场景,熟悉java常用设计模式以及使用。
附录:
常用设计原则
1、(DRY)即不要写重复的代码,而是用“abstraction”类来抽象公有的东西。
2、 封装变化,可以默认私有化变量和方法,并逐步增加访问权限。比如Factory设计模式是封装“对象创建”,其灵活性使得之后引进新代码不会对现有的代码造成影响。
3、开闭原则,即对扩展开放,对修改关闭。可以防止其他人更改已经测试好的代码。理论上,可以在不修改原有的模块的基础上,扩展功能。
4、单一职责,类被修改的几率很大,因此应该专注于单一的功能。即不要出现大量代码行和多公共方法的类。
5、依赖注入或倒置,类似于Spring框架使用的代理,或者AspectJ等的AOP框架技术。
6、优先利用组合而非继承,组合允许在运行期间通过设置类的属性来改变类的行为,也可以通过使用接口来组合一个类。
7、(LSP),子类必须能够替换掉它们的基类,也就是说使用基类的方法或函数能够顺利地引用子类对象。
8、接口分离原则,采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。
9、针对接口编程,而不是针对实现编程 ,提高代码灵活性最好使用变量接口类型、方法返回类型、方法参数类型
10、委托原则,比如Java中的equals() 和 hashCode() 方法。为了平等地比较两个对象,我们用类本身而不是客户端类来做比较
二十三种设计模式
创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。
结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。