您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    提升代码质量的办法:范围模型、设计准绳、设计形式
    时间:2021-08-19 21:05 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    提升代码质量的办法:范围模型、设计准绳、设计形式

    一、影响代码差的根因 1.差代码的表现

    我们可以罗列出十分多质量差的代码的表现现象,如名字不知所意、超大类、超大办法、重复代码、代码难懂、代码修正困难……其中最为影响代码质量的两个表现是命名名不虚传、逻辑可扩展性差,当一个新人阅读代码时,有时发现办法命名与实践逻辑对不上,这就让人感到十分疑惑,这种现象在往常任务并不少见;另一个就是逻辑扩展性差,一个新业务需求提出来后,发现要在多处改动,需求回归的业务逻辑比较多,形成研发效率不高。

    2.成绩归结

    对第1节中提到的现象停止成绩归结整理,大致整理出6类成绩,辨别展开加以阐明。

    命名成绩:命名成绩是一件十分头疼的事,想要取一个名副其实又好了解的名字并不那么容易。触及到变量的命名、办法的命名、类命名,常见的命名成绩有两种:一种是不知所云;另一种是名不虚传。命名不知所云是一团体初一看,不知道它是什么意思,基本缘由就是没有想到一个适宜的词汇去笼统成绩;命名名不虚传是命名和实践逻辑想表达的意思不一样,这样的命名会误导人。

    代码结构成绩:当一团体初看工程代码时,当还没有深化看代码逻辑时,从模块划分、类划分、办法划分全体上可以感受得出代码质量,假设一个类有几千行代码,一个办法有几百行,这样的逻辑置信没有多少人情愿去看,复杂度比较高。好的代码层次结构十分明晰,就像看一本优美的书一样有一种赏心顺眼的觉得。

    编程范式成绩:有三种编程范式:表形式、事务脚本形式和范围设计形式,大家用得最多的是事务脚本形式,这种形式最契合人做事的办法,step by step,这种形式最大的成绩就是承当了不该本人承当的职责,看起来比较契合逻辑,实践上成绩比较多,往常大家喜欢称之为"面条型代码"。

    可读性成绩:代码除了完成业务功用外,还要具有良好的可读性,有的代码没有任何注释;有的代码格式不一致;有的是为了炫耀技术,大段大段的Lambda表达式(并不是说Lambda表达式不好,关键要控制层次深度),这样的代码看起来繁复,可读性并不太好。

    扩展性成绩:可扩展性成绩是一个陈词滥调的成绩,要完成良好的可扩展性并不那么容易,普通是没有笼统成绩,如店铺在店招头展现Tab,面条型的代码就是直接定义一个List,然后往外面加Tab对象,假设需求再加一个Tab怎样办?典型的就是不满足开闭准绳。

    无设计成绩:整个代码看起来比较平淡,别人看了之后也从中学习不到内容。普通这种成绩是没有深化剖析成绩,仅仅处置了成绩,而没有思索如何更好地处置成绩,比如重复处置流程的任务能否可以笼统成一个通用的模板类、不同处置类能否可以经过工厂类去获取详细的策略、异步处置能否可以运用事情形式去处置、关于新添加的才能能否经过自动注册去发现……

    3.根因剖析

    接上去剖析下为什么会产生代码差的缘由,这个成绩有外部缘由,也有外部缘由。外部缘由主要有:项目排期急,没有多少时间去设计;资源充足,人手不够,只能怎样快怎样来;紧急成绩修复,暂时方案快速处置……。外部缘由主要有:本身技艺低,怎样技艺没有掌握到,如Lamda表达式、常用的工具类、框架初级用法等;无极致追求的肉体,仅仅完成需求就行,波动性、可扩展性、功用、数据分歧性等没有思索……

    笔者以为最为关键的是外部本身的成绩,根因就两个:自我要求不高;无反应通道。假设对自已要求不高,仅仅满足完成需求开发就止步了,很难写出高质量的代码,另外假设没有外部反应,也难以提高本人的技艺。笔者之前的主管十分严峻,对大家写的代码review比较细心,一个变量名、一段逻辑的写法,重复让修正,这其实是提升技艺最快的办法。

    提升代码质量的办法:范围模型、设计准绳、设计形式

    二、提升代码质量的办法

    提升代码质量的办法,笔者喜欢用三个办法:范围建模、设计准绳、设计形式,主要谈下如何运用。

    剖析阶段:当拿到一个需求时,先不要着急想着怎样把这个功用完成,这种很容易堕入事务脚本的形式。剖析什么呢?需求剖析需求的目的是什么、完成该功用需求哪些实体承当,这一步中心是找实体。举个下面进店Tab展现的例子,它有两个关键的实体:导航栏、Tab,其中导航栏外面包含了若干个Tab。

    设计阶段:剖析完了有哪些实体后,再剖析职责如何分配到详细的实体上,这就要运用一些设计准绳去指点,GRASP中提到一些职责分配的准绳,感兴味的同窗可以去详细看看。回到下面的例子上,Tab的职责主要有两个:一个是Tab能否展现,这是它本人的职责,如上新Tab展现的逻辑是店铺30天内有上架新商品;另一个职责就是Tab规格信息的构建,也是它本人要担任的。导航栏的职责有两个:一个是接受Tab注册;另一个是展现。职责分配不适理,也就不满足高内聚、低耦合的特征。

    打磨阶段:这个阶段选择适宜的形式去完成,大家一看到形式都会了解它是做什么的,比如看到模板类,就会知道处置通用的业务流程,详细变化的部分放在子类中处置。下面的这个例子,用到了2个设计形式:一个是订阅者形式,Tab自动注册的进程;另一个是模板形式,先判别Tab能否展现,然后再构建Tab规格信息,流程虽然复杂,也可以笼统出来通用的流程出来,子类只用复杂地重写2个办法。

    提升代码质量的办法:范围模型、设计准绳、设计形式

    三、范围模型的作用

    范围建模的入门门槛比较高,包含了一些难了解的概念。本篇文章中并不会讲述如何停止建模(可以私下交流),笔者发现让大家接受范围建模远比知道如何建模更重要,当你知道了范围建模的作用后,本人会想各种办法去学习。下面经过笔者阅历的一些实践案例停止阐述,让大家听起来并不觉失掉那么空泛。

    1.简化看法

    笔者任务一年后参加到了一家金融公司,事先对金融一无所知,末尾接触到标的、债务、债务转让、融资担保、非融资担保等名词后,一时感到无所适从,每天要学习十分多的新内容。

    (责任编辑:admin)