构建高质量的C#代码
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 高质量代码准则:可阅读

1.5.1 养成好的代码编写习惯

在软件开发中,代码应该是能够阅读的,而不只是为了在计算机中运行。代码能够让人们轻松阅读,对于日后的维护来说,是非常重要的前提条件。如果代码无法维护,后果会怎样?失控!软件项目中的失控是非常严重的问题,往往会导致项目的失败。

也许有的朋友会说,只要计算机能正确执行代码,程序只要能完成任务不就行了,代码格式有必要要求得那么严格吗?对于这个问题,我想回答只有一个:除非你写的代码从此没人再看(包括你自己),不然的话,代码格式还是写得漂亮点好,否则,可以肯定的是,当任何人再次查看和维护这些代码时,都可能感到很困难(同样包括你自己)。

那么,应该如何养成良好的代码编写习惯呢?我们可以关注如下几个方面:

● 我们必须清楚代码的编写是为高质量的软件系统打好基础,代码质量的好坏直接影响了软件项目的最终质量。

● 代码应该首先便于人的阅读,其次再是计算机中的执行。

● 编写的代码要有良好的格式和标准,如不同层次代码的缩进、代码元素的命名、清晰的注释说明,等等。

● 要有大局观,不要只限于代码本身,应该从项目的目的、软件的整体架构,以及编程语言的特性和使用环境等方面来思考代码的地位和功能。

● 要清楚编写代码只是软件的实现过程,需要根据项目的实际需求正确使用编程语言的特性,而不是为了使用某个特性而写代码。使用开发资源、开发工具或设计方法时也同样是这一原则。(当然,为了简化代码,本书在介绍一些知识点时可能有些例外?。)

● ……

当真正开始软件开发工作后,可以在这里添加更多的关于开发好习惯的方方面面。

进入开发团队工作后,还应该遵守一些团队的开发规定和标准。这时,应将个人习惯与团队的开发规定相融合。只有当每一个成员都能融入团队时,团队开发的效率才能达到1+1>2的效果。只有每一个成员都养成相同的编码好习惯时,一个大型的软件项目才有可能高效地进行编码、调试、测试与维护等工作。

1.5.2 代码不是私人财产,而是艺术品

项目中的代码应该是属于整个项目的共同财产,而很多程序员认为自己编写的代码就是自己的私人财产。在项目中,一般会需要很多的代码,如果是在多人参与的项目中,你故意让代码变得无法让别人阅读就不对了,即使是你独自完成的软件,说不定你哪天另谋高求了,这些代码又由谁来维护呢?最好不要做这些不负责任的事情。

代码应该是艺术品,只有细细雕琢才会变得精致,只有得到众人的肯定才会变得有价值。想一想,无人欣赏的艺术品又有什么意义呢?

如果只是自己的兴趣爱好,自己写一些代码玩,就不需要争辩这个问题了,但如果是因为不具有可阅读性而导致日后连自己都无法理解自己的代码,你就会明白这里在说什么了?。

1.5.3 代码应该具有可维护性

如果是只编写和使用一次的代码,能够正确地运行一次就可以了。但我相信,更多的有价值的代码会需要使用很多次,因为只有这样,你才会有所积累,有所收获,而不是每一次都否定自己之前的工作,所以,对自己的代码进行维护和优化是我们经常需要做的工作。

在一个长期的项目中,代码的维护工作就显得尤其重要,一个项目可能会长达数年,在这期间,程序员的流动性也可能会很大,但只要代码具有良好的可维护性,就可以保证新的程序员能够快速地理解代码的功能,并根据实际需要进行相应的维护、修改和优化工作。

1.5.4 注释你的代码

好的代码当然可以将功能展现得一览无遗,但我们知道,在实现的编程中,代码中可能会有很多复杂的逻辑或者特殊的算法,这些代码往往并不能让人很轻松地一眼就明白其功能,这时,我们就应该在代码中添加一些注释,以便说明这些代码的功能。

在代码中的注释内容,往往比没人维护的项目文档要有用得多,这是因为代码能保证总是最新的。同时,代码是最终的产品,所以,在代码中添加准确的注释,可以对代码的维护起到很重要的作用。

但在使用注释时,也应注意一些问题,如:

● 注释应说明代码的功能,即目的和结果是什么,而不用将代码的算法过程又通过注释描述一遍。

● 使用注释合理分隔代码区域,比如,可以在变量声明、语句结构、语句块、类、结构、枚举等区域的前面加上相应的注释,对于很简单的代码功能,哪怕只是一条空白注释行,也能让代码的区域划分非常清晰。

● 注释应该简洁,只说明重要的部分。

● 注释应该保持最新代码的说明,或记录代码的更新过程。

● 注释也应该使用已约定的标准格式。

● 注释应包含项目中要求的其他内容,如创建人、更新记录等。

● //请总结你在应用注释时的经验

在C#中,我们可以使用C++风格的注释,主要包括以下两种。

第一种是块注释,将一段注释放在“/*”和“*/”之间。在Visual C#中,如果我们输入了“/*”并回车,则会自动将注释格式化为如下形式:

/*
* 这里是块注释
*/

第二种是行注释,以“//”开头的行都被认为是注释内容。也可以将“//”注释放在一行代码的后面,但对于过长的代码行,行尾注释可能不会直接被注意到。在本书的示例中,大家可以看到,大量使用了“//”标注的说明信息。

除了C++风格的注释,C#也支持用于自动生成XML文件的注释,我们可以使用“/**”和“*/”之间的块注释来创建,或者可以使用“///”的行注释来创建,详细的内容可参考MSDN Library或Helper。