2004年7月22日

代码风格-关于if语句

if语句的代码风格,分两大类:

第一类
1、关键字if后面有空格
2、二元表达式左右有空格
3、每个大括号,单独占一行
4、else关键字单独占一行

if (a > b)
{
    
// 
}

else
{
    
// 
}

评述,我推荐在C#中使用这种写法。我觉得这种写法比较优雅,容易阅读。


第二类

1、关键字if后面有空格
2、二元表达式左右有空格
3、大括号放在上一句的右边

if (a > b) {
    
// 
}
 else {
    
// 
}

也会有人在左括号的右边,右括号的左边,分别添加空格。如下

if ( a > b ) {
    
// 
}
 else {
    
// 
}

评述,这种写法比较紧凑。在Java中,推荐这种写法,而且使用这种风格的人相当多。但是这种写法有一个缺陷,当if中的条件比较多时,需要换行,这时,就不太好了。如下:

if ( (a + b) > (c + d)
  
&& (e + f) > (h + j)) {
    
// 
}
 else {
    
// 
}

很多人,在编写只有一行语句的if时,会省略大括号。例如:

if (a > b)
    maxVal 
= a;
else
    maxVal 
= b;

这种写法在维护的时候需要特别小心。因为你在维护时,可能碰到下面的情况:

if (a > b)
    maxVal 
= a;
    
if (a < 0)
        a 
= 0;
else
    maxVal 
= b;

认真阅读上述的代码,你会发现一个逻辑错误。我维护别人的代码时,也曾吃过这种亏。

我是能够习惯不同风格的写法的。每当我在编写C#的代码时,使用第一种,编写Java和C++代码时,使用第二种,入乡随俗!

欢迎大家参与讨论!

posted @ 2004-07-22 00:50 温少 阅读(1192) 评论(7) 编辑

关于C#代码的局部变量命名

以前Kingdee的下一代产品是基于.NET平台使用C#,我当时参考了一些文档,编写了Kingdee公司中的《C#编码规范》。整个规范比较冗长,我也不打算详细说明。现在我和大家讨论一下关于局部变量的命名。

变量命名必须直观易懂,尽量不使用缩写,必要时与类型相关。在阅读别人代码时,如发现一个好的变量命名,你应该记下来,这是一个很好的经验积累。尽量不要使用缩写,使用缩写时,最好使用通用的缩写。

以下是一个示例,欢迎大家讨论。同时也把自己的一些好的命名共享出来!

//Array后缀的数组变量
Object[] objArray = ...;

//使用类型的缩写
DataTable dataTable = ...;

//变量的声明,类型尽量使用接口,这样对于修改实现容易
IList list = new ArrayList();

//flag是一个常用的变量
bool flag = false;

//item也是一个常用的命名
foreach (Object item in list) 
{
    
if (flag) 
    
{
        Console.Write(
",");
    }


    flag 
= true;  //flag之前有一个空行,代码中应有恰当的分行
}


//使用符合短语对变量命名
String typeName = obj.GetType().GetName();

//优化for循环时的临时变量名
int listCount = list.Count;
for (int i = 0; i < listCount; ++i) {}

我会陆续写一些关于代码风格的文章,也欢迎大家与我讨论。

posted @ 2004-07-22 00:26 温少 阅读(2189) 评论(14) 编辑