# 命名
::: details 目录
[[toc]]
:::

## 标识符
标识符的命名要清晰、明了，有明确含义。使用完整的单词或大家基本可以理解的缩写，避免使人产生误解。尽量采用采用英文单词或全部中文全拼表示。

* 标识符只能使用字母，数字与“_”。
* 首字符不能是数字；
* 只有私有变量前缀使用“_”；
* 全局常量的各单词间使用“_”分隔；

## 大小写
### 命名规范
* **Pascal：**

&emsp;&emsp;    将标识符的首字母和后面连接的每个单词的首字母都大写。

* **Camel：**

&emsp;&emsp;    标识符的首字母小写，而每个后面连接的单词的首字母都大写。

* **Snake：**

&emsp;&emsp;    标识符的每个单词都小写，单词间使用分隔符“_”分隔。

### 大小写规范
| 标识符       | 大小写   | 示例 |
|:-----------:|:-------:|-------|
| 命名空间     | Pascal   | namespace Sybotan {} |
| 类          | Pascal   | export class SRect {} |
| 接口        | Pascal   | export interface SICommandLog {} |
| 函数        | Camel   | isEmpty(): boolean |
| 属性        | Camel   | get left(): number |
| 事件回调     | Camel   | onMouseUp(event: SMouseEvent): boolean |
| 枚举类型     | Pascal   | export enum STouchState {None, Move} |
| 枚举值       | Pascal   | export enum STouchState {None, Move} |
| 变量        | Camel    | size: SSize; |
| 私有变量     | Camel    | private _bg: SColor; |
| 参数        | Camel    | translate(dx: number, dy: number): void |
| 局部变量     | Camel    | let x0 = 10; |
| 泛型        | 大写字母   | identity\<T>(arg: T): T {return arg;} |
| 全局常量     | 大写Snake | const BG_COLOR = SColor.Blue; |
