浅谈自己的编程风格
大约 3 分钟
# 前言
此篇闲聊贴,大家可以随意发表自己的意见
# 命名风格
- 蛇形命名法
也就是类似 user_name
- 原因
强迫症
以前用驼峰,现在项目要求也用驼峰,不过我私下还是蛇形,嘿嘿嘿
虽然是蛇形,不过我还是有一套自己 久经考验
# 命名结构
变量含义在前,变量类型在后,
- boolean:
let open_b: boolean;
let touch_b: boolean;
- string:
let name_s: string;
let time_s: string;
- number:
let count_n: number;
let time_n: number;
- object:若是类型名超过 4 个字符则直接省略或者简写
let temp_node: cc.Node;
let temp_anim: cc.Animation;
- any 或不清楚类型:那就直接省略
let temp: any;
- array:一维便是一 s,对象类型用 a 代替
// 基础数据类型数据
let temp_ss: string[];
let temp_ns: number[];
let temp_bs: boolean[];
// 对象数组
let node_as: cc.Node[];
// 多维数组
let node_ass: cc.Node[][];
let node_asss: cc.Node[][][];
如果用我这套命名法,那么不用把鼠标放变量上,一眼就能知道这个变量是什么类型
# 命名规则
首先必须满足上面的类型规则,接下来…
- Class
- private 成员/函数
private _test: any;
- protected 成员/函数
protected _test: any;
- public 成员/函数
public test: any;
- Function
- 参数:下划线结尾,代表外部参数
class test {
public func(test_b_: boolean, args_as_: any[]): void { ... }
}
- 复数变量
- 直接在第二个及之后变量末尾追加数字
let temp_n: number;
let temp2_n: number;
// 循环示例,用的最多!!!,也是最方便的
this.node.children.forEach((v, k_n)=> {
v.children.forEach((v2, k2_n)=> {
});
});
# 代码块划分
不知道各位是什么注释代码块的呢?会不会出现代码块注释和变量注释放在上下两行很难看的情况,或者留出几行空间注释,我觉得都不行
function temp() {
// 这里是代码块1
{
let temp_n = 0;
// 这里是代码块2
{
let temp_n = 0;
}
}
}
用块作用域来划分代码块, 就算出现变量命名相同也不会警告,更可以通过 ide 折叠代码块,获得极好的代码阅读体验!
# 文件命名
采用目录跟进式命名
// assets/script/main/login
则 login 文件夹下的 ts 文件命名为:main_login_xxx.ts
# 模块结构
当初研究了段时间模块拆分,最终选择如下
// 存放模块内部使用的接口,类型,枚举,常量等
module _test { ... }
class test { ... }
// 存放模块内部和外部使用的接口,类型,枚举,常量等
export module test_ { ... }
export default test;
# 模块集成
写框架必配,我用过几乎所有写法,下面的是我最推荐使用的方式
// ui_a.ts
export default a;
// ui_b.ts
export default b;
// ui_export.ts
export { a, a_ } from "./a";
export { b, b_ } from "./b";
// ui.ts
import * as ui from "./ui_export";
export default ui;