为了让课题组开发的代码更容易阅读、维护和复现,我们总结了一些在软件开发中的经验,供大家在编写代码时参考。大多数科研代码都会不断演化,也会被不同同学接手维护,良好的编程习惯可以让整个团队的开发效率更高,也能减少很多不必要的沟通成本。

1. 基本开发理念

1-1. 开源与共享

实验室开发的软件通常会以开源形式发布,主要目的是快速验证研究想法,并与社区分享成果。在实现功能的同时,也希望尽量保持代码结构清晰、易于理解,方便后续维护和他人使用。

1-2. 代码主要是写给人读的

编程不仅是让机器执行,更是与未来的自己以及其他同学进行交流。很多时候代码写完之后,过几天再看都会觉得陌生。因此,相比“炫技”的写法,简单、清楚的实现方式通常更好。

1-3. 尽量避免复杂或“很酷”的语法

有些语言支持非常灵活的语法,可以把很多逻辑写在一行里面。虽然这样看起来很简洁,但往往会增加代码阅读难度。一般来说,清晰、直接的写法更容易被理解和维护。

1-4. 尽量考虑不同输入情况

在编写程序时,可以多想一想可能出现的各种输入情况,例如空输入、异常参数、极端数值等。提前考虑这些情况,可以让程序更加稳定,也更容易在真实环境中使用。

2. 阅读代码的一些建议

在阅读别人写的代码或大型项目代码时,可以尝试按照下面的顺序来理解:

  • 先理解整体结构:大致了解程序有哪些模块,函数之间是如何调用的
  • 再看函数接口:阅读函数时,先弄清楚这个函数的输入和输出是什么
  • 理解实现思路:搞清楚这个函数是通过什么思路来完成任务的
  • 最后再看具体实现:在理解思路之后,再逐行阅读具体代码

这种方式通常比直接逐行阅读代码更容易理解程序整体逻辑。

3. 一些简单的编码习惯

3-1. 合理使用空格

适当的空格可以让代码更容易阅读。例如:

c=a+b        →    c = a + b
f(a,b)       →    f(a, b)

一般来说:

  • 运算符两侧可以加空格
  • 逗号后面加空格
  • 函数参数之间用逗号加空格分隔

3-2. 标识符命名

变量、函数或类的名字尽量表达其含义。名字稍微长一点通常没有关系,因为现代IDE都支持自动补全,例如:

n              vs        user_count
t              vs        parsed_tokens

含义明确的名字往往更容易维护。

3-3. 缩进

为了保持代码风格一致,建议:

  • 使用4个空格作为缩进宽度
  • 在IDE中设置tab自动转换为空格

这样可以避免不同编辑器对tab解释不同而导致代码对齐问题

3-4. 函数尽量保持简单

如果一个函数变得非常长或者承担了很多不同的任务,可以考虑把它拆分成几个小函数。这样代码结构会更清晰,也更容易调试。

3-5. 适当写一些注释

对于比较复杂的逻辑,写一点简短的说明会很有帮助。一般来说,注释可以解释“为什么要这样实现”,而不是简单重复代码本身的内容。