《C#编程规范.doc》由会员分享,可在线阅读,更多相关《C#编程规范.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、项目代码风格要求(C#)分类:编程2013-06-14 13:11138人阅读评论(0)收藏举报代码风格C#项目效率目录(?)+代码风格没有正确与否,重要的是整齐划一,这是我拟的一份项目代码风格要求,供大家参考。PDF版下载地址1. C# 代码风格要求1.1注释类型、属性、事件、方法、方法参数,根据需要添加注释。如果类型、属性、事件、方法、方法参数的名称已经是自解释了,不需要加注释;否则需要添加注释。当添加注释时,添加方式如下图所示:1.2 类型(类、结构、委托、接口)、字段、属性、方法、事件的命名优先考虑英文,如果英文没有合适的单词描述,可以使用拼音,使用中文是不符合要求的。唯一可以使用中文
2、的地方是枚举的枚举项,枚举项实际已经不属于本节标题的范畴了。这里只是放到一起说明,如下图所示:1.3 不使用缩写所有类型、方法、参数、变量的命名不得使用缩写,包括大家熟知的缩写,例如msg。1.4 代码使用半展开第一步,打开Visual Studio,进入“工具”,“选项.”,如下图所示:第二步,进入“文本编辑器”,“C#”,“格式设置”,“新行”,取消掉右侧所有复选框中的对号,如下图所示:第三步,点击“确定”,完成设置。1.5 使用Tab作为缩进,并设置缩进大小为4第一步,打开Visual Studio,进入“工具”,“选项.”,如下图所示:第二步,进入“文本编辑器”,“C#”,“制表符”,
3、如下图所示,设置制表符。第三步,点击“确定”,完成设置。1.6 一个.cs源文件至多定义两个类型如果两个类型的关系是紧密相关的,比如 产品、产品类型,此时Product类,和ProductType枚举可以定义在同一个Product.cs文件中。但不能在一个.cs文件中出现两个不相关的类型定义,例如将 Product类和Reseller类(分销商)定义在一个BasicInfo.cs文件中。1.7 类型名称和源文件名称必须一致当类型命名为Product时,其源文件命名只能是Product.cs。1.8 所有命名空间、类型名称使用Pascal风格(单词首字母大写)如下图所示,红色标记的为使用Pasc
4、al风格的类型:注意ProductType是私有类型,不管类型是公有的还是私有的,其命名总是采用Pascal风格。1.9 本地变量、方法参数名称使用Camel风格(首字母小写,其后每个单词的首字母大写)红色标记的为使用Camel风格的变量或者方法参数:1.10 私有方法、受保护方法,仍使用Pascal风格命名示例代码如下:1.11 如果if语句内容只有一行,可以不加花括号,但是必须和if语句位于同一行范例1.9 中的if判断实际上与下面的语句是等效的:1.12 调用类型内部其他成员,需加this;调用父类成员,需加base示例代码如下:1.13 类型内部的私有和受保护字段,使用Camel风格命
5、名,但加“_”前缀代码示例如下:1.14 不能出现公有字段如果需要公有字段,使用属性进行包装。1.15 类型成员的排列顺序类型成员的排列顺序自上而下依次为:字段:私有字段、受保护字段属性:私有属性、受保护属性、公有属性事件:私有事件、受保护事件、公有事件构造函数:参数数量最多的构造函数,参数数量中等的构造函数,参数数量最少的构造函数方法:重载方法的排列顺序与构造函数相同,从参数数量最多往下至参数最少。1.16 委托和事件的命名委托以EventHandler作为后缀命名,例如 SalesOutEventHandler。事件以其对应的委托类型,去掉EventHandler后缀,并加上On前缀构成。
6、例如,对于SalesOutEventHandler委托类型的事件,其事件名称为:OnSalesOut。示例代码如下:1.17 返回bool类型的方法、属性的命名如果方法返回的类型为bool类型,则其前缀为Is、Can或者 Try,例如:1.18 常见集合类型后缀命名凡符合下表所列的集合类型,应添加相应的后缀。说明后缀示例数组Arrayint productArray列表ListList productListDataTable/HashTableTableHashTable productTable字典DictionaryDictionay productDictionaryEF中的DbSet
7、 /DataSetSetDbSet productSet1.19 常见后缀命名凡符合下表所列的局部变量、方法参数、字段、属性,均需添加相应的后缀。说明后缀示例示例说明费用相关CostShipCost运输费价格相关PriceProductUnitPrice产品单价消息相关Message(弃用Note)SuccessMessage成功消息日期相关Date(弃用Time)OrderDate下单日期计数、数量相关Count(弃用Time)LoginCount登录次数链接地址相关UrlBlogUrl博客链接图片相关ImageSignImage签名图片金额相关AmountPrepaidAmount预付款点
8、数、积分相关PointMemberPoint会员积分记录、日志相关Record(弃用Log)ErrorRecord错误记录配置相关ConfigDataBaseConfig数据库配置状态相关StatusOrderStatus订单状态模式、方式相关ModeOpenMode打开方式种类相关Category / Type 二选一UserCategory用户种类工厂类相关FactoryConnectionFactory连接工厂启用相关EnabledExportEnabled开启导出流相关StreamUploadStream上传流读取器相关ReaderExcelReaderExcel读取器写入器相关Wri
9、terExcelWriterExcel写入器适配器相关AdapterIntroOPAdapterIntroOP适配器提供器相关ProviderMemebershipProvider会员信息提供器包装器相关WrapperProductWrapperProduct包装器连接相关ConnectionExcelConnectionExcel连接1.20 常见类型命名凡存在下表中的类型,需采用下表指定的名称命名。类型命名类型命名客户Customer分销商Reseller零售商Retailer经销商/批发商Dealer用户UserInfo(User为数据库关键字)订单OrderInfo(Order为数据库
10、关键字)供应商Supplier管理员Admin密码Password会员Member评论Remark(弃用Comment)文章Article新闻News发票Invoice导入Import导出Export公司、企业Company(弃用Enterprise)产品Product省份Province城市City区县District地址Address角色Role(弃用Group)权限Authority(弃用Permission)仓库Warehouse工厂Plant登录Login(弃用SignIn)登出LogOut(弃用SignOut)创建Create(弃用Add)编辑Edit更新Update删除Remov
11、e(弃用Delete)照片Photo图片Image1.21 常见字段、属性命名字段、属性种类比较繁杂,因此仅列出最常用的几项。类型名称类型名称Id(int型)Id(“d”小写,弃用ID)GuidId(Guid型)IdName名称Title标题Remark备注、描述(弃用Memo、Description)Category种类(弃用Class、Type)Linkman联系人2. XHTML 代码风格要求2.1 如果XHTML标记有层次,那么代码也要有层次下面是书写符合要求的例子:下面是书写不符合要求的例子:2.2 所有标记必须闭合示例代码如下:2.3 如果标记中间代码超过20行,则应在标记末尾加注
12、标识标注方式如下:3. CSS 代码风格要求3.1 代码使用半展开设置方法参考1.4节。3.2 使用Tab作为缩进,并设置缩进大小为4设置方法参考1.5节。3.3 代码注释注释主要说明该样式应用于页面的哪个部分,而非说明样式的应用效果,代码注释风格如下所示:3.4 代码编写每一个样式设置必须独占一行,不能位于同一行,下面是符合要求的写法:下面是不符合要求的写法:3.5 嵌入式样式的比例不超过样式表代码总量的10%嵌入式样式为直接写在HTML标记内部的样式,如下图所示:3.6 内联式样式的比例不超过样式表代码总量的30%内联式样式为写在中的样式,如下图所示:内联式样式,不能写在之间。3.7 外联
13、式样式表的比例不少于样式表代码总量的60%外联式样式表为写在.css文件中的样式,通过link引入到XHTML页面中,如下图所示:4. JavaScript 代码风格要求4.1 代码使用半展开设置方法参考1.4节。4.2 使用Tab作为缩进,并设置缩进大小为4设置方法参考1.5节。4.3 代码注释代码注释需要说明“函数功能”、“入口参数”、“返回值”,注释范例如下:其中第一行说明函数功能;第二行说明入口参数;最后一行说明返回值4.4 不得出现内嵌式代码内嵌式代码是指写在XHTML标记中的JavaScript代码,下面的写法是不符合要求的:4.5 内联式代码占JavaScript的总量不得超过40%内联式代码是指写在或者之间的代码:4.6 外联式代码占JavaScript的总量至少为60%外联式代码指写在单独的.js文件中,然后通过script标记连接到XHTML页面中的代码。
限制150内