表达式语句
1. if else语句
l 不要把a == b 写成 a = b的形式
l If()中的条件换行后,逻辑判断符合写在左边。
If(a == b
&& c == d)
l 判断条件过多时,能用switch语句转换时,尽量用switch。
l 字符串判断应该用equals,而不应该用 “==“
l If()括号里面应该优先放经常出现的情况。
把最常见的情形放在最开始,你就可以少读许多处理异常情况的代码,而直接读常见情况的代码。这样就提高了寻找常见情况的效率。在上述例子中,字母该是最常见的情况,但检查是否为标点代码却放在最先。把检查字母的代码放在最开始修改如下:
这个C语言的例子中,把处理最常见情况的代码放在最先:
if(IsLetter(InputChar)) ——这个判断最常见,放在第一位
CharType=Letter;
else if(IsPunctuation(InputChar))
CharType=Punctuation;
else if(IsDigit(InPutChar))
CharType=Digit;
else if(IsControl(InputChar)) ——这个判断最少见,放在最后
CharType=ControlChar;
l 保证if覆盖全部情况
最后用一个else语句处理那些你未曾想到的错误信息。这个错误信息很有可能是由你而非用户引起的,所以一定要正确处理这种情况,下面例子中,增加了处理其它情况的代码。
这个C语言程序例子,用缺省情况应付可能出现的其它情况。
if(IsLetter(InputChar))
CharType=Letter;
else if(IsPunctuation(InputChar))
CharType=Punctuation;
else if(IsDigit(InputChar))
CharType=Digit;
else if(IsControl(InputChar))
CharType=ControlChar;
else
PrintMsg("Internal Error: Unexpectecd type of character detected.");
l 用布尔函数调用(boolean function亦称逻辑函数)简化程序。
if( InputChar < SPACE )
CharType=ControlChar;
else if( InputChar==' ' || InputChar==',' || InputChar=='.' ||
InputChar=='!' || InputChar=='(' || InputChar==')' ||
InPutChar==':' || InputChar==';' || InputChar=='?' ||
InPutChar=='-' )
CharType=Punctuation;
else if( '0' <= InputChar && InputChar <= '9' )
CharType=Digit;
else if( 'a' <= InputChar && InputChar <= 'z' ) ||
( 'A' <= InputChar && InputChar <= 'Z' )
CharType=Letter;
上面代码不好读的一个原因是把字符进行排序的条件过于复杂。为了提高可读性,可以用布尔函数来代替这些判断条件。
用布尔函数调用的if-then-else的C语言程序例子。
if(IsControl(InPutChar))
CharType=ControlChar;
else if(IsPunctuation(InPutChar))
CharType=Punctuation;
else if(IsDigit(InputChar))
CharType=Digit;
else if(IsLetter(InputChar))
2. switch语句
l 把各种情况按字母或数字顺序组
i. 如果各种情况是同等重要的,按A-B-C顺序安排,以提高可读性。每个事件都可很容易从整体中挑出来。
l 把正常情况的事件放在最开始。
如果是一个正常情况及几个异常情况,把正常情况放在最先,并用注释标明哪些是正常情况哪些是异常情况。
l 按出现频率组织情况。
把最经常执行的情况放在最先,而最不可能的情况放在最后。这种方法有两大好处。首先,读者很容易找出最普遍的情况。读者为寻找某个具体的情况而浏览整个程序,极有可能就是找最常见的那种情况。把常见的情况放在代码的最开始,读者能很快找到它。第二,机器执行起来也快。每一种情况都在代码中有相应的执行语句,机器执行都要花时间搜索,如果有12种情况而最后一个情况是要执行的。那么机器要搜索12条if语句,直到最后发现相应的情况。若把最普遍情况放在最先,你就可以减少机器的搜索区间,这样就可提高代码的效率。
3. 循环 语句
l 所有判断循环总共不能超过4层。
l while(){};do{}while()使用是否合理。
异常处理
1. 函数/方法异常处理
l 错误信息要写入日志。
只要出错,一定写入错误日志。
l try {}cathch
要把未知的情况放入try{}catch中去,但是不要把所有的代码放入try{}catch.
其它注意情况
l 未初始化变量不能使用。
l 应尽量去除系统产生的警告。
l 要主动回收内存。
l 不准在循环中查询sql语句。
l FLEX变量不能重复声明。
l jsp页面不能有红叉。
l 代码中的字符串应当定义成常量。
l JS需要判断undefind。
l 若没有足够理由,不要把实例或类变量声明为公有。通常,实例变量无需显式的设置(set)和获取(gotten),通常这作为方法调用的边缘效应 (side effect)而产生。