一、代码质量差的根本原因 1、代码不佳的表现 有很多表现会让代码质量大打折扣,比如取名无意义、方法和类过于庞大、代码重复、晦涩难懂、修改麻烦等等。其中影响最严重的两点是命名不准确和低扩展性的逻辑结构。对于新手来说,方法的名字与实际逻辑不符会引起困惑,这种情况在日常工作中非常常见;而当出现新的业务需求时,由于逻辑扩展性差,要对多个地方进行修改,修复的业务逻辑过于繁琐,会大大降低开发效率。 2问题归纳 针对第一节所提到的现象,可以对其进行问题的归纳整理,大致可以分为六类,。 命名问题:起名字是一件十分头疼的事情,要取一个既贴切又易于理解的名字并不容易。无论是对变量、方法或类进行命名,常见的命名问题有两种:其一是含义不明确,令人难以理解;其二是和本意不符,误导他人。命名含义不明确是指命名方式抽象度过高,初看之下无法明确其含义;而命名和本意不符则是指命名方式和事物本身实际所表达的意思不符。 代码结构问题:当初看工程代码时,若还没有深入了解代码逻辑,就可以从模块划分、类结构分析、方法划分等整体层次感受代码质量。如果一个类的代码有几千行,或者一个方法的代码有几百行,这样的代码复杂程度相信没有多少人愿意去阅读。通过优秀的代码层次结构可以使代码更加清晰有序,就像读一本美好的书一样,令人视觉愉悦。 编程范式问题:目前有三种编程范式,分别是表模式、事务脚本模式和领域设计模式。在这其中,事务脚本模式是被广泛使用的,因为这种模式最符合人类处理问题的方法——一步一步地进行。然而,这种模式最大的问题在于它承担了本不应该由自己承担的职责,尽管看上去比较符合逻辑,但实际上存在诸多问题,通常人们称之为"面条式代码"。 可读性问题:在编写代码时,除了要实现业务功能外,还需考虑代码的可读性。有些代码缺乏注释,有些代码格式不规范,还有一些使用过多的Lambda表达式,这些都会降低代码的可读性。虽然Lambda表达式可以让代码显得简洁,但在使用时需要注意控制层次深度,以免影响代码的可读性。 扩展性问题:要实现良好的可扩展性并不容易,通常是由于缺少抽象化思维而导致的。例如,对于店铺在店招头展示Tab的情况,一般的代码实现方式是直接定义一个List,然后添加Tab对象。但是遇到需要再添加一个Tab的情况时,就会出现典型的开闭原则不满足的问题。 无设计问题:整体代码呈现单调乏味的样子,没有什么值得别人借鉴的地方。这通常是因为没有深入分析问题,只是解决了眼前的问题,而没有考虑如何更优地解决它。例如,是否可以抽象出一个通用的模板类来避免处理流程的重复工作?是否可以使用工厂类来动态获取具体策略?是否可以使用事件模式来实现异步处理?是否可以通过自动注册来发现新增的功能?等等。 3原因分析 下面分析一下代码不同的原因,其原因有内在的和外在的两方面。 外在的原因主要包括:项目时间紧张,没有足够的时间进行设计;资源短缺,只能尽力而为;需要修复紧急问题,只能采用一些临时的解决方案。 内在的原因主要包括:技能不足,例如Lambda表达式、常用工具类、高级框架使用等方面的技能没有掌握;过于重视完成需求本身,而未考虑程序的稳定性、可扩展性、性能和数据一致性等问题。 其中最关键的是公司内部存在的问题,根源主要有两点:自我要求不高和无反馈通道。如果对自己的要求不高,只满足于完成所需开发,那很难写出高质量的代码。此外,如果没有外部反馈,也很难提高技能水平。 二、提高代码质量的方法 如何提高代码质量,除了业内普遍讨论的从领域建模、设计原则和设计模式等方面优化外,在技术高速发展的今天,无论是企业还是开发从业人员,都应该善用工具以达到事半功倍的效果。 飞算推出的SoFlu软件机器人改变了原来手工编码的作业模式,通过可视化拖拽方式以及参数配置就能实现等同于编写复杂代码的业务逻辑,在设计业务逻辑时就完成了微服务应用开发,做到“业务即图,图即代码”,实现“软件开发,十倍提效”。
在代码质量上,SoFlu软件机器人中所有封装组件均需经含超3000条检验规则的代码质量检测工具检查。同时,JAR包均为经漏洞扫描的保证稳定安全。开发项目导出的源代码,亦能通过代码规范和漏洞扫描。此外,内置一系列基于AI的开发、测试、产品质量分析和安全审核的功能,可在整个应用程序开发生命周期提供“专家级”帮助。针对整个应用开发过程也有细粒度的权限管理,通过项目资产安全管理机制严格管控项目资产的安全并保证信息安全。同时还有审计日志、管理报表等功能。 SoFlu软件机器人将安全性、容错、并发等能力和规范集成于工具,用户开发时只需关注业务,借助该产品矩阵即可轻松优化产品架构、性能,并自动识别具有安全漏洞的代码,极大提升开发效率、节省时间和保障质量与安全。
SoFlu软件机器人现已开放免费试用,点击链接可以直接申请。 申请链接:http://feisuanyz.mikecrm.com/9dW4GeZ
标签:问题,逻辑,一篇,代码,实用,开发,质量,攻略,命名 From: https://blog.51cto.com/u_15327851/6442070