有一个悬崖
旁边立个牌子-上面写着-warning
只有程序员掉下去了
Warning 就是潜在的问题
当前项目的warning log 大多数都是定义了变量但未使用,也有少量的代码编写问题。尽量减少warning,对于无法避免的warning ,可以添加#pragma warning disable屏蔽当前警告。但不能滥用,对于新出现的warning 要有针对的解决,尽量做到无 warning。通过查看warning log 可以发现很多代码问题,通过项目前100多个warning归纳如下:
命名 不能和unity 内置的名字重复,比如常见的name(会有警告),m_Name(会有报错日志,曾经出现过UI没办法在编辑器里关联这个UI对象);
子类中命名函数和父类中函数一致,注意需要改为override还是使用new 定义为子类新函数。
值类型对象是不需要和null进行比较的,因为返回的永远是true。作为if 条件的话,else语句永远不会被执行到。
定义了很多变量,但没有使用。特别是还通过逻辑处理给变量赋值了,却没有使用。多余的运算量。
代码编写注意,复制粘贴错误,无意义的定义赋值。
int nTempIndex = nTempIndex = (nShowLayer - 1) % m_arrSamsaraGroup.Count;
注释不需要的代码时候,要注意前面定义并且不再使用的变量也要一起注释掉,发否就会出现4 中的情况。
好多地方用了try{}catch(Exception e),却没有打印出exception内容。对于异常情况,能处理的尽量处理,是在不能处理了在用try / catch。参考
old:
int num = red_world_min_currency;
try
{
num = int.Parse(m_uiNeedAncientJadeInput.value);
}
catch (Exception e)
{
}
new:
int num = red_world_min_number;
if (m_uiRedBagNumberInput!= null)
{
if (!int.TryParse(m_uiRedBagNumberInput.value, out num))
{
num = red_world_min_number;
}
}
弃用的逻辑,在代码中间直接return的。编辑器会报警告
warning CS0429: Unreachable expression code detected
要么就注释掉后面的代码,如果不想注释,那就加上 #pragma warning disable
代码逻辑,false 与其他没意义,这样书写会影响代码阅读性。
CommonDesigner.SetObjectVisable(m_aNearByReliveCDLabel.gameObject,false && !bInMirror);
通过查warning log 也可以发现问题。如下,log 为
The variable `tmpValue' is assigned but its value is never used
可以发现本意是用来做大小值交换的,却没有使用中间值交换,结果肯定是有bug的。
float tmpValue = 0;
if (fMinValue > fMaxValue)
{
tmpValue = fMinValue;
fMinValue = fMaxValue;
fMaxValue = fMinValue;
}
unity 有些api 并没有跟版本升级api,会有警告log。