本月的功能在踉跄中勉强上线了,这个月有实验的味道,有摸索的代价,有分工和衔接上的问题,有技术储备方面的不足,有业务梳理方面的欠缺,也有个人能力和意识上的不足,梳理整个开发流程,目前存在的几大问题:
一、代码质量问题:
- 数据库
落地解决:
落地
落地
本月的功能在踉跄中勉强上线了,这个月有实验的味道,有摸索的代价,有分工和衔接上的问题,有技术储备方面的不足,有业务梳理方面的欠缺,也有个人能力和意识上的不足,梳理整个开发流程,目前存在的几大问题:
1.性能层面:
从综合维度看,代码质量好坏取决于开发人员整体的编程经验:比如操作系统,设计模式,数据结构和算法,网络原理,数据库,前端等等因素。
就目前系统整体上看,性能可能会出现的地方,从优先级权重来排列,主要集中在:
2.规范层面
有些规范是可以文档化的。比如全局变量全部大写,局部变量驼峰命名,文件前后缀命名等等比较容易约定俗成;
有些规范无法约定的。比如作业调度有些人命名jobs,有些人命名schedule。如果要想规范必须把业务考虑进来。如果只是想表达定时作业,属于技术术语job可能比较合适;如果是业务层面的任务调度可能schedule比较合适。也就是说如果碰到模棱两可的命名的时候,需要增加考虑因子,通过扩大“视野”来更精确的命名它。
如果碰到一个问题始终不清楚要如何命名的时候,首先应该要反省的是自己对业务熟悉不熟悉,对系统整体熟悉不熟悉。如果实在无法确认,最好请教和沟通,一般都能做好命名。说不定能发现一些自己无知的内容。
如果真的觉得用名字无法描述清楚,言不尽意,模棱两可,那就增加代码注释。代码注释的前提是自解释,实在无法达意才去做注释,因为注释太多也是有成本的。
一致性优先,也就是说一致性是可读性的基础,否则数据库一种命名,业务代码一种命名就是错乱了。比如公司叫Company,但是业务命名叫Supplier,会员叫Member。这里会出现这种不一致的命名,主要原因还是对业务领域不清楚导致的。
所以在底层命名非常关键,比如数据模型的表和字段的命名,如果底层命名错误,从上下往上只能将错就错,让人改也不是,不改也不是。
总之,代码命名和给孩子取名字一样,其实都是需要慎之又慎,不可随意叫个阿猫阿狗什么的。这里有个原则就是要遵循:简单,可读,统一和优雅的原则,当然优雅是最高的要求。
规范仅仅写个规范文档是很不够的,写好并持续完善规范文档只是万里长征第一步。只有规范文档,没有落地检查,文档也会变成一纸空文。
定个原则是比较容易和简单的,如果细细追究,里面有很多坑。
首先大家对简单,可读,统一的理解各不相同,最后生成的代码必然是千人前面,理论上需要对业务的深入了解,需要有很好的英文功底,同时在整体上要做经常性的检查和复盘。
但是引入代码审查又需要成本,假设一个月审查一次,那么对每个成员编写的一个月的代码,从月初到月底进行一番梳理和纠正,没有1-2天是无法完成的。
所以审查是有成本的,要不要审查呢?
权衡利弊,必须要审查,而且要按照规范,引入严苛的代码审查机制,每个月做一次代码规范和代码质量的检查和考核。
为什么要严苛来做代码审核呢?因为代码质量反应了我们的产品质量,代码的好坏决定了未来运维的成本,技术债务的危害怎么形容都不为过,轻则系统局部异常,中等的会导致修改困难,严重的推翻重来。
如果因为进度一时妥协,回头又忘记了修改,中间又出现人员变动,那么这份代码的后患是无穷的,因为没有规范的代码,对交接人来说从心态上是本能反抗的,但是又不得不改,于是就一通乱改,能贴膏药就贴膏药,能运行就可以,管他规范不规范。这样导致的结果是对规范来说,只能从不规范走向更加不规范,最后走向无法维护。
1.性能层面:
磨刀不负砍柴功,开发之前进行技术评估,识别出其中技术复杂度和难度,及早发现性能方面可能会产生的问题。
把评估的内容逐条分解罗列并做文档化,对容易的功能尽量不要有心态上的藐视。
遇到没有把握的技术问题,及时的拿出来讨论,不要觉得不好意思。
2.规范层面:
1.业务层面
2.技术层面
1.业务层面
2.技术层面
以下从三个方面总结一下成员开发过程中的意识问题。
对开发来说,各个环节要持有严谨和一丝不苟的态度,树立简单并不简单的意识。对于完成的功能,如果时间上允许,需要反复回头检查可能出现的问题,不要满目乐观,或者觉得某个功能很简单,要站在可能出现问题的立场上来看待正常的功能。因为我们要打造的是产品,而不是项目,不是小孩过家家的功能。
好的代码是不断重构出来的,因为业务和需求是不断叠加的,不可能写出一成不变的代码。当业务倍增,需求变革的时候,再好的代码都会出现生锈,腐蚀和坏味道。所以在不忙的时候,需要经常性的整理自己的代码。
重构解决的是长远的质量和可维护,可扩展的根本问题。技术债务,如果不及时解决,随着时间的推进和人员变动,后续花费的成本会逐渐叠加甚至无法解决,好比盖房子,在有问题的基础上盖房子,盖得越高危险越大,到了晚期可能就只能推倒重建。
三个臭皮匠赛过诸葛亮,技术越讨论越进步,业务越讨论越明白。对于模棱两可或者完全不懂的问题,尽量多请教和讨论。
讨论的印象是最深刻的,对个人的成长和帮助也是最大的。比如对Vue的学习和上手,对数据库脚本的编写,对ES的学习和讨论等等……
树立不懂不丢人,不懂装懂才丢人的意识。不要忌讳或者不好意思讨论。
讨论讲究效率和默契。要集中时间,充分准备。 有些开发人员经常问些没头没脑的问题,既没有背景铺垫,也没有上下文,然后想一出一个问题,频繁的打断别人的思路而不自知。这种沟通是很浪费时间和成本的。