代码格式:
1.通过预制体注册到Lua 全部加前缀l_xxx如:l_title, l_titleTag,l_listShow
2.变量
a.变量名为小写+大写 格式为 小写类型+变量名
如:整数 nBattle
字符串 strTitle
列表 listData
表格式 tPalyer
GameObject:goItem
Transform:tranItem
Image:imageTitle
脚本:scriptImageNum
b.常变量 全部大写 CONST_XXXX
如:local CONST_INT_MAX_HP = 3,CONST_STR_DESC_NAME = "strDescName"
3.方法名
a.原则上是副词加名词 开头字母大写
b.原则上无需暴露在外部的接口用Local标识符
4.类名
a.脚本名 原则上全部为小写如:palyer_manager
b.表名为单词第一个字母大写 PlayerManager
二、代码安全性
1.容错
a.C#
引用类型:调用的地方必须判断是否为空
数组:必须判断下标是否为空或者越界
int:需要强转字符串为整型的必须用TryParse
hashSet、Dictionary之类检测唯一值的容器,需要add的必须判断当前是否已经存在key
PlayerPrefs:需要Get方法的 必须用HasKey判断是否存在Key
b.lua
表: 用到表内部元素的必须判断表是否为空(即使是本地表格数据以及服务器数据)
数组:必须判断下标是否为空或者越界
num: 必须要给默认值 如local a = 0,tonumber传入参数的一定要注意tonumber后是否为nil
string: 必须要给默认值 如local str = ""
需要报错的地方用LogError()打出日志
2.代码的安全性
a.外部调用委托或者回调一定要注意安全性
比如Test:MonoBehaviour
Test.fun 注册到全局定时器
当此物体被删掉的时候Test已经不存在了 如果外部回调回来fun并且fun方法内部有调用此物体或者下层结点物体会直接报错
b.协程安全
yield return后则为下一帧
如协程 IEnumerator Test()
{
GameObject obj = new GameObject("test)
yield return
obj.name = "test"
}
此代码如果在yield return后 obj被删掉了 则下帧报错
三、其他规范
1.杜绝使用神奇数字
如:性别 全部用枚举:SexEnum.man之类的
2.注释的必要性