| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2641 人关注过本帖
标题:[讨论]初学C#,与VB相比,不爽的地方
只看楼主 加入收藏
Theron
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2006-9-23
收藏
得分:0 
If IsNumeric(tMark.Text) Then
If tMark.Text >= 0 Then
Grade (tMark.Text)
Else
lbGrade.Caption = "成绩还有小于 0 的吗?!"
End If
Else
MsgBox ("请输入合法成绩!")
End If


上面的代码, 写成c#就是:

if (IsNumeric(tMark.Text))
{
if (tMark.Text >= 0)
{
Grade(tMark.Text);
}
else
{
lbGrade.Caption = "成绩还有小于 0 的吗?!";
}
}
else
{
MsssageBox.Show("请输入合法成绩!");
}



哪个更清晰?!

[此贴子已经被作者于2006-10-8 16:31:04编辑过]


2006-10-08 16:30
soulfox
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-10-6
收藏
得分:0 
对{}的使用
我觉得这个不是简洁的问题
相反我在学C的时候就已经发觉
这种形式只会让人在编程时神经崩紧
经常一大堆{},包括条件,循环嵌套的时候
会让人查错时一个个找个眼花
而用VB时不会有这种感觉
要知道区别end if和loop或end select总比区分两个}}符号好认


你看一下这个

if (a > 0)
{
if (b>0)
{
switch (c)
{
..................
}
}

}


if a > 0 Then
if b > 0 then
select case c
............
end select
end if
End If
我觉得后者在查错时,明显比前者来得直观
2006-10-08 16:35
Theron
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2006-9-23
收藏
得分:0 
以下是引用soulfox在2006-10-8 16:35:18的发言:
对{}的使用
我觉得这个不是简洁的问题
...................

呵呵, 但在代码很长的情况下,你那C代码就不是那样写了, 而是这样写, 弥补花括号的不足.

if (a > 0)//
{
if (b>0)
{
switch (c)
{
..................
}//end switch(c)
} //end if (>0)

}//end if (a > 0)

[此贴子已经被作者于2006-10-8 16:44:48编辑过]


2006-10-08 16:40
soulfox
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-10-6
收藏
得分:0 
先谢一个楼上的了
提供了另一种方法给我
2006-10-08 16:45
Theron
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2006-9-23
收藏
得分:0 
以下是引用soulfox在2006-10-8 16:45:25的发言:
先谢一个楼上的了
提供了另一种方法给我

呵呵, 偶说的都是C/C++代码规范和习惯.


2006-10-08 16:46
Theron
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2006-9-23
收藏
得分:0 
当然也完全适合用在C#上.

2006-10-08 16:47
soulfox
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-10-6
收藏
得分:0 
以下是引用Theron在2006-10-8 16:20:55的发言:
关于变量名大小写问题, 楼主很郁闷是吧, 看来楼主是没有规范变量名的习惯.
代码变量名的命名习惯有多种, 一般是Pascal法和Camel法, 还是著名的 "匈牙利"法.

一份高质量的代码, 不仅仅表现在她的效率和构思上, 也体现在代码的风格(包括变量名命名)上.

C/C++命名是很有艺术和讲究的, 如:

g_length;
s_length;
sName;
GetName;
length;
fullName;
SIZE

一般的C/C++程序员都能看懂上面的那么多的变量都是什么东东.
g_length;//这是全局变量
s_length;//这是静态变量
sName;//这个是字符串型的变量,采用著名的 "匈牙利"法
GetName;//这应该是函数
length;//这是一般变量
fullName;//一般变量, 采用Camel 命名方法
SIZE;//宏


源代码命名可以看出一个程序的素质, 一份好的代码, 命名规范, 那么代码的可读性就比较高, 如果你随便命名, 那看得人一般来回的上下翻代码, 看你的变量是什么意思.



总的来说, 变量名区分大小写是有很大好处的, 很明显的地方是提高代码的可读性.

chenjin145版主和Theron所提到的只是命名规范方面
不是区分大小写的本质问题
实际上很多VB的程序员也遵守这种规范
原因是因为这种规范的确有用


我只是觉得在一个函数内把Soulfox和soulfox分别代表两个不同意思
只会增加编程者的负担
而且我相信在座这么多人,没人会出现 if (Soulfox>soulfox)这种自找麻烦写法的吧

更正一下,我所说的区分大小写,是在遵守命名约定的前提下
这种区分是不爽的

2006-10-08 16:53
Smiling
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2005-9-7
收藏
得分:0 
各有各自的好处,运用时间常了久习惯了。VB能自动调整字符的大小这点我也很喜欢,还有就是VB每个过程和方法有开始和结束,C#里的那些{}看多了确实眼睛累,而且有时候容易把层次看错
2006-10-08 16:58
Theron
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2006-9-23
收藏
得分:0 
如果确实要说本质的话, 偶想当初的C之父是想通过这种区分大小写来强制规范程序员的习惯吧
暂时偶还真没想到什么, 不过偶毫不觉得区分大小写有不爽的地方, 反而更培养程序员的素质.

2006-10-08 16:59
soulfox
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-10-6
收藏
得分:0 
以下是引用Smiling在2006-10-8 16:58:03的发言:
各有各自的好处,运用时间常了久习惯了。VB能自动调整字符的大小这点我也很喜欢,还有就是VB每个过程和方法有开始和结束,C#里的那些{}看多了确实眼睛累,而且有时候容易把层次看错

这个在VB中,一直是我用来检查变量是否拼写正确的方法
有时候一个变量代表的意思太多,单词之间难免有缩写
象 intErrTestVerCode这种变量,有时写作
intErrTestVerifyCode并不奇怪
VB中如果拼错或者少字,会直接提示出错的
正确的话大小写会自动变

不过这好象是编程环境的原因吧,好象跟大小写没什么直接关系,呵呵
只能说C#的编程环境做不到这一点(事实上是因为区分大小写原因,没办法做)

2006-10-08 17:13
快速回复:[讨论]初学C#,与VB相比,不爽的地方
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024522 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved