您的位置:首页 > 编程语言 > C#

天轰穿C# -vs2010 - 03C#的异常处理之编写更高质量的代码[原创]

2012-11-23 14:21 393 查看


[align=center]天轰穿C# -vs2010 - 03C#的异常处理之编写更高质量的代码[/align] 本章学习线路

本章由编写更高质量代码的常见规范开始。进一步讲到如何使用VS调试C#应用程序。这两点希望大家一定要用好用熟练。对于很多初学者来说,在一开始就知道代码的运行流程,这对后面的学习是相当有帮助的。接下来就是讲述.net中的异常处理、分别就简单的try/catch,多个catch块进行讲解。接着描述异常处理的系统流程。再后来就是讲解用于清理try语句中占用资源的Finally关键字、和显示抛出异常的Throw关键字。最后是针对用户自定义异常做了一个实例。鉴于自定义异常中涉及类的知识较多,所并未过度深入。

概述
小天:来帮我看看我这个程序怎么才能更友好点。

老田:哇,这谁写的代码,怎么一团一团的,完全没有格式啊?你看看,这都什么跟什么啊。整个代码看来和“美”这个词就没有关系。再看看你起的这些变量名称,aaa,bbb,ccc,a1,c2。看来得专门跟你讲下如何编写更易读、更高质量的代码这方便的技巧了。

小天:哎呀,我做这么多练习已经很不容易了,再说,我们又不是做具体的项目,我哪里知道给变量起什么名字啊。

快帮我想下,如何让这个程序(2.8小节的实例做数据转换那个WinForm实例)用起来更友好吧。我觉得还有个很大的缺陷。在年龄一栏刻意输入的字符并没有限制。但是在后台处理的代码最终要将这个字符转换为INT类型。这个时候,如果遇到无法转换的字符就会出错了。虽然有时候是故意犯错,但是有什么办法让程序更加友好点,比如给出一个提示,而不是直接报错误呢?毕竟它报出的错误信息也不是谁都看得懂,我想自己定义一个错误信息返回给用户,并且给用户重新输入的机会,而不是让程序直接错误。

[title3] 编写更高质量的代码[/title3]

老田:让程序更加友好,提示错误这个问题我们稍后来讲。我们首先来围绕编写更加易读的C#代码来做一些讨论。为什么会说是更加易读,而不是更高质量呢?因为就我们现在的水平,我们不在乎代码的冗余,只在乎真的把知识点学懂了与否。而一些良好的编码习惯会极大的帮助我们学习、练习以及最终的复习学过的代码。记住,每一个知识点都作出一些实例来,将之妥善保管,这些将来在你上班后会是一笔财富。

小天:在本章前面讲了注释,我也一直用,我觉得挺好啊,都中文化了,这个已经很易读了。

老田:注释是一个程序的组成部分。可是我们接下来要说的是整个代码编写中的一些常用规则,比如如何命名、如何申明变量、如何空格等等。

首先一点是如何然让代码的格式更漂亮点

一):一行只写一条代码。不要看见代码比较短,就一行写几条语句,比如下面这句,看起来就让人困惑:

int id = 0; string name = "laotian"; bool degree = false;

二):变量一个个的分行申明,不要再试图在一次申明中就全部都弄完(在本章前面实例中有这样的做法,那是因为要节约书的篇幅,但我们写程序的时候没有必要节约那点位置。),如下:

//分别是产品ID,总数、和

int id, count, sum;

//修改为如下形式就会明了很多

//产品ID

int id;

//总数

int count;

//和

int sum;

三):找合适的位置换行。有时候在代码中常常出现一句话很长,这个时候就需要换一行。因为现在的鼠标都有中间的滚轮,所以上下滚动远比拖到屏幕左右移动来得更为方便。如下:

Console.WriteLine("年利率{0},{1}年后总计{2}元。"

, interestRate, years, balance);

什么情况需要换行呢?一般每行代码或注释在1024*768的显示频率下不得超过一显示屏。如果超过就该考虑换行了。

四)缩进,代码的缩进不仅仅是让代码看起来更加婀娜多姿(扭来摇去)。而是不同的缩进量代表了当前代码所在的层次。例如:

using System;

//这里用空行分开,设置我们可以用 #region…#endregion把一块一块的代码收缩起来

namespace MyNamespace

{

// 命名空间内的内容应缩进

public class MyClass

{

// 类的成员应缩进

public string MyMethod()

{

// 方法方法的方法体应缩进

return "Hello!";

}

private MyEnum myProperty = MyEnum.Alpha;

public MyEnum MyProperty

{

// 属性的内容应缩进

get

{

// 属性的get部分方法体应缩进

return myProperty;

}

set

{

// 属性的set部分方法体应缩进

myProperty = value;

}

}

}

//这里用空行分开,设置我们可以用 #region…#endregion把一块一块的代码收缩起来

public enum MyEnum

{

// 枚举类型内容应缩进

Alpha,

Beta,

Gamma

}

}

五):不同功能的代码块之间用空行分隔一下,别都挤到一起,这又不是中国的房价。你放心的弄宽裕点就是了。如上例

六):降低代码密度,这得从两个方面来看,第一是使用代码的字符,比如所使用的代码字符全都是诸如“MNWHFR”等密度比较大的字符,或者全都用大写等等,这都是引发代码看起来一团糟的原因。

另外一个原因是,空格,相信现在你已经发现,在VS中每写完一行代码打最后那个分号的时候,只要之前的代码都没有错误,那么VS会帮我们自动格式化。而这个格式化最明显的就是在代码之间增加了空格。例如入下代码

string NAME = "天轰穿";

int AGE=DateTime.Now.Year==2010?30:31;

//对比下上下两种写法,那种看起来舒服

string name = "天轰穿";

int age = DateTime.Now.Year == 2010 ? 30 : 31;

但是需要提醒下的是,不要以为空格就好得很,空格如果多了,一样会造成视觉错误。

七):代码的缩进一定是用TAB,而非4个空格,甚至更少,比如一个空格,还不如不要空格。免得让人看了生气。

八):大括号的位置,以下两种,自选一种,就行了:

public string MyMethod() {

return "Hello!";

}

//第二种

public string MyMethod()

{

return "Hello!";

}

九):使用分支或者循环注意以下几点:

1、 禁止出现两条等价的支路。
2、 禁止GOTO语句。
3、 用 IF 语句来强调只执行两组语句中的一组。
4、 用 CASE 实现多路分支。
5、 避免从循环引出多个出口。
6、 方法只有一个出口。
7、 不使用条件赋值语句。
8、 避免不必要的分支。
9、 不要轻易用条件分支去替换逻辑表达式。

10、嵌套最好不要超过三层,禁止超过五层;

十):一个方法(函数)中的代码最好不要高于100行,高于100行就已经是阅读的极限了。

十一):一个类中代码最好在500行以下。尽量不要写超过1000行代码的类。

十二):保持注释与代码完全一致。不允许修改了代码,却不修改注释。

十三):命名,这个学问可大可小。一般的习惯是类名、方法名、属性名、事件名、结构、枚举等对象的名称是首字母大写,比如“Person”或者“Ren”。而对于类中的变量或者一般的局部变量则全小写,比如“var1”,还有种情况是在变量前面加“_”前缀,例如“_name”。但是不管怎么样,有一个绝对的前提,就是你的名称一定要尽量见词知意。不要起诸如“AAA、BBB”等毫无意义的名称。

十四):控件命名的时候注意,尽量使用控件的简化字作为前缀,例如Label控件,我们的命名就根据变量名字结合起来,如“lbl_name,lbl_age,”,TextBox控件则是“tb_name,tb_sex”等等方式。

十五):别在程序中使用固定数值,用常量代替。

十六):避免使用很多成员变量。声明局部变量,并传递给方法。不要在方法间共享成员变量。如果在几个方法间共享一个成员变量,那就很难知道是哪个方法在什么时候修改了它的值。
  

十七):必要时使用enum 。别用数字或字符串来指示离散值。

十八):不在代码中使用具体的路径和驱动器名。 使用相对路径,并使路径可编程。

上面的十八条能够现在应用上的就赶紧应用到你的日常学习中去,还不能的也机下来,这些都是我参考了很多公司的编码规范总结出来的。换句话说,只要你做到上面这十八点,那么你以后出去上班,首先人家看你的代码就会觉得你这人不错。要不人家怎么说“见字如见人”呢?

最后说一点,不算什么规范,但却是很多初学者最不容易养成的习惯。当然,这也是因为没有人刻意把这个小毛病提出来的原因:

在C#中,凡是成对的符号一定要一次打全了,比如给字符串赋值,那就先打两个双引号,然后回退一格到分号中间去写字符串。再比如打括号也一定要一次打完两个,大括号等都是一样。因为编程过程中很容易忘记补齐另外一半。比如我们再嵌套循环或者分支的时候,如果缺少半个大括号,那后果就是程序的意思都变了。不多大多时候是程序会发生错误。而你根本不容易检查出到底错在哪里。

对于这种情况,最好的方式是使用断点调试,跟踪程序的整个运行流程,一行行的看代码。

本文章由天轰穿原创作品,转载请注明出处及作者。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐