layout.md 2.7 KB

排版

::: details 目录 [[toc]] :::

基本要求

  • 一个文件中只能定义一个类。
  • 每行字符不超过 120 个字符,一个函数最多 200 行代码。
  • 一行只允许有一条语句。
  • 一行只允许定义一个变量。
  • ifelse ifelseforwhile 强制使用大括号。只有一行代码也要用大括号括起来。
  • 不得省略语句结束的分号。
  • 类的 public 类型属性与函数不加访问修饰符;
  • 如果函数没有返回值,必需使用 void
  • 如果函数体为空,必须加注释”// do nothing“明确标明。 typescript f(x: number, y: string): void { // do nothing }
  • 如果函数还未完成,必须加注释”// todo:原因“标明。 typescript typeList(): Array<string> { // todo: 类型列表未确认 return null; }

程序各部分的放置顺序

  • 文件注释头
  • import 导入引用的包
  • 类、接口、枚举注释
  • 定义类、接口、枚举
  • 属性按 publicprotectedprivate 顺序定义。相关的属性定义在一起
  • 构造函数的定义放在所有函数前
  • 函数按 publicprotectedprivate 顺序定义。相关的函数定义在一起
  • 重载函数时,实现函数放在重载函数的最后

留空

空行

  • 相对独立的程序块之间应加空行。
  • 代码块之间需隔一个空行(即”}“符号后跟一个空行),如果”}“后是上层代码的”}“,则不加空行。
  • 属性定义与函数定义之间隔一空行。
  • 属性与属性之间隔一空行。
  • 属性的 get/set 不留空行。
  • 每个函数定义与之前的代码之间隔一空行。

缩进

  • 禁止使用空格和 tab 混合缩进,缩进控制每级 4 个空格。
  • 代码层级通过”{“与"}”标注,“{”进一级,“}”退一级。
  • “{”与代码定义(类、接口、枚举、函数、ifswitchforwhile等)处于同一行。
  • switchcase 为同级代码(缩进相同),case 后代码缩进一级。

空格

  • 逗号,冒号后要有一个空格。
  • 运算符(数值、关系、逻辑)前后要有一个空格。非运算符(!)与取负运算符(-)不要空格。
  • 类的继承符号“:“前后要保留一个空格。
  • 函数返回类型,“:”与括号之间无空格,与返回值类型间有一个空格。
  • 函数名与小括号间没有空格。
  • 定义变量、属性、函数入参。名称后直接跟”:“,不需要空格。”:“与类型之间有一个空格。
  • 小括号里开始不需要空格。
  • forifelseswitch 与小括号间有一个空格。