用户工具

站点工具


knowledge:3d_print:2023052301

这是本文档旧的修订版!


编码标准

当你在写与 Marlin 相关的代码时,请遵循以下规范。提交的代码若不接近当前的代码风格,那么会被要求更改。你的代码审核人员应该指出哪里需要被更改。

编码风格

缩进

缩进对于可读性与可维护性起着至关重要的作用,并且能让一些普通文本编辑器(TextMate,Sublime 等)正确地按照代码层级折叠代码。

  • 使用两个空格作为缩进,注意不要使用 <tab> 键,<tab> 会将你拉入无尽的深渊。
  • 使用所有的块元素包括 #if 及其他的预处理语句应该增加它的缩进:
    void myFunction() {
      if (myCondition == 0) {
        #ifdef PETER_PARKER
          slingWeb(100);
        #else
          findPhoneBooth();
        #endif
      }
    }

括号风格

Marlin 使用的括号风格有以下目的:

  • 在开始行的末尾显示已折叠的代码块:{ (…)
  • 保证代码的连续性以及形成统一的代码风格
  • 使在屏幕上显示代码的行数最大化

倘若垂直的缩进空格让代码的可读性更强,那么增加一个空行比使用不同的括号风格更好:

  • 来源于古老的“一个真正的括号风格”
  • 在行末写一个左括号:if (a == 1) {
  • 同样地,对于声明语句:void pizza(int slices) {
  • 同缩进的右括号保持垂直

“一个真正的括号风格”例子:

void my_function(void) {
  if (...) {
    ...
  }
  else {
    ...
  }
 
  switch (val) {
    case 1: SERIAL_CHAR('Q'); break;
    case 2: SERIAL_CHAR('T'); break;
  }
}

空格

  • 在控制关键字后加一个空格:if (…)while (…)do {…} while(…)switch (…) 等等。
  • sizeof() 这种类函数就不用加括号了。
  • 函数名与其参数之间不用加空格:val = myFunction(…);
  • . 操作符左右不用加空格:the_place = state→parks[echo];
  • 类型转换函数后不用加空格:old_state = (int)state;
  • 大多数二元及三元操作符要加空格:'myVar = aVar + bVar * cVar; myVal = (a * b + b * c); ===== 行末的空格 ===== 别在行末留空格。有些编辑器会在新行中自动增加缩进,从而你会活得拥有多余空格的行。 Git 会提示你那拥有多余空格的行,然后让你选择是否要去掉那些空格。但是一旦它帮你去掉了,之后的改动会很烦。 ===== 注释 ===== 注释是一个良好的习惯,但是别太沉醉于注释。永远不要在注释当中解释当前代码是如何运行的:写出一眼就能看出来工作机制的代码比这种注释要好得多,而且给很烂的代码写注释是一种浪费生命的行为。 一般情况下,注释所代表的是你的代码是干嘛的,而不是你的代码是如何工作的。在函数体中的注释应尽量的少。如果一个函数非常的复杂,你应该考虑分段地把注释写在函数中每个基本单元内。将细节代码写在函数头中,用于阐述它是干嘛以及为什么它要这么干。 * 函数、类以等使用“D 型氧气”风格注释在 .h 文件中。<code C> /** * 这是 Marlin 中的一种比较好的多行注释。 * 请坚持使用它。 * * 这种属于类“D 型氧气”风格,一旦关键字被添加, * 我们便能够自动生成代码文档并且提供更多 * 完整的开发指南. */ </code> * 当注释在 3 行以下时,使用 C++ 的 '' 注释。<code C++> 一行或两行时

应该使用这样的注释。

knowledge/3d_print/2023052301.1684843348.txt · 最后更改: 2023/06/07 04:09 (外部编辑)

Valid HTML5 Valid CSS Driven by DokuWiki