我妈常说,花若自开,蝴蝶自来

点个赞,评论下呗

如何提高代码质量

如何提高代码质量

项目开发流程

image

从上图可见,对于在开发阶段能有效控制代码质量涉及以下几个元素:

  1. 需求PRD.
  2. 测试用例.
  3. 需求开发
  4. 代码Review

之后,从以下几个方面来谈一下如何有效的提高代码质量。

需求PRD

PRD 文档主要面向开发、测试、项目经理、交互设计师、运营及其他业务人员。PRD 文档的目的是传达产品的整体思路和核心需求,从而实现各方的需求同步。

如今,许多公司的软件开发模式采用敏捷或迭代开发方式,旨在最短时间内上线可用的产品版本。尤其是在敏捷开发过程中,需求有时会在短期内多次变更,因此对项目团队的协作提出了更高的要求。在这种情况下,编写传统的 PRD 文档可能会拖慢产品开发节奏,且使项目进度难以掌控。

针对敏捷开发,常见的解决方案包括:

PRD 文档的简洁性和灵活性

  • 简洁明确:PRD 文档应简洁明了,聚焦于核心需求和目标。避免对实现细节的过度描述,因为这些细节可能会随着开发进度而变化。
  • 模块化编写:将需求划分为独立的模块或功能块,便于更新和维护。当需求发生变化时,只需调整相关模块,而无需重写整个文档。

频繁沟通和同步

  • 与团队保持密切沟通:在敏捷开发中,产品经理、开发团队及其他相关方之间的沟通至关重要。通过频繁的沟通(如每日站会、需求评审会等),确保团队对需求有共同的理解。
  • 需求变更管理:建立需求变更的流程和机制。每次需求变更时,都应明确变更的原因、影响范围及相关优先级。

持续更新 PRD

  • 迭代更新:随着开发的迭代,及时更新 PRD 文档,反映最新的需求变更和功能调整。PRD 应该是一个“活”的文档,随时可以进行修改和补充。
  • 版本控制:使用版本控制工具(如 Confluence、JIRA)管理 PRD 的不同版本,以便跟踪历史变更记录,确保团队了解需求变化的过程。

这些内容主要是产品经理需要考虑的事项。但对于开发人员而言,除了必要的 PRD 文档外,在接收到需求之初,还应编写一份详细的需求设计文档,其中可以包括以下内容:

  • 流程图,了解功能流转及可能涉及的功能模块。
  • 开发过程中涉及的字段信息及其返回给前端的形式。
  • 需要产出的接口。
  • 测试时可能涉及的场景。

注:灵感往往转瞬即逝,因此应提前做好准备,后续再进行补充和更新。

测试用例

单元测试是对软件中的基本组成单位(如模块、过程、函数或类)进行的测试,在保障软件质量的过程中起着重要作用。

虽然单元测试不能替代系统测试和验收测试,但从长远来看,单元测试能够显著提高工作效率,并有效减少软件中的缺陷,从而提升整体软件质量。

进行单元测试的好处包括:

  1. 降低测试成本:通过及早发现并修复问题,减少后续测试和维护的工作量。
  2. 提升产品质量:确保每个组成单元功能的正确性,从而增强整个系统的稳定性和可靠性。

设置测试场景:每个测试用例应设置独立的测试场景,包括初始化必要的数据和对象。

执行被测试代码:调用待测试的方法或函数,并记录其返回值或结果。

断言结果:使用断言(assert)语句验证被测试代码的输出是否符合预期。例如,在 JUnit 中,常用的断言包括 assertEqualsassertTrueassertFalse 等。

清理环境:在测试结束后,清理测试过程中创建的临时数据或对象,以确保测试环境的干净和独立性。

常用的单元测试工具包括 JUnit 和 Mockito 等测试框架。

需求开发

编程规范

  • 最新版:阿里巴巴Java开发手册-黄山版

该手册的内容分为“强制”、“推荐”和“参考”三大类,遵循这些规范可以有效避免大多数常见问题。

与其配套的 IDEA 插件:Alibaba Java Coding Guidelines(阿里巴巴代码规范插件)。

统一 java 代码格式化规则

统一的格式化规则有助于减少 Git 上的无效变更。导入方法📎java-idea-代码格式化配置.xml

image

编码注释

基于自己编写的代码,编写Javadoc注释,不需要一行一行的去注释,只需要针对接口进行述,或者接口内部,按功能进行注释.

你可以通过 IDEA 配置注释模板来减少工作量。

写出好代码

什么是好代码:

  • 可读性(Readability)

    • 易于理解:好代码应该容易被其他开发者阅读和理解,即使是第一次接触该代码的人。清晰的命名、合理的注释、简单的结构都能够提升代码的可读性。

    • 一致性:遵循一致的代码风格和命名规范,使得代码在整个项目中保持统一,方便团队合作。

  • 可维护性(Maintainability)

    • 易于修改:好代码应该容易被修改和扩展。遵循单一职责原则、模块化设计等,可以让代码在需要变更时,减少对其他部分的影响。

    • 有良好的注释和文档:文档和注释能帮助开发者快速理解代码的功能和逻辑,尤其是在复杂的逻辑或算法部分。

  • 健壮性(Robustness)

    • 错误处理:好代码应该能够处理各种异常情况,避免程序在意外情况下崩溃。良好的错误处理机制能够提高代码的健壮性。

    • 边界条件:对各种边界条件和极端情况的处理也能体现代码的健壮性,避免出现预料之外的错误。

  • 可测试性(Testability)

    • 易于编写单元测试:好代码应该是易于测试的,特别是能够通过自动化测试来验证其功能。代码的结构应该支持测试覆盖率高,并且测试能够快速定位问题。

    • 低耦合性:模块之间应当尽量保持低耦合,以便于进行独立测试和调试。

  • 性能(Performance)

    • 效率高:好代码在满足功能需求的前提下,应当具有较高的执行效率。代码中的算法和数据结构应当经过优化,以满足性能要求。

    • 资源管理:合理使用内存、CPU、I/O资源,避免资源泄漏和不必要的开销。

  • 可扩展性(Scalability)

    • 易于添加新功能:好代码应当具备良好的扩展性,可以在不影响现有代码的基础上,方便地添加新功能。

    • 遵循开闭原则:代码应当对扩展开放,对修改关闭,尽量通过扩展实现新的需求,而不是修改现有代码。

  • 复用性(Reusability)

    • 代码复用:好代码应该具备高复用性,常见的功能和逻辑应当抽象为独立的模块或函数,方便在不同项目或不同场景中重复使用。

    • 模块化设计:通过接口、抽象类等实现模块化设计,使代码易于复用和扩展。

  • 简洁性(Simplicity)

    • 避免过度设计:好代码应该避免不必要的复杂性,不做“过度设计”。简单明了的解决方案往往是最好的。

    • KISS 原则(Keep It Simple, Stupid):遵循KISS原则,尽量保持代码简单,避免引入复杂的、不必要的逻辑。

  • 安全性(Security)

    • 保护数据和系统:好代码应该考虑到安全性,避免常见的安全漏洞,如SQL注入、XSS攻击等。

    • 遵循最佳安全实践:在处理敏感信息时,遵循加密、认证、授权等最佳安全实践。

  • 遵循设计原则和模式

    • 面向对象设计:遵循面向对象的设计原则,如SOLID原则,以确保代码具有良好的设计结构。

    • 设计模式:合理使用设计模式,以解决常见问题,提高代码的可复用性和灵活性。

推荐我读过的几本比较好的书.

  1. 《代码整洁之道clean code》
  2. 《Effective Java》
  3. 《重构 改善既有代码的设计》
  4. 《重学Java设计模式·小傅哥》

工具类

尽量使用已被验证的工具类,不要重复造轮子。若现有工具无法满足需求,再考虑扩展或创建新的功能。

代码潜在问题排查

推荐IDEA开发插件,代码分析工具,分析代码存在潜在的问题

  • SonarLint:
  • QAPlug:
  • QAPlug - checkStyle
  • QAPlug - FindBugs
  • QAPlug -PMD

搭配使用,效果更佳.

Ai工具辅助

code Review

坚信三人行必有我师,可以找大佬帮忙看看自己写的代码,可以从哪些方面去优化.

小tips

  1. 先写测试用例,再写代码.
  2. 好代码是一遍一遍改出来的。需要留时间打磨。
  3. 先实现好实现的或者最重要的一个功能点,再慢慢扩充。
  4. 尽早获得同事的反馈。有不确定的方案选择,要和团队商量,避免返工。
posted @ 2024-08-10 19:46  故乡的胡辣汤开张了吗  阅读(9)  评论(0编辑  收藏  举报