Skip to content

Commit 68e84d1

Browse files
committed
Add new topic: Coding Guidelines
1 parent 653eb3d commit 68e84d1

File tree

4 files changed

+51
-30
lines changed

4 files changed

+51
-30
lines changed

README.md

+1-4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
3535
* [与其它构建工具整合](./doc/handbook/Integrating with Build Tools.md)
3636
* [NPM包的类型](./doc/handbook/Typings for NPM Packages.md)
3737
* Wiki
38+
* [编码规范](./doc/handbook/coding_guidelines.md)
3839
* [常见编译错误](./doc/handbook/Common Errors.md)
3940
* [支持TypeScript的编辑器](./doc/handbook/TypeScript-Editor-Support.md)
4041
* [结合ASP.NET v5使用TypeScript](./doc/handbook/Using-TypeScript-With-ASP.NET-5.md)
@@ -50,10 +51,6 @@ TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
5051
* Read [TypeScript Language Specification (Recommended)](https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md)
5152
* Read [TypeScript 语言规范 (译完第一章)](./doc/TypeScript Language Specification.md)
5253

53-
**Others**
54-
55-
* [编码规范](./doc/coding_guidelines.md)
56-
5754
I'd love for you to contribute to the translation:)
5855

5956

SUMMARY.md

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
* [与其它构建工具整合](./doc/handbook/Integrating with Build Tools.md)
2727
* [NPM包的类型](./doc/handbook/Typings for NPM Packages.md)
2828
* Wiki
29+
* [编码规范](./doc/handbook/coding_guidelines.md)
2930
* [常见编译错误](./doc/handbook/Common Errors.md)
3031
* [支持TypeScript的编辑器](./doc/handbook/TypeScript-Editor-Support.md)
3132
* [结合ASP.NET v5使用TypeScript](./doc/handbook/Using-TypeScript-With-ASP.NET-5.md)
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,70 @@
1-
这个编码规范是给开发TypeScript团队开发TypeScript时使用的。对于我们使用TypeScript的用户来说不一定适用,仅做参考吧。
1+
<!-- markdownlint-disable MD005 -->
2+
<!-- markdownlint-disable MD029 -->
3+
4+
这个编码规范是给TypeScript开发团队在开发TypeScript时使用的。
5+
对于使用TypeScript的普通用户来说不一定适用,但是可以做为一个参考。
26

37
## 命名
8+
49
1. 使用PascalCase为类型命名。
5-
1. 不要使用`I`做为接口名前缀。
6-
1. 使用PascalCase为枚举值命名。
7-
1. 使用camelCase为函数命名。
8-
1. 使用camelCase为属性或本地变量命名。
9-
1. 不要为私有属性名添加`_`前缀。
10-
1. 尽可能使用完整的单词拼写命名。
11-
12-
## 组件
10+
2. 不要使用`I`做为接口名前缀。
11+
3. 使用PascalCase为枚举值命名。
12+
4. 使用camelCase为函数命名。
13+
5. 使用camelCase为属性或本地变量命名。
14+
6. 不要为私有属性名添加`_`前缀。
15+
7. 尽可能使用完整的单词拼写命名。
16+
17+
## 组件
18+
1319
1. 1个文件对应一个逻辑组件 (比如:解析器,检查器)。
14-
1. 不要添加新的文件。 :)
15-
1. `.generated.*`后缀的文件是自动生成的,不要手动改它。
20+
2. 不要添加新的文件。 :)
21+
3. `.generated.*`后缀的文件是自动生成的,不要手动改它。
1622

1723
## 类型
24+
1825
1. 不要导出类型/函数,除非你要在不同的组件中共享它。
19-
1. 不要在全局命名空间内定义类型/值。
20-
1. 共享的类型应该在`types.ts`里定义。
21-
1. 在一个文件里,类型定义应该出现在顶部。
26+
2. 不要在全局命名空间内定义类型/值。
27+
3. 共享的类型应该在`types.ts`里定义。
28+
4. 在一个文件里,类型定义应该出现在顶部。
29+
30+
## `null``undefined`
2231

23-
## `null``undefined`:
2432
1. 使用 **undefined**,不要使用 null。
2533

2634
## 一般假设
35+
2736
1. 假设像Nodes,Symbols等这样的对象在定义它的组件外部是不可改变的。不要去改变它们。
28-
1. 假设数组是不能改变的。
37+
2. 假设数组是不能改变的。
2938

3039
##
40+
3141
1. 为了保持一致,在核心编译链中不要使用类,使用函数闭包代替。
32-
42+
3343
## 标记
44+
3445
1. 一个类型中有超过2个布尔属性时,把它变成一个标记。
3546

3647
## 注释
48+
3749
为函数,接口,枚举类型和类使用JSDoc风格的注释。
3850

3951
## 字符串
52+
4053
1. 使用双引号`""`
41-
1. 所有要展示给用户看的信息字符串都要做好本地化工作(在diagnosticMessages.json中创建新的实体)。
54+
2. 所有要展示给用户看的信息字符串都要做好本地化工作(在diagnosticMessages.json中创建新的实体)。
4255

4356
## 错误提示信息
57+
4458
1. 在句子结尾使用`.`
45-
1. 对不确定的实体使用不定冠词。
46-
1. 确切的实体应该使用名字(变量名,类型名等)
47-
1. 当创建一条新的规则时,主题应该使用单数形式(比如:An external module cannot...而不是External modules cannot)。
48-
1. 使用现在时态。
59+
2. 对不确定的实体使用不定冠词。
60+
3. 确切的实体应该使用名字(变量名,类型名等)
61+
4. 当创建一条新的规则时,主题应该使用单数形式(比如:An external module cannot...而不是External modules cannot)。
62+
5. 使用现在时态。
4963

5064
## 错误提示信息代码
65+
5166
提示信息被划分类成了一般的区间。如果要新加一个提示信息,在上条代码上加1做为新的代码。
67+
5268
* 1000 语法信息
5369
* 2000 语言信息
5470
* 4000 声明生成信息
@@ -59,22 +75,27 @@
5975
## 普通方法
6076

6177
由于种种原因,我们避免使用一些方法,而使用我们自己定义的。
78+
6279
1. 不使用ECMAScript 5函数;而是使用[core.ts](https://github.com/Microsoft/TypeScript/blob/master/src/compiler/core.ts)这里的。
63-
1. 不要使用`for..in`语句;而是使用`ts.forEach``ts.forEachKey``ts.forEachValue`。注意它们之间的区别。
64-
1. 如果可能的话,尝试使用`ts.forEach``ts.map``ts.filter`代替循环。
80+
2. 不要使用`for..in`语句;而是使用`ts.forEach``ts.forEachKey``ts.forEachValue`。注意它们之间的区别。
81+
3. 如果可能的话,尝试使用`ts.forEach``ts.map``ts.filter`代替循环。
6582

6683
## 风格
6784

6885
1. 使用arrow函数代替匿名函数表达式。
69-
1. 只要需要的时候才把arrow函数的参数括起来。<br />比如,`(x) => x + x`是错误的,下面是正确的做法:
86+
2. 只要需要的时候才把arrow函数的参数括起来。<br />比如,`(x) => x + x`是错误的,下面是正确的做法:
87+
7088
1. `x => x + x`
7189
2. `(x,y) => x + y`
7290
3. `<T>(x: T, y: T) => x === y`
73-
1. 总是使用`{}`把循环体和条件语句括起来。
91+
92+
3. 总是使用`{}`把循环体和条件语句括起来。
7493
4. 开始的`{`总是在同一行。
7594
5. 小括号里开始不要有空白. <br />逗号,冒号,分号后要有一个空格。比如:
95+
7696
1. `for (var i = 0, n = str.length; i < 10; i++) { }`
7797
2. `if (x < 10) { }`
7898
3. `function f(x: number, y: string): void { }`
99+
79100
6. 每个变量声明语句只声明一个变量 <br />(比如 使用 `var x = 1; var y = 2;` 而不是 `var x = 1, y = 2;`)。
80101
7. `else`要在结束的`}`后另起一行。

preface.md

+2
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ TypeScript目前还在积极的开发完善之中,不断地会有新的特性
4747
* [与其它构建工具整合](./doc/handbook/Integrating with Build Tools.html)
4848
* [NPM包的类型](./doc/handbook/Typings for NPM Packages.html)
4949
* Wiki
50+
* [编码规范](./doc/handbook/coding_guidelines.html)
5051
* [常见编译错误](./doc/handbook/Common Errors.html)
5152
* [支持TypeScript的编辑器](./doc/handbook/TypeScript-Editor-Support.html)
5253
* [结合ASP.NET v5使用TypeScript](./doc/handbook/Using-TypeScript-With-ASP.NET-5.html)
@@ -55,6 +56,7 @@ TypeScript目前还在积极的开发完善之中,不断地会有新的特性
5556

5657
## 主要修改
5758

59+
* 2016-01-23 新增章节:[编码规范](./doc/handbook/coding_guidelines.html)
5860
* 2016-01-23 新增章节:[架构概述](./doc/handbook/Architectural-Overview.html)
5961
* 2015-12-27 新增章节:[结合ASP.NET v5使用TypeScript](./doc/handbook/Using-TypeScript-With-ASP.NET-5.html)
6062
* 2015-12-26 新增章节:[支持TypeScript的编辑器](./doc/handbook/TypeScript-Editor-Support.html)

0 commit comments

Comments
 (0)