# 排版 ::: details 目录 [[toc]] ::: ## 基本要求 * 一个文件中只能定义一个类。 * 每行字符不超过 120 个字符,一个函数最多 200 行代码。 * 一行只允许有一条语句。 * 一行只允许定义一个变量。 * ```if```、```else if```、```else```、```for```、```while``` 强制使用大括号。只有一行代码也要用大括号括起来。 * 不得省略语句结束的分号。 * 类的 ```public``` 类型属性与函数不加访问修饰符; * 如果函数没有返回值,必需使用 ```void```; * 如果函数体为空,必须加注释”```// do nothing```“明确标明。 ```typescript f(x: number, y: string): void { // do nothing } ``` * 如果函数还未完成,必须加注释”```// todo: ```原因“标明。 ```typescript typeList(): Array { // todo: 类型列表未确认 return null; } ``` ## 程序各部分的放置顺序 * 文件注释头 * ```import``` 导入引用的包 * 类、接口、枚举注释 * 定义类、接口、枚举 * 属性按 ```public```、```protected```、```private``` 顺序定义。相关的属性定义在一起 * 构造函数的定义放在所有函数前 * 函数按 ```public```、```protected```、```private``` 顺序定义。相关的函数定义在一起 * 重载函数时,实现函数放在重载函数的最后 ## 留空 ### 空行 * 相对独立的程序块之间应加空行。 * 代码块之间需隔一个空行(即”}“符号后跟一个空行),如果”}“后是上层代码的”}“,则不加空行。 * 属性定义与函数定义之间隔一空行。 * 属性与属性之间隔一空行。 * 属性的 ```get```/```set``` 不留空行。 * 每个函数定义与之前的代码之间隔一空行。 ### 缩进 * 禁止使用空格和 tab 混合缩进,缩进控制每级 4 个空格。 * 代码层级通过”{“与"}”标注,“{”进一级,“}”退一级。 * “{”与代码定义(类、接口、枚举、函数、```if```、```switch```、```for```、```while等```)处于同一行。 * ```switch``` 与 ```case``` 为同级代码(缩进相同),```case``` 后代码缩进一级。 ### 空格 * 逗号,冒号后要有一个空格。 * 运算符(数值、关系、逻辑)前后要有一个空格。非运算符(!)与取负运算符(-)不要空格。 * 类的继承符号“:“前后要保留一个空格。 * 函数返回类型,“:”与括号之间无空格,与返回值类型间有一个空格。 * 函数名与小括号间没有空格。 * 定义变量、属性、函数入参。名称后直接跟”:“,不需要空格。”:“与类型之间有一个空格。 * 小括号里开始不需要空格。 * ```for```、```if```、```else```、```switch``` 与小括号间有一个空格。