课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都开始学习软件编程开发,但是由于开发经验的不足,偶尔也会因为代码问题而造成异常,下面我们就一起来了解一下具体情况吧。
一、关于异常
Java的异常可以分为两种:运行时异常和检查性异常。
运行时异常:
RuntimeException类及其子类都被称为运行时异常,这种异常的特点是Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过。
检查性异常:
除了RuntimeException及其子类以外,其他的Exception类及其子类都属于检查性异常。检查性异常必须被显式地捕获或者传递。当程序中可能出现检查性异常时,要么使用try-catch语句进行捕获,要么用throws子句抛出,否则编译无法通过。
二、代码审查要点
实现
此代码更改会执行它应该做的事情吗?
这种解决方法是简单的吗?
这个更改有引入一些不需要的编译时或运行时的依赖吗?
是否使用了不应该使用的框架、API、库、服务?
是否存在可以提升解决方法的未使用的框架、API、库、服务?
代码是否处于正确的抽象级别?
代码是否的模块化做的是否足够好?
你是否有其他的解决方案,该方案在代码可维护性、可读性、性能、安全方面表现更好?
是否已经存在类似功能的函数?如果有,为什么不复用?
是否有佳实践、设计模式或特定语言模式可以优化代码?
代码是否遵循面向对象的分析和设计原则,例如单一责任原则,开闭原则,里氏替换原则,接口隔离,依赖注入?
逻辑错误或Bug
你能想到代码不按预期运行的任何用例吗?
你能想到任何可能破坏代码的输入或外部事件吗?
错误处理和日志
错误都被正确处理了吗?
是否有需要增加或删除的日志/debug信息?
错误消息对用户是否友好?
是否有足够的日志,它们的编写方式是否是易于调试的?
可用性和可访问性
从可用性角度出发,所提出的解决方案是否设计合理?
API文档是否足够好?
提出的解决方案是否具备可访问性?
API/UI是否直观易用?
测试与可测试性
代码是否达到可测试标准?
是否有足够的自动化测试(单元测试/集成测试/系统测试)?
现有测试是否合理覆盖代码变更?
是否有额外的测试用例、输入或边界用例以供测试?
依赖
如果这个修改需要更新代码以外的文件,例如更新文档,配置,readme文件。是否完成了这些更新?
这个修改是否会对系统其他地方造成影响?是否能够向后兼容?
安全和隐私数据
这段代码是否打开软件的安全漏洞?
权限和身份验证是否被正确处理?
是否安全处理了敏感数据,例如用户数据、信用卡信息等?是否正确使用加密方法?
代码更改是否显露了一些私密信息(如迷药,用户名等)?
如果代码处理用户输入,是否解决了跨站点脚本,SQL注入等安全漏洞,是否进行了输入清洗和验证?
从外部API或库中获得的数据是否进行了相应的检查?
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!