编码命名规范(.NET)(很全,很实用)
一、命名约定
1.常用命名术语说明
Pascal命名格式将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用Pascal 大小写。例如:BackColor
Camel命名格式标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:backColor
2.名称空间命名
创建命名空间的名称时应使用以下原则:
“公司名称.技术名称.软件产品代号”或“公司名称.产品技术代号”
例如:Nd.ClassLibrary.Charting 命名空间就表示Nd公司里的公用类库里的Charting画图类库。
又如:Net91com.Movies.DataAccess 名称空间标识电影站的数据访问层程序集。
3.类命名
使用完整的单词,避免用缩写。比如ButtonGrid比BtnGrd要长,但是完整从而可读性好。
一般使用名词。类通常表示一种对象,而对象一般使用具有名词性质的名称。
异常类命名:类以Exception结尾,
比如class EQException: Exception{}
4.局部变量命名
私有字段、函数参数和函数内部声明的变量使用camel Casing
不使用的是用以指明字段作用域的前缀。如s_作为共享字段或静态字段的前缀,以及把g_作为全局变量的前缀。
不使用用以指明数据类型的匈牙利前缀表示法,如(strReturn)。在Microsoft Visual Studio .NET环境中,只要在代码编辑器中将鼠标移到域名上,就可以得到关于字段或变量的类型信息。另外,类型前缀限制了开发者在需要时改变变量的类型的能力,或者更糟糕的是,开发者改变了变量的类型,却没有为变量重新命名,从而产生具有误导性的代码。
5.只读静态变量
Pascal大小写
6.类私有变量
_ + Pascal大小写。如:_BackColor
7.属性命名
使用Pascal Casing。
属性名称通常都是名词。例如Text、SelectedIndex和Width。
8.接口命名
使用Pascal Casing。
在接口名称前缀添加前缀I 。
接口名称尽量具有描述性,并使用形容词,因为接口常常用于给一个类添加某种能力。基于形容词的名称有IComparable和IFormattable等
9.方法命名
使用Pascal Casing。
方法名通常是动词。方法实现一个对象的行为功能。方法执行某些操作。方法名的例子有Read、Write、Start和Stop。
当重载方法时,参数的顺序和命名要一致。
定义方法名时不要使用缩写。
方法参数Camel大小写结构
10.事件命名
使用Pascal Casing。
事件名称通常是动词。比如Click、Load和Paint
11.枚举类型
使用Pascal Casing。如:EQFormatConditionOperator。枚举值也是Pascal,比如EQFormatConditionOperator. Equal
12.委托命名delegate
AfterOperationHandler,总是以Handler为后缀结尾
13.类对象命名
使用obj前缀+Pascal命名的方式,来告知我们这个变量是一个对象
比如:EQApplication objApp = new EQApplication();
14.Attribute
Pascal大小写,并以Attribute结尾
17.注意:
不要使用两个字母一样,但大小写不一样的命名来做命名空间,否则在一些不区分大小写的语言里将不能正确区分这些命名空间声明。例如:namespace ee.cummings和namespace EE.cummings这两个声明
不要使用大小写区分参数的形式来创建方法。比如:void MyFunction(string a,string A) 不要使用大小写的不同来分别命名一个属性。比如:
int Color { get,set }
int COLOR { get,set }
不要使用大小写的不同来分别命名一个方法的名字。比如:
void calculate()
void Calculate()
不要使用标志名称的一部分作为该标志名称的缩写或简写。比如:GetWindow简写为GetWin。
尽量避免用缩写方式来对方法的参数命名,即方法的参数命名尽量保持完整,让人一目了然。
尽量避免就一个字母的命名,如i 或t,而用index 或temp
二、代码格式化
1.{}的位置
{与}各单独占一行。例如:
if(x > 5)
{
//代码
}
2.if、if else的格式
if(condition)
{
DoSomething();
}
if(condition)
{
DoSomething();
}
else
{
DoSomethingOther();
}
if(condition)
{
DoSomething();
}
else if(condition)
{
DoSomethingOther();
}
else
{
DoSomethingOtherAgain();
}
3.for、foreach的格式
//for格式
for(int i = 0; i < 5; ++i)
{
// 代码
}
//foreach的格式
foreach(int i in IntList)
{
// 代码
}
4.while/switch的格式
//while格式
while(condition)
{
// 代码
}
//switch的格式
switch(condition)
{
case A: ...
break;
case B:
...
break;
default:
...
break;
}
5.try的格式
try
{ ...
}
catch(Exception e)
{ ...
}
//或者
try
{ ...
}
catch(Exception e)
{ ...
}
finally
{ ...
}
6.空格
对于有两个或两个以上空格时,一般不要使用空格来表示缩进,使用Tab
逗号、分号之后有一个空格
如:TestMethod(a,b,c);
操作符前后有一个空格,但是单目运算符除外(例如:!运算符)。
如:for(int i = 0; i < 10; ++i)
7.在执行统一任务的各个语句组之间插入一个空行。
8.名称空间写法,各类名称空间插入空行,同一类命命空间按字母序号排列
如:
using System;
using System.Text;
using System.Collections;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using net91com.Movies.DataAccess;
using net91com.Movies.Business;
using monComponent;
三、代码注释
1.注释的目的
a. 文字说明代码的作用(即为什么要用编写该代码,而不是如何编写);
b. 确指出该代码的编写思路和逻辑方法;
c. 人们注意到代码中的重要转折点;
d. 使代码的阅读者不必在他们的头脑中仿真运行代码的执行方法
2.对类文件进行属性注释说明
//===================================================================== ==========
// 公司:
// 项目名称:
// 模块名称:
// 开发人员:
// 开发日期:
// 功能简介:
// 最后修改时间:
// 修改人员:
//===================================================================== ==========
3.避免对很显然易懂的语句进行注释说明
4.代码应该能作到自我解释代码作用的功能。
5.注释来说明何时可能出错和为什么出错
6.在编写代码前进行注释,给类、属性或方法前面加上功能注释
7.注释的内容
a.实参/ 参数
参数类型,参数用来做什么,任何约束或前提条件
b.字段/属性
字段描述,注释所有使用的不变量,并行事件可见性决策
c.类
类的目的,已知的问题,类的开发/维护历史,注释出采用的不变量,并行策略d.接口
目的它应如何被使用以及如何不被使用
e.局部变量
用处/目的
f.成员函数注释
成员函数做什么以及它为什么做这个
哪些参数必须传递给一个成员函数
成员函数返回什么
已知的问题
任何由某个成员函数抛出的异常
可见性决策
成员函数是如何改变对象的
包含任何修改代码的历史
如何在适当情况下调用成员函数的例子适用的前提条件和后置条件
g.成员函数内部注释
控制结构
代码做了些什么以及为什么这样做
局部变量
难或复杂的代码
处理顺序
8.增强注释的可读性
a. 使用完整的语句。
b. 避免使用缩写。
c. 将整个单词大写,以突出它们的重要性。
9.请在每个if语句/switch语句/循环语句的前面加上注释
四、类/接口成员设计
1.设计类和方法时的原则
创建更加容易调试和维护的方法
创建具有强大内聚力的类
创建高度专用的方法
创建松散连接的方法
尽量使方法具有独立性
提高方法的扇入性
降低方法的扇出性
2.名称空间引用
using 声明一律以.NET基础框架命名空间、第三方组件命名空间、最后是公司内部产品命名空间排序。
using System;
using System.Collections;
using Microsoft.CSharp;
using Sirc.Egss.FileExchangeServer;
3.成员排列规则
尽量不要使用类public变量,用属性代替
类成员以internal、private、protected、public排列。public部分按照构造函数、属性、方法、事件的顺序排列。
4.每个类文件名应尽量保持与内部类名一致
5.尽量避免手动去修改工具环境自动生成的代码
6.避免在一个类文件里放置多个类
7.一个类文件里应该有且仅有一个命名空间,避免在一个类文件里包含多个不同的命名空间
8.避免在一个类文件里代码超过500 行(除去自动生成的代码)
9.数据结构里,应该总是更倾向使用C#的范型generic
10.尽量缩小变量的作用域
11.接口设计
将接口名去掉I 前缀后,作为这种默认实现类的名称。比如IComponent的默认实现类是Component
每个接口不应当有超过20个成员的情况,一般应保持在12个左右
12.方法设计
创建松散连接和高度专用的方法
创建方法时,设法将每个方法视为一个黑箱,其他例程不应要求了解该方法的内部工作情况,该方法也不应要求了解它外面的工程情况。这就是为什么你的方法应依靠参数而不应依靠全局变量的原因。
a.将复杂进程放入专用方法。
b.将专用方法中可能要修改的代码隔离。
c.将数据输入/输出(I/O)放入专用方法。
d.将业务规则封装在专用方法中。
e.有返回值的方法必须在方法命名里包含对该返回值的信息描述,如GetObjectStat()。
f.局部变量的声明,应尽可能紧靠在它首次被使用的地方
g.一个方法里的代码避免超过25 行,最多不能超过50 行(除去空行、注释)
h.一行代码最多不要超过80 个字符
i.避免使用强制转换,推荐使用as操作符进行防御性转换
j.当需要创建一个长字符串时,推荐使用StringBuilder,而非string
k.避免使用不易理解的数字,用有意义的标识来替代(枚举和常量)
13.属性设计
避免使用返回数组的属性。这些属性会降低程序的效率
不要提供public或protected型的成员变量,而应当使用属性替代之
五、数据库设计规范
数据库名
Pascal Casing命名规则
以名词命名,直观,可读性强
表名
Pascal Casing命名规则
应以完整单词命名,避免使用缩写。
数据字典以“dic_表名”来命名
字段命名
Pascal Casing命名规则
以"表名_字段名"进行命名
存储过程命名
全部大写
以"UP_表名_操作"进行命名
视图命名
全部大写
以"VIEW_功能"进行命名
触发器命名
全部大写
以"TR_功能"进行命名
主键命名
全部大写
以"PK_表名_列名"进行命名
外键命名
全部大写
以"FK_从表名_表名_主表名"进行命名
Check约束命名
全部大写
以"CK_表名_列名"进行命名
索引命名
全部大写
以"IDX_表名_列名"进行命名
C语言编程规范 对于程序员来说,能工作的代码并不等于“好”的代码。“好”代码的指标很多,包括易读、易维护、易移植和可靠等。其中,可靠性对嵌入式系统非常重要,尤其是在那些对安全性要求很高的系统中,如飞行器、汽车和工业控制中。这些系统的特点是:只要工作稍有偏差,就有可能造成重大损失或者人员伤亡。一个不容易出错的系统,除了要有很好的硬件设计(如电磁兼容性),还要有很健壮或者说“安全”的程序。 然而,很少有程序员知道什么样的程序是安全的程序。很多程序只是表面上可以干活,还存在着大量的隐患。当然,这其中也有C语言自身的原因。因为C语言是一门难以掌握的语言,其灵活的编程方式和语法规则对于一个新手来说很可能会成为机关重重的陷阱。同时,C语言的定义还并不完全,即使是国际通用的C语言标准,也还存在着很多未完全定义的地方。要求所有的嵌入式程序员都成为C语言专家,避开所有可能带来危险的编程方式,是不现实的。最好的方法是有一个针对安全性的C语言编程规范,告诉程序员该如何做。 本规范在制定过程中,主要参考了业界比较推崇的《华为软件编程规范和范例》和《MI SRA 2004规则》,适合C语言初学者使用,目的在于在教学中培养学生良好的编程规范和意识、素质,促进所设计程序安全、健壮、可靠、可读与可维护(程序简单、清晰)。考虑到面向的是初学者,为便于教学和课程考核操作,本规范中的要求比较基本。事实上,很多公司都有自己规定的代码风格,包括命名规则、缩进规则等,学生参加工作后,应再进一步学习和应用公司的规范。 建议学生在学习本规范的同时,花点时间阅读本规范的参考文献原文,特别是熟读本规范的参考文献之一的《“安全第一”的C语言编程规范》,深刻理解编程规范与程序安全、健壮、可靠、可读、可维护间的关系和作用,在学习和工作中养成良好的编程风格。 1 排版 1.1 严格采用阶梯层次组织程序代码 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句也要遵从语句缩进要求。 程序块的分界符(如C/C++ 语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if 、for 、do 、while 、switch 、case 语句中的程序都要采用如上的缩进方式。 各层次缩进的风格采用TAB缩进(TAB宽度原则上使用系统默认值,TC使用8空格宽度,VC使用4空格宽度)。示例:
【最新整理,下载后即可编辑】 1程序结构 所有源代码的结构均采用以下顺序布局,对于没有的部分可以省略,便于阅读代码。 //============================================== ================================================ #region Constant #endregion Constant //---------------------------------------------------------------------------------------------- #region Members #endregion Members //---------------------------------------------------------------------------------------------- #region Defaults #endregion Defaults //---------------------------------------------------------------------------------------------- #region Properties #endregion Properties //============================================== ================================================ #region Constructors #endregion Constructors //---------------------------------------------------------------------------------------------- #region InterfaceMethods #endregion InterfaceMethods //---------------------------------------------------------------------------------------------- #region StaticMethods #endregion StaticMethods //---------------------------------------------------------------------------------------------- #region OverrideMethods #endregion OverrideMethods //---------------------------------------------------------------------------------------------- #region PrivateMethods #endregion PrivateMethods //---------------------------------------------------------------------------------------------- #region ProtectedMethods #endregion ProtectedMethods //---------------------------------------------------------------------------------------------- #region PublicMethods #endregion PublicMethods //============================================== ================================================ #region Events #endregion Events //============================================== ================================================ 2命名规则和风格 ⑴类、方法、常量采用Pascal风格命名 public class SomeClass { const int DefaultSize = 100;
项目开发规范文档修订历史记录
1.简介 目的 1、用于规范指导开发组进行开发 2、便于成员间的沟通与交流。 3、有助于项目质量和稳定。 4、为后期维护提供支持 2. 项目开发流程 项目开发过程归纳分为以下步骤: 1. 建立SVN项目版本控制。包括文档,源码,Lib包等。 2. 了解需求,并对需求文档的书写。(见文档结构规则附录)。 3. 详细设计文档。(见文档结构规则附录)。 功能模块设计,重要模块的算法设计。 数据库设计等。 根据需求定义开发平台及环境。 4. 编码。 搭建开发平台,配置开发环境。 编码。 单元测试案例。 5. 书写软件安装手册文件,数据库脚本文件,以及注意事项(release notes)。 6. 交互测试组测试。根据测试组测试结果是否回归第4步(测试回归最好不要超过2 次)。 7. 测试通过,交付上线使用。 维护手册 使用手册
3. 代码规范 Java 代码规范 3.1.1 Java类名 类名可由:英文字母,数字,下划线组成。(数字,下划线不能够开头) 类名由一个或者多个单词组成。单词通常要求简洁明了达意。能够通过类名能够大致了解此类的作用和用途。 类名要求首字母大写,多个单词组成类名时,单词的首字母要求大写。 建议:类名不要过于简单或者太长。可以对单词采用简化的名称:入: Number 简化为:num 。 3.1.2 Java类结构 类仅作为数据结构,没有行为,他封装了一组或者相似的一些行为方法。所以一个类尽量功能单一,或者功能类似共有行为的。一个类不要过于庞大。 通常情况下: 一般逻辑类中应该有构造方法和main方法,main方法中应该有测试代码。 每个类应该有 toString() 方法。 3.1.2.1 包和引入语句 在多数Java源文件中,第一个非注释行是包语句。在它之后可以跟引入语句。 报名的定义全部是小写字母。具体定义依据项目而定。 引入包时候,同一类型的归纳到一块,用空行隔开。例如: import 3.1.2 类注释 Java类开头应该有相应的注释:类版本描述,作者签名,日期时间,公司备注,类的功能作用相关描述等。(详细查看:注释) 3.1.2.2 类成员变量 a) 类变量要求放在类的开始声明。一行声明一个。 b) 变量名称首字母要求小写。其他命名规则类似与类名。 c) static , final 类型的变量,字母要求全部大写。 d) 尽量在声明局部变量的同时初始化。 e) 避免局部变量和成员变量同名,覆盖了成员变量。 f) 尽量变量私有化,缩小变量的作用域。 3.1.2.3 类成员方法 a) 方法名命名规则类似于成员变量命名规则。 b) 成员方法尽量私有化。
百度文库- 让每个人平等地提升自我 1 程序代码注释编写规范 为提高控制程序的阅读性与可理解性,现制定相关代码程序代码注释编写的编写规范。 一般情况下,源程序有效注释量必须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 常规注释有以下两种方式。 单行:以"文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************* (C), MicTiVo International. Co., Ltd. 1.File : . History: Date: Author: Modification: 2. .. *************************************************/ 一、源文件头 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************************ (C), MicTiVo International. Co., Ltd. FileName: Author: Version : Date: : / /*receive _process() */ 意:与溢出中断写初值不同}
程序的书写规则(程序的编码规范) 随着软件产品的功能增加和版本的提高,代码越来越复杂,源文件也越来越多,对于软件开发人员来说,除了保证程序运行的正确性和提高代码的运行效率之外,规范风格的编码会对软件的升级、修改、维护带来极大的方便性,也保证程序员不会陷入“代码泥潭”中无法自拔。开发一个成熟的软件产品,除了有详细丰富的开发文档之外,必须在编写代码的时候就有条不紊,细致严谨。 以下的编码规范包含了程序排版、注释、命名、可读性、变量、程序效率、质量保证、代码编译、代码测试和版本控制等注意事项。 一、排版: 1.关键词和操作符之间加适当的空格。 2.相对独立的程序块与块之间加空行 3.较长的语句、表达式等要分成多行书写。 4.划分出的新行要进行适应的缩进,使排版整齐,语句可读。 5.长表达式要在低优先级操作符处划分新行,操作符放在新行之首。 6.循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。 7.若函数或过程中的参数较长,则要进行适当的划分。 8.不允许把多个短语句写在一行中,即一行只写一条语句。 9.函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风 格。 10.C/C 语言是用大括号‘{’和‘}’界定一段程序块的,编写程序块时‘{’和 ‘}’应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。
二、注释 1.注释要简单明了。 2.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。 3.在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防 止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。 4.对代码的注释应放在其上方相邻位置,不可放在下面。 5.对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域 的注释应放在此域的右方;同一结构中不同域的注释要对齐。 6.变量、常量的注释应放在其上方相邻位置或右方。 7.全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取 它以及存取时注意事项等的说明。 8.在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生 成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。 9.在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能 描述;输入、输出及返回值说明;调用关系及被调用关系说明等。 三、命名 1.较短的单词可通过去掉“元音”形成缩写; 2.较长的单词可取单词的头几发符的优先级,并用括号明确表达式的操作顺序, 避免使用默认优先级。 3.使用匈牙利表示法 四、可读性 1.避免使用不易理解的数字,用有意义的标识来替代。 2.不要使用难懂的技巧性很高的语句。
https://www.doczj.com/doc/f59280272.html, C#开发规范 第一部分 第一章ASP编码规范通述 ASP编码分为两大部分,一部分为静态文件编码,一部分为包含服务器端脚本的动态文件编码。 静态文件编码分Script编码和HTML编码两部分。 服务器端编码则分为服务器脚本、客户端脚本、HTML脚本三部分。 编码规范采用如下约定: 所有客户端脚本一律使用JavaScript 所有服务器端脚本一律使用c# 静态页面输出一律使用HTML脚本 本规范不适用于由服务器端脚本所产生的客户端脚本代码。 第二章静态文件编码规范: 静态文件脚本部分采用JavaScript编写。输出部分采用HTML标记语言。 1. HTML标记语言编码规范 1.1 标记的换行规范: * 一个标记必须占用一行。不得出现两个标记在同一行的情况(同一标记的关闭标记除外),如: