欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 宝鼎售后问题提交 | 后台管理


新闻资讯

MENU

软件开发知识
原文出处: 琴水玉

蹊径图

磨刀不误<a href=劳务调派信息打点系统 砍柴工" class="aligncenter size-large wp-image-29116" title="o_CR代码问题" src="/uploads/allimg/c180718/1531UQ100I30-1U92.png" />

常见代码问题

常见的潜在代码问题是当前直接会导致BUG、妨碍可能产物成果不能正常事情的种别。

空值

空值恐怕是最容易呈现的处所之一。 常见错误有: a. 值为NULL导致空指针异常; b. 参数字符串含有前导或后缀空格没有Trim导致查询为空。 导致以上功效的原因主要有: 无此记录、有此记录但由于SQL会见异常而没查到、网络挪用失败、记录中有脏数据、参数没传。

原则上,对付任何异常, 但愿可以或许打印出详细的错误信息,按照错误信息很快大白是什么原因, 而不是一个 null ,还要在代码里去推敲为什么为空。这样我们必需识别出措施中大概的null,昆山软件开发, 并实时检测、捕捉和抛出异常。

对付空值,最好的防护是“防止式编程”。当获取到工具之后, 利用之前老是判定是否为空,并适当抛出异常、打错误日志或做其它处理惩罚。 有的人嫌检测为空的 if 语句充斥在代码里会粉碎代码的可维护性, 对此我的发起是:

  • 空值检测必然要有, 有胜于无。
  • 在空值检测老是存在的前提下, 可以优化空值检测的要领和存在形式。 好比会合于一个类 NullChecker 中打点,并与系统的整体错误处理惩罚设计保持一致。会合打点和处理惩罚一致性原则可以作为系统设计的一个准则。 这样主流程中只要增加一行挪用即可, 既可以天网恢恢疏而不漏地检测工具为空, 也不会让代码显得丢脸。
  • class NullChecker {
           public static void checkNull(Object obj, Error error) {
                   if (obj == null)  { throw new BizException(error); }
           }
    }
  • 在参数进口处统一做 trim。 假如在业务逻辑里做 trim , 就会导致有的业务逻辑做了 trim , 有的没做, 表此刻产物上就会有令用户狐疑的工作产生。 好比搜索和导出业务, 搜索能搜索出来, 导出却没有。
  • 未捕捉潜在的异常

    第二个容易堕落的处所是未捕捉潜在的异常。挪用API接口、库函数或系统处事等,只顾着享受便利却不做防护,常导致因为局部失败而影响整体的成果。最好的防护依然是“防止式编程”。 要么在当前要领捕捉异常并返回符合的空值或空工具,要么抛给高层处理惩罚。

    切不行冷静”吞掉错误和异常”。 假如这样做了, 出问题了等着加班和淹灭大量脑细胞吧!
    在CodeReview的时候必然要仔细询问:这里是否大概会抛出异常?假如抛异常会怎么处理惩罚?是否会影响整体处事和返回功效?

    低机能

    低机能会导致产物成果欠好用、不行用,甚至导致产物失败。

    常见环境有:a. 轮回地逐个挪用单个接口获取数据或会见数据库; b. 反复建设险些完全沟通的(开销大的)工具;c. 数据库会见、网络挪用等处事未处理惩罚超时的环境; d. 多重轮回对付大数据量处理惩罚的算法机能低;e. 大量字符串拼接时利用了String而非StringBuilder.

    对付 a,最好提供批量接口或批量并发获取数据; 对付 b, 将可复用工具抽离出轮回,一次建设多次利用; 对付 c,配置公道的超时时间并捕捉超时异常处理惩罚; 对付 d,利用预排序或预处理惩罚, 结构符合的数据布局, 使得算法平均机能在 O(n) 或 O(nlogn) ; 对付 e, 记着: 少量字符串拼接利用String, 大量字符串拼接利用 StringBuilder, 凡是不会利用到 StringBuffer.

    影响范畴过大

    对多个模块依赖的民众函数的修改,容易造成影响范畴高出当前业务窜改,无意识地粉碎依赖于该民众函数的其他业务。要出格慎重。靠得住的方法是:先查察该民众函数的挪用, 假如只有本身的业务用,可适当斗胆一些; 假如有多个处所依赖,抽离一个新的函数,抽离原函数里的可复用部门,然后基于可复用部门构建新的函数。修改原则遵循“开闭”原则,才气尽大概使窜改影响低落到最小化。

    基类及实例字段和要领也属于民众函数的领域。 只管不要修改基类的对象。

    单测问题

    单测是担保工程质量的第一道重要防地。单测问题一般包罗: a. 单测未全部通过; b. 重要业务逻辑缺乏单测; c. 缺乏异常单测; d. 代码改观或BUG修复缺乏单测。

    单测全部通过该当是提交接码到代码库以及代码Review的前提条件。代码提交者该当担保单测全部通过。没有捷径可走。仅当单测全部通过才提交到代码库, 可以通过东西自动化实现。 对付 maven 打点的工程, 只需一个呼吁: mvn test && git push origin branch_name 。 单测该当更注重质,而非纯真追求包围率。

    缺乏单测的重要业务逻辑就像裸露在氛围中的电线一样,固然能跑起来,却是很容易“触电”的。 要领: 增加包围较量全面的单测。