7.1 编码规范
学习目标
熟悉.NET程序开发命名规范、注释规范以及ASP.NET中的固定文件夹的含义。
7.1.1 命名规范
说起编码规范,最常见的就是命名规范,这里的命名包括了开发程序过程中所有使用元素的名称,其中包括文件夹、文件命名,编程标识符命名(变量、常量、方法、属性、字段、类、命名空间),编程使用的控件(如Button、DropDown List、Repeater、GridView、RequiredFieldValidator)的命名(即ID属性),数据库命名以及数据库中表、字段、各种数据库对象(索引、视图、存储过程、触发器、游标)的命名等。
整体来讲所有命名都遵循这样的原则:字母开头,由字母、数字、下划线组成,且见名知意(经常会使用标识名称所描述的实际功能的英文单词或单词缩写,最好不要使用汉字作为程序的标识符)。
7.1.2 文件夹命名
首先要保证整个项目中不同类型的文件要放在各自对应的文件夹中,这里的类型不单单指扩展名的问题,因为软件项目根据其实际功能总会分成很多模块,例如动态网站、Web程序(B/S程序)从大的方面讲总会有前台显示和后台管理两大块,当然应该分别创建各自的文件夹来保存,例如后台管理的文件夹一般命名为Admin、Manager等,另外动态网站总会存在很多用于美化页面的素材,图片居多,那么就创建一个Images、Pics文件夹。
其次在ASP.NET开发过程中,系统给出了很多固定的文件夹,用户最好直接使用不要修改,也可以将网站中的文件保存在方便应用程序访问的任何文件夹结构中,但是为了更易于使用应用程序,ASP.NET保留了某些可用于特定类型的文件夹名称。表7-1列出了ASP.NET环境中保留的文件夹名称以及文件夹中通常包含的文件类型和其所表示的含义。
表7-1 环境中保留的文件夹名称
(续表)
7.1.3 ASP.NET网站中的共享代码文件夹
如果Web应用程序包括要在多个页之间共享的代码,可以将代码保存在Web应用程序根目录下的两个特殊文件夹(Bin文件夹和App_Code文件夹)中的某个文件夹中。当创建这些文件夹并在其中存储特定类型的文件时,ASP.NET将使用特殊方式处理这些文件。
1.Bin文件夹
可以在Bin文件夹中存储编译的程序集,并且Web应用程序任意处的其他代码(如页代码)会自动引用该文件夹。典型的示例是为自定义类编译好的代码。可以将编译后的程序集复制到Web应用程序的Bin文件夹中,这样所有页都可以使用这个类。
Bin文件夹中的程序集无须注册。只要.dll文件存在于Bin文件夹中,ASP.NET就可以识别它。如果更改了.dll文件,并将它的新版本写入到了Bin文件夹中,则ASP.NET会检测到更新,并对随后的新页请求使用新版本的.dll文件。
2.Bin文件夹的安全性
将编译后的程序集放入Bin文件夹中会带来安全风险。如果是开发人员自己编写和编译的代码,那么他了解代码的功能。但是,开发人员必须像对待任何可执行代码一样来对待Bin文件夹中已编译的代码。在完成代码测试并确信已了解代码功能之前,要对已编译的代码保持谨慎的态度。
注意以下安全方面的知识,这些知识与是否将已编译的代码放入Bin文件夹有关。
(1)Bin文件夹中程序集的作用范围为当前应用程序。因此,它们无法访问当前Web应用程序之外的资源或调用当前Web应用程序之外的代码。
(2)运行时,程序集的访问级别由本地计算机上指定的信任级别确定。有关更多信息,可以参见ASP.NET信任级别和策略文件。
(3)如果使用了诸如Visual Studio这样的设计器,那么Bin文件夹中的代码运行所在的上下文与运行时不同。例如,代码可能以完全信任状态运行。
3.App_Code文件夹
可以在App_Code文件夹中存储源代码,在运行时将会自动对这些代码进行编译。Web应用程序中的其他任何代码都可以访问产生的程序集。因此,App_Code文件夹的工作方式与Bin文件夹很类似,不同之处是可以在其中存储源代码而非已编译的代码。App_Code文件夹及其在ASP.NET Web应用程序中的特殊地位使可以创建自定义类和其他仅源代码文件,并在Web应用程序中使用它们而不必单独对它们进行编译。
App_Code文件夹可以包含以传统类文件(即带有.vb、.cs等扩展名的文件)的形式编写的源代码文件。但是,它也可以包含并非明确显示出由某一特定编程语言编写的文件。例如.wsdl(Web服务描述语言)文件和XML架构(.xsd)文件。ASP.NET可以将这些文件编译成程序集。
根据需要,App_Code文件夹可以包含任意数量的文件和子文件夹。开发人员可以采用任何他认为方便的方式组织源代码,ASP.NET仍会将所有代码编译成单个程序集,并且Web应用程序任意处的其他代码都可以访问该程序集。
在App_Code文件夹中不允许使用用户控件。这包括单文件用户控件以及使用代码隐藏模型的用户控件。将用户控件置于App_Code目录中会导致不按用户控件代码所要求的顺序对其进行编译,因此是不允许的。注意,不需要将用户控件置于App_Code文件夹中,因为处于应用程序中任何位置的页都已经可以使用这些控件。
4.推断App_Code文件夹的编程语言
App_Code文件夹并未显式标记为包含以任何一种编程语言编写的文件。相反,ASP.NET是根据App_Code文件夹所包含的文件来推断应为App_Code文件夹调用哪一种编译器。如果App_Code文件夹包含.vb文件,则ASP.NET使用Visual Basic编译器;如果包含.cs文件,则ASP.NET使用C#编译器,依此类推。
如果App_Code文件夹只包含并未明确表明编程语言的文件(如.wsdl文件),则ASP.NET将使用Web应用程序的默认编译器,默认编译器在Web应用程序或计算机配置文件的compilation元素中确定。
5.在App_Code文件夹中使用多种编程语言
因为App_Code文件夹中的源代码要编译成单个程序集,所以App_Code文件夹中的所有文件必须使用相同的编程语言编写。例如,App_Code文件夹不能同时包含采用Visual Basic和C#编写的源代码。
但是,可以对Web应用程序进行配置,使其将App_Code文件夹的子文件夹作为独立的可编译单元处理。这样,每一个文件夹就可以包含以不同编程语言编写的源代码。通过在Web.config文件的元素中compilation创建一个codeSubDirectories元素,然后添加一个对子文件夹的引用,即可指定该配置。下面的示例阐释如何对名为VBCode和CSCode的子文件夹进行配置,使其编译成不同的程序集:
<compilation debug="false"> <codeSubDirectories> <add directoryName="VBCode" /> <add directoryName="CSCode" /> </codeSubDirectories> </compilation>
对VBCode和CSCode子文件夹的引用并不需要包括任何有关子文件夹中所包含的编程语言的信息。就像对待App_Code文件夹本身一样,ASP.NET会根据子文件夹中的文件来推断要使用的编译器。
6.App_Code文件夹的安全性
App_Code文件夹中的代码存在的安全问题基本上与Bin文件夹中的代码存在的安全问题相同——代码都会在运行时编译成程序集。比Bin文件夹要好一些的是,可以阅读App_Code文件夹中文件的源代码。但是,如果不能完全理解代码,仍然会存在安全风险。因此,对待App_Code文件夹中的源代码的态度必须像对待基于同样的源代码生成的已编译代码一样谨慎。
7.1.4 文件命名
文件名一般都是由名称字符串和扩展名组成,名称字符串是文件的标识,而扩展名则用于表明文件类型,网站中经常会涉及主页、列表、详细内容、注册、登录、退出、帮助、搜索、显示、关于我们、联系我们等,通常都使用如表7-2所示的命名规则。
表7-2 网站开发中常见的文件命名元素
当然在实际使用时可以根据功能需要独立使用,也可以组合使用,例如要描述用户信息就可以使用User_Info、UserInfo、userInfo、user_info等不同形式,在同一个网站项目中建议使用其中一种规则完成,作者更建议在程序文件命名使用首字符大写的方式即第二种UserInfo。
网站应用程序中可以包含很多文件类型,某些文件类型由ASP.NET支持和管理,而其他文件类型则由IIS服务器支持和管理。大多数ASP.NET文件类型都可以使用Visual Studio中的“添加新项”菜单项自动生成。
使用应用程序映射可以将文件类型映射到应用程序。例如,如果在Windows资源管理器中双击.txt文件,记事本很可能会打开,因为在Windows中,.txt文件类型默认映射到Notepad.exe。在Web应用程序中,文件类型映射到IIS中的应用程序扩展名。
1.由ASP.NET管理的文件类型
由ASP.NET管理的文件类型会映射到IIS中的Aspnet_isapi.dll,具体类型如表7-3所示。
表7-3 ASP.NET管理的文件类型
(续表)
2.由IIS管理的文件类型
由ASP.NET管理的文件类型通常映射到IIS中的asp.dll处理程序。表7-4列出了由IIS管理的文件类型。
表7-4 IIS管理的文件类型
3.静态文件类型
IIS只为其文件扩展名在MIME类型列表中注册了的静态文件提供服务。此列表存储在应用程序的MimeMap IIS元数据库属性中。如果某个文件类型已映射到应用程序扩展,则不需要将该类型包括在MIME类型列表中,除非要将该文件作为静态文件来处理。通常不应当将ASP.NET源代码文件类型包括在MIME类型列表中,因为那样做可能会允许浏览器查看源代码。表7-5中只列出了一些已注册的文件类型。
表7-5 IIS已注册的文件类型
7.1.5 标识符命名
标识符命名通常是指变量、常量、方法、属性、字段、类、命名空间等的命名方法。
1.通用命名约定
通用命名约定讨论的是如何为库元素选择最适当的名称。这些准则适用于所有标识符。
(1)选择名称不要使用匈牙利表示法。匈牙利表示法是在标识符中使用一个前缀对参数的某些元数据进行编码,如标识符的数据类型,例如intA。
(2)避免使用与常用编程语言的关键字冲突的标识符。
(3)最好不要使用缩写或首字母缩写词,这类名称的可读性较差。而且,要确定某个首字母缩写词是否已受到广泛认可也是很困难的,除非这个缩写真正已受到广泛认可,例如Information简写为Info。
2.大小写约定
许多命名约定都与标识符的大小写有关。值得注意的是,公共语言运行库(CLR)支持区分大小写和不区分大小写的语言。本主题中描述的大小写约定可帮助开发人员理解和使用库。
(1)大小写样式。
下列术语描述了标识符的不同大小写形式。
Pascal大小写:将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用Pascal大小写。例如BackColor。
大小写混合:标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如backColor。
大写:标识符中的所有字母都大写。例如IO。
(2)标识符的大小写规则。
如果标识符由多个单词组成,不要在各单词之间使用分隔符,如下划线(“_”)或连字符(“-”)等。而应使用大小写来指示每个单词的开头。
对于由多个单词组成的所有公共成员、类型及命名空间名称,要使用Pascal大小写。注意,这条规则不适用于实例字段。由于成员设计准则中详细说明的原因,不应使用公共实例字段。而对于参数名称一般使用大小写混合,如typeName。表7-6汇总了标识符的大小写规则,并提供了不同类型标识符的示例。
表7-6 标识符的大小写规则
3.首字母缩写词的大小写规则
首字母缩写词是由术语或短语中各单词的首字母构成的单词。例如,HTML是Hypertext Markup Language的首字母缩写。只有在公众广为认知和理解的情况下,才应在标识符中使用首字母缩写词。首字母缩写词不同于缩写词,因为缩写词是一个单词的缩写。例如,ID是identifier的缩写。通常情况下,库名不应使用缩写词。
可在标识符中使用的两个缩写词是ID和OK。在采用Pascal大小写格式的标识符中,这两个缩写词的大小写形式应分别为Id和Ok。如果在采用大小写混合格式的标识符中将这两个缩写词用作首个单词,则它们的大小写形式应分别为id和ok。
首字母缩写词的大小写取决于首字母缩写词的长度。所有首字母缩写词应至少包含两个字符。为了便于这些准则的实施,如果某一首字母缩写词恰好包含两个字符,则将其视为短型首字母缩写词。包含三个或三个以上字符的首字母缩写词为长型首字母缩写词。
下列准则为短型和长型首字母缩写词指定了正确的大小写规则。标识符大小写规则优先于首字母缩写词大小写规则。
两字符首字母缩写词的两个字符都要大写,但当首字母缩写词作为大小写混合格式的标识符的首个单词时例外。
例如,名为DBRate的属性是一个采用Pascal大小写格式的标识符,它使用短型首字母缩写词(DB)作为首个单词。又如,名为ioChannel的参数是一个采用大小写混合格式的标识符,它使用短型首字母缩写词(io)作为首个单词。
包含三个或三个以上字符的首字母缩写词只有第一个字符大写,但当首字母缩写词作为大小写混合格式的标识符的首个单词时例外。
例如,名为XmlWriter的类是一个采用Pascal大小写格式的标识符,它使用长型首字母缩写词作为首个单词。又如,名为htmlReader的参数是一个采用大小写混合格式的标识符,它使用长型首字母缩写词作为首个单词。
如果任何首字母缩写词位于采用大小写混合格式的标识符开头,则无论该首字母缩写词的长度如何,都不大写其中的任何字符。
例如,名为xmlStream的参数是一个采用大小写混合格式的标识符,它使用长型首字母缩写词(xml)作为首个单词。又如,名为dbServerName的参数是一个采用大小写混合格式的标识符,它使用短型首字母缩写词(db)作为首个单词。
1.复合词和常用术语的大小写规则
不要将所谓的紧凑格式复合词中的每个单词都大写。这种复合词是指写作一个单词的复合词,如“endpoint”。
例如,hashtable是一个紧凑格式的复合词,应将其视为一个单词并相应地确定大小写。如果采用Pascal大小写格式,则该复合词为Hashtable;如果采用大小写混合格式,则该复合词为hashtable。
接下来的代码列出了不是紧凑格式复合词的一些常用术语。术语先以Pascal大小写格式显示,后面的括号中的是其大小写混合格式。
BitFlag (bitFlag) FileName (fileName) LogOff (logOff) LogOn (logOn) SignIn (signIn) SignOut (signOut) UserName (userName) WhiteSpace (whiteSpace)
5.区分大小写
大小写准则只是为了使标识符更易于阅读和辨认。不能将大小写规则用作避免库元素之间的命名冲突的手段。不要假定所有编程语言都区分大小写。事实并非如此。不能仅凭大小写区分名称。
7.1.6 控件命名
在使用ASP.NET开发动态网站、Web应用程序过程中会经常使用到各种Web开发控件,而且每个控件都必须有一个编程使用的标识名称,虽然用户在使用每个控件时,系统都会给其一个默认名称,但是这并非最佳选择,特别是开发一些大型动态网站、Web应用程序,如果随意给控件命名,那么开发周期可能会比预期的超出很多,开发效率因此大大降低,而其即使已经开发完毕了,如果程序中存在某些bug需要调试,那么开发人员就更需要花很长时间去研究自己的代码了。
控件规范命名不仅能提高开发效率,而且在调试程序bug时也能够很快完成,因为调试程序最重要包括两方面:一方面明确bug所在,另一方面就是要看懂当前程序出错地方的代码。规范命名使得程序代码结构清晰、表达含义明确,当然能够很快解决程序的bug问题。
使用ASP.NET开发动态网站、Web应用程序过程中对于控件命名总的规则是:控件命名简称+表达含义的单词或缩写。例如有一个描述姓名的文本框,那么其编程名称就是txtName,其中的“txt”就是文本框控件(TextBox)的简称,而“Name”就是其所描述的含义。
表7-7给出了ASP.NET开发动态网站、Web应用程序使用到的各种常用Web开发控件的命名规则简称,只要在其后面再添上要表达的含义就可以了。
表7-7 Web开发控件的命名规则简称
(续表)
7.1.7 注释规范
程序注释是为了方便阅读程序代码而为代码添加的简短的解释性说明文字。编写程序注释这对开发人员自己和检查代码的任何其他人都有好处。而且当程序代码中的部分修改后也要及时更新注释说明以免后续阅读代码产生歧义。有过开发经验的开发人员应该对程序注释的必要性有明确的认识,而对于很多初学者总会认为编写注释是在浪费开发时间,其实不然,一个优秀的软件开发工程师一定具备良好的编写程序注释的习惯。
总的来讲,人们在开发程序时,总觉得这里不用写注释或者这样简单写写就可以了,但是当你再维护程序、增加新功能、修改程序bug时,总会觉得这里的注释如果当初写得再详细一些该有多好呀。所以在软件开发行业,一些优秀的开发人员在完成特定模块时很多时候已经有编写好的类似代码,但是他宁愿在重写,也不愿复制修改,因为修改别人编写的代码前提是要读懂别人的程序,从某种程度上讲修改程序有时候比重新开发还要费时间,这主要就是因为注释编写不够详细、不够规范。
接下来给出使用ASP.NET开发程序应该养成的良好注释规范供读者参考。
(1)在每个具体功能实现的开始,提供标准的注释样本以指示代码的用途。其实,编写注释就是为了解释它为什么存在以及存在可以做什么。
(2)当修改代码后,一定也要更新代码周围的注释以使注释也保持最新以免后续阅读代码产生歧义。
(3)避免在代码行的末尾添加注释。行尾注释使代码更难阅读,不过在批注变量声明时,行尾注释是合适的。
(4)在部署发布项目之前,移除所有临时或不必要的注释,以避免在以后的维护工作中产生混乱。
(5)在编写注释时使用完整的句子,不要太简化以免后续阅读代码产生歧义。
(6)在编写代码时就编写相关注释,因为以后很可能没有时间这样做或者时间一长可能一些很明显的功能就变得不明显了。
(7)避免多余的或不适当的注释。
(8)使用注释目的是来解释代码的意图,它们不应作为代码的联机翻译。
(9)为了防止问题反复出现,对错误修复和解决方法代码总是使用注释,同时保留以前开发人员的注释,尤其是在团队环境中,这样一来便于相互讨论各自的编程思想。
(10)在整个应用程序中,使用具有一致的标点和结构统一的样式来构造注释。
(11)用空白将注释内容同注释分隔符分开。在没有颜色提示的情况下查看注释时,这样做会使注释很明显且容易被找到。
(12)当代码很长时,为了使得层次更加清晰,在闭合的右花括号后注释该闭合所对应的起点。例如:
while (...) { ... } //end while
(13)通过选择一行或多行代码,然后在“编辑”工具栏上单击“注释”按钮和“取消注释”按钮
,可以添加或移除某段代码的注释符。
(14)注释原则。表7-8提供了在一段代码前可以加上哪些类型的注释的一般原则。这些原则仅为建议,并未强制实施有关添加注释的规则。编写注释时,应编写对开发人员自己和代码的任何其他读者都最为有效的注释。
表7-8 建议注释原则
(15)每个重要的变量声明前都应有注释,用以描述被声明变量的用途。
(16)原则上平均每100行代码中要有20~30行注释,视程序复杂程度而定。
(17)对于源文件和类,必须在注释中说明修改历史。
7.1.8 XML文档注释
在Visual C#中,可以通过以下方法为代码创建XML文档注释。具体方法是:紧接在源代码代码块的前面直接输入“///”,然后就会自动弹出定义注释的格式,用户在其中定义具体注释内容。例如:
/// <summary> /// 这里编写类的功能注释 /// </summary> public class MyClass{ }
接下来先给出一个完整的编写代码示例,感受系统提供的大量文档型注释的效果和好处。然后再介绍自定义文档型注释的操作方法。
(1)新建网站项目StudyNotes,在默认添加的Default.aspx页面中添加一个日历控件,然后进入页面Default.aspx的代码窗口,如图7-1所示。
图7-1 页面Default.aspx代码编写窗口显示(1)
(2)可以从图7-1中看到BackColor属性的功能描述,这就是由系统使用XML文档注释格式定义的注释显示的效果。接着要给颜色属性赋值,使用System.Drawing代码继续编写,如图7-2所示。
图7-2 页面Default.aspx代码编写窗口显示(2)
(3)在图7-2中按空格键继续编写,如图7-3所示。
图7-3 页面Default.aspx代码编写窗口显示(3)
(4)如图7-4所示,完成本行代码的编写。
图7-4 页面Default.aspx代码编写窗口显示(4)
(5)最后写完的代码如图7-5所示。
图7-5 页面Default.aspx代码编写窗口显示(5)
(6)可以看出在编写上述代码过程中,总会出现功能提示信息和参数说明信息,这些全部都是系统在定义这些类、方法时合理地编写了XML文档注释而产生的功能效果。当然用户自己编写的类、方法、接口、属性、字段等也可以编写对应的XML文档注释,也能产生同样的效果,这样一来,在调用类、方法时就能够明确其具体功能、参数含义、参数类型,从而提高编程的准确性和开发效率。
接下来举例说明用户自己定义XML文档注释的操作方法。
(1)在网站项目StudyNotes中添加一个Study.cs类文件。默认显示格式如图7-6所示。
(2)在其中编写用于测试的类的构造函数及所需属性和方法,默认创建好的显示效果如图7-7所示。
图7-6 类文件Study.cs代码编写窗口(1)
图7-7 类文件Study.cs代码编写窗口(2)
(3)按照上面的格式编写类的属性、方法功能实现没有任何问题,但是如果其中的代码业务逻辑相当复杂,那么用户在调用时因为没有XML文档注释,所以要识别其中属性、方法的功能就变得非常困难,特别是这个类、方法是别人开发的。而如果编写这个类的开发人员在其中特定位置编写详细的注释,那么调用就变得非常容易。接下来给出其中的字段、属性、方法添加注释后的完整代码。
using System; using System.Configuration; using System.Data; /// <summary> /// <para>类Study的摘要说明</para> /// <para>完成简单的数学运算</para> /// </summary> public class Study { /// <summary> /// 定义整数int类型字段a /// </summary> private int a; /// <summary> /// 定义整数int类型字段b /// </summary> private int b; /// <summary> /// <para>获取或设置类Study的属性A取值</para> /// <para>属于int类型</para> /// </summary> public int A { get { return a; } set { a = value; } } /// <summary> /// <para>获取或设置类Study的属性B取值</para> /// <para>属于int类型</para> /// </summary> public int B { get { return b; } set { b = value; } } /// <summary> /// <para>类Study的构造函数</para> /// <para>用于初始化两个属性A和B的初始值为1</para> /// </summary> public Study() { this.A = 1; this.B = 1; } /// <summary> ///定义类Study的Add方法,求和 /// </summary> /// <returns>返回Study类的两个属性A、B之和</returns> public int Add() { return A + B; } /// <summary> /// 定义类Study的Max方法,求最大值 /// </summary> /// <returns>返回Study类的两个属性A、B的最大值</returns> public int Max() { return (A > B ? A : B); } }
(4)按照上述方法给类及其成员添加完XML文档注释后,在调用类时就可以看到相应的鼠标跟随提示的注释效果,即XML文档注释效果。例如要实例化类Study在输入完Study后跟随鼠标的显示效果如图7-8所示。
图7-8 实例化类Study看到的提示效果(1)
(5)从图7-8可以看到的提示效果就是类Study本身所编写的注释文字,其中的标记<para></para>目的就是为了显示提示时分段显示,如果注释文字本身仅一段可以省略该标记。接着编写具体实例化代码,显示效果如图7-9所示。
图7-9 实例化类Study看到的提示效果(2)
(6)从图7-9可以看出,此时的提示就是类Study构造函数定义的注释提示。然后给实例化后的study的属性A赋值,如图7-10所示。
图7-10 给study的属性A赋值看到的提示效果
(7)用同样的方法可以给属性B赋值,然后调用study的Add方法,代码如图7-11所示。
图7-11 调用study的方法Add看到的提示效果(1)
(8)补充完成输出代码,按Ctrl+F5组合键,运行显示效果如图7-12所示。
图7-12 页面Default.aspx运行显示效果
(9)其实纯粹针对代码结构部分来讲,还可以使用标签#region来进一步结构化代码的显示方式,特别是代码越多,该标签使用效果越明显。如类Study的代码就可以在其中增加几个#region标签,接下来给出此时的类Study的完整代码。
using System; using System.Configuration; using System.Data; /// <summary> /// <para>类 Study 的摘要说明</para> /// <para>完成简单的数学运算</para> /// </summary> public class Study { #region 定义类Study的成员字段、属性 /// <summary> /// 定义整数int类型字段a /// </summary> private int a; /// <summary> /// 定义整数int类型字段b /// </summary> private int b; /// <summary> /// <para>获取或设置类Study的属性A取值</para> /// <para>属于int类型</para> /// </summary> public int A { get { return a; } set { a = value; } } /// <summary> /// <para>获取或设置类Study的属性B取值</para> /// <para>属于int类型</para> /// </summary> public int B { get { return b; } set { b = value; } } #endregion #region 定义类Study的构造函数 /// <summary> /// <para>类Study的构造函数</para> /// <para>用于初始化两个属性A和B的初始值为1</para> /// </summary> public Study() { this.A = 1; this.B = 1; } #endregion #region 定义类Study类的所有功能方法 /// <summary> /// 定义类Study的Add方法,求和 /// </summary> /// <returns>返回Study类的两个属性A、B之和</returns> public int Add() { return A + B; } /// <summary> /// 定义类Study的Max方法,求最大值 /// </summary> /// <returns>返回Study类的两个属性A、B的最大值</returns> public int Max() { return (A > B ? A : B); } #endregion }
(10)增加“#region”标签的好处在于可以把当前不需要定义、查看的代码通过单击#region标签前的“减号”暂时关闭,留下待编辑的代码,这样代码页面结构清晰、干净。例如当前只是在编辑类Study的构造函数,那么代码结构如图7-13所示,而当需要编写其他代码时就只需要把#region标签前的“加号”打开即可。
图7-13 类文件Study.cs通过#region标签定义后的代码显示效果
7.1.9 小结
本节详细讲解了编写ASP.NET程序应该遵循的编程规范。编程规范就是开发人员在编写代码过程中应该遵循的良好的习惯,希望所有开发人员都养成这样一种好的编写程序的习惯。编程规范是任何一个优秀开发人员必须具备的素质。
共有条评论 网友评论