如何实现提高代码生产力

        如何编程获得高质量的高效的代码,如何实现高校编程,使得我们的代码高效,迭代更快,此处的高效不是性能高效,不是我们所说的高平发,高可靠等,我想说的是高效迭代。每一套系统的三高性能并不是都会很高,现在很多成熟的三高搭建方法都已成型,唯一变得是需求。

 高效迭代

        互联网行业是持续发展的行业,他的需求是一直在变化的,很多时候你的服务或者功能是需要有窗口的,错过了,那么她对应的价值也就消失了,就算功能完成了也会打折扣,这时候你的功能能快速上线就尤为重要。而高效迭代就是你的系统能快速适应需求的变化,每一个需求变更你都能在最小周期内满足并上线。

        当前很多企业或者开发团队都提倡用DDD的设计方法来设计系统实现快速迭代,敏捷开发等等。不过我认为i这只是基础层面,领域驱动设计帮我们构想了一个好的系统设计出来应该是什么样子,我们也尽可能把我们的系统开发成这样子,不过大多是打了折扣的。首先按照这套设计思想设计出来的系统肯定是比较好的,也向着敏捷开发迈进了一步,但是做到高效还是需要更进一步。现在的敏捷开发更注重的是流程配合,快速部署(推荐的敏捷开发方案什么是敏捷开发?_张驰Zhangchi的博客-CSDN博客_什么是敏捷开发)  。我觉得其中有一个开发过程的工作,如果开发代码完不成,你流程再好,代码写不完,敏捷开发都是闲谈,所以高效迭代的代码才是第一生产力。     

如何提高代码的生产力

        我先以一个抽象的思维来解析下代码的生产力。代码的是一个逻辑的产物,他是用来表达和传输信息的。信息也就是可以理解为我们的数据,当给数据赋上了逻辑之后就可以用于特定的业务场景。如果代码可以抽象表达到这个层次生产力自然可以提升。生产力的来源重点就来源于逻辑和数据,数据定义准确,逻辑抽象清楚就可以提高代码的生产力。下面我举一个例子:

需求: 开发一个用于招商推广的信息收集落地页,需要收集招商电话,联系人,企业,商品品类,咨询内容等等

需求来源: 招商部门


产品需求: 开发一个落地页实现信息收集并标注很简单的小需求


技术部门: 认为不需要需求分析,就是一个h5落地页,然后提交表单,后台保存数据,仍然很简单,开发时间两天时间完全没问题,测试一天,三天时间上线,这个需求很快,完全符合敏捷开发的标准

以上的需求我相信很多人都见到过,也很多是按照上面的情况做的,也都觉得很简单,也没什么毛病。

应该会有人发现这个需求是招商部门的需求,也就是招商营销部门为了推广,及时收集信息或者其他部门收集信息都会有类似的需求,那么这个内容是否做成可配置的,提供后台配置界面,但是发现这个收集的信息并不固定,而且需求也比较急,先按照最最简单的做把。

我认为上面的方案虽然实现了功能,也较快的完成了需求。但是我要提出的是如果下次来了另一个招商活动也需要收集信息,那么要怎么做?大部分的想法是不就是话两三天copy一份么,很简单,也不用花费什么时间。

那我提问下: 

  1. 下次的需求真的是一毛一样么,字段,收集流程什么的,不一样你有什么手段来区分
  2. 如果一样的话,那么这次是不是依然还需要开发和测试花费人员投入,至少总共需要4人天不包括产品

这些问题都没法解决,最后发现耗费重复的人力和物力。

解决方案

 我是类似于这样需求我做过两次,在两家公司,第二次是带着我的团队一起做的,当时我的团队人员没有办法理解我的方案,因为他们只停留在上面的方案中,下面我来说明下:

需求分析: 该需求是一个信息收集的需求,信息收集会有各种各样的信息,面向各端人群的。然后像招商这样的部门类似的这样的需求不定期会有。所以需要做成一个动态的信息收集。

技术分析:

  1. 信息收集关键的是信息,涉及到信息我们首先肯定能想到是key-value形式的来表达各类信息
  2. 类似这样的需求要实现动态,那么我们对于这样的需求收集可以定义为一次活动,作为这个信息的附属载体信息
  3. 每次活动的定制内容也可以由活动的额外信息去做扩展

技术设计:

  • 数据结构:
  1. 活动表- 记录活动信息,包括活动时间,部门等
  2. 收集信息配置表: 配置要收集的信息内容,格式,关联活动
  3. 信息记录表: 记录关联的活动以及信息配置表信息,具体的用户信息
  4. 额外信息,关联活动表
  • 接口设计:
  1. 获取活动的内容和需要收集的信息配置,入参活动编码
  2. 提交用户收集的信息,入参活动编码,收集人的配置信息
  3. 用户信息查询-活动编码

后续扩展迭代:

  • 类似信息收集可以直接在后台配置即可
  • 定制类的信息可通过额外信息进行扩展

从以上的设计就可以实现后续的类似需求基本不用开发介入,后端服务代码不用动,减少了测试的工作量。代码所完成的功能也更多。当时我的同事有两个点不能理解:

  1. 这个用户的信息查询怎么去返回给前端
  2. 前端用户信息怎么形成表格展示
  3. 信息提交的时候怎么知道用户填的对应是什么信息,信息校验怎么做

这几个问题我这个地方就不做介绍了,都是只要代码基础够扎实,能理解代码的结构都是很简单的问题,只要思维能打开。有疑问欢迎私聊沟通。

总结

        提高代码的生产力,首先是尽可能的分析需求,这个分析除了理解需求外,最重要的是把需求中的关键元信息提取出来,并且提取成纯数据的信息,不带有业务性质的元数据。然后就是重要的关键行为抽象。

上面的需求就是: 信息收集,招商活动

重要的业务行为:信息提交,信息查询

后面就是设计,由于信息由抽象,行为由抽象那么对应的逻辑也会有所复杂,这个是我们代码新增的要处理的,但是就结果而言,我们开发者就是要把复杂留在代码之内,但是不要把bug留在代码内,更重要的是复杂进行拆分,而不是把复杂也留下来,最后就变成繁杂。

下一篇:  高效代码之泛型的使用_剑飞的编程思维的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/qq_23997827/article/details/126674165