编码规范及其代码.docx

上传人:b****5 文档编号:7368269 上传时间:2023-01-23 格式:DOCX 页数:35 大小:34.91KB
下载 相关 举报
编码规范及其代码.docx_第1页
第1页 / 共35页
编码规范及其代码.docx_第2页
第2页 / 共35页
编码规范及其代码.docx_第3页
第3页 / 共35页
编码规范及其代码.docx_第4页
第4页 / 共35页
编码规范及其代码.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

编码规范及其代码.docx

《编码规范及其代码.docx》由会员分享,可在线阅读,更多相关《编码规范及其代码.docx(35页珍藏版)》请在冰豆网上搜索。

编码规范及其代码.docx

编码规范及其代码

选课系统编码规范及其代码说明

目录

1.导言

1.1目的

1.2范围

1.3缩写说明

1.4术语定义

1.5引用标准

1.6参考资料

1.7版本更新信息

2.编码格式规范

3.命名规范

3.1命名的基本约定

3.2各种标示符类型的命名约定

3.3组件名称缩写列表

4.声明规范

4.1变量声明

4.2代码缩进

4.3空白

5.语句规范

6.注释规范

6.1注释的方法

6.2开头注释

6.3类和接口的注释

7.目录规范

 

1.导言

1.1目的

该文档的目的是描述网上招聘系统项目的编码规范和对代码的说明,其主要内容包括:

●编码规范

●命名规范

●注释规范

●语句规范

●声明规范

●目录设置

●代码说明

本文档的预期的读者是:

●开发人员

●项目管理人员

●质量保证人员

1.2范围

该文档定义了本项目的代码编写规范,以及部分代码描述和所有代码的说明。

1.3缩写说明

Aspx

Aspx是ActiveServerPagesXML的缩写。

 

1.4术语定义

Class

C#程序的单元。

Packages

由很多的类组成的工作包。

1.5引用标准

[1]《企业文档格式标准》

北京长江软件有限公司

1.6参考资料

书名:

《系统分析设计技术》作者:

张友生

《C#程序设计》

 

2.编码格式规范

1.代码书写格式

(1)所有的缩进TAB键为4个空格,每个单词的首字符大写,其余小写。

(2)在代码中垂直对齐左括号和右括号。

例:

if(x==0)

{

Response.Write("用户名必须输入!

");

}

不允许以下情况:

if(x==0)

{

Response.Write("用户名必须输入!

");

}或者

if(x==0)

{

Response.Write("用户名必须输入!

");

}

(3)在大多数运算符之前和之后使用空格,这样做时不会改变代码的的意图却可以使代码容易阅读。

例:

intj=i+k;而不应写为:

intj=i+k;

(4)缩写SQL语句时,对于关键字使用全部大写,对于数据库元素(如表,列和视图)使用大小写混合)。

(5)将每个主要的SQL子句放在不同的行上,这样更容易阅读和编辑语句。

2.注释的写法

(1)在你劳神的地方请加上详细的注释说明,除了最简单的存取成员变量的Set/Get成员函数之外,其余大部分的函数写上注释是良好的习惯,尽量使你的程序让别人很容易看懂。

(2)大多的注释会使很难看,但一些复杂的算法和数据结构和数据结构处还是要加上注释的,这样别人就容易看懂,否则时间长了,你自己都未必卸载明白了。

(3)如果是对某一段程序(算法/结构)的注释,在程序头直接用//再空一格进行说明,一行不要超过80个字符。

(4)为了防止在阅读代码时不得不左右流动源代码编辑器,每行代码或注释在不得超过一显示屏。

(5)使用连续的多个/表示注释行(不要超过80字符)。

(6)文件头部应有注释,简单描述文件的内容(7)对于程序中的比较关键的算法和函数,必须加注释。

3.cs文件的书写

(1)各个部分应使用注释行和空行分割,并在必要的地方写上注释。

(2)函数之间用注释各空行分割。

中间的内容缩进一个TAB三.其他1.变量

(1)float和bool禁止用"=="判断.bool应该用逻辑运算关系符,而float应该用差值区间来判断"相等";

(2)类型转换一律用显示类型转换

(3)类型的长度一律用sizeof()获得;

(4)当声明一个变量时,务必要自已初始化一下变量;

2.函数

(1)功能单一,函数名要名符其实.

(2)要易懂,实现时要根过分追求技巧,优化放到后面去做

.(3)长度一般禁止超过200行.

(4)要检查输入值是否合法,实现(成员)函数时务必要求输入参数是在要求范围之内,尤其你定义的(成员)函数给别人调用时,要判断其合法性.

(5)调用函数时要严格按照接口规范调用,调用后要判断执行情况,并做适当的错误处理(尔后会给出错误和异常处理规范)

(6)尽量避免整块复制代码段,如果出现这样的情况要分析原因,如果这段代码完成独立的功能,应考虑使用函数,否则,应考虑使用宏定义,否则因为修改引起的不一致往往是错误的根源

.(7)除极其简单的函数外,其他的函数在稿处必须加上FMAT_TARCE(),参见错误异常处理规范

.(8)函数的出口尽量唯一,最好在出口处加上FMAT_TRCE();

(9)写代码时,尽量减少堆的分配次数,能使用Stack的尽量使用Stack

(10)函数编写必须精练,消除冗余的代码,删除不用的变量

(11)if/while等语句中和条件表达式的运算结果必须为显示的Bool量

(12)禁止使用goto语句附:

标识符大小写方式示例标识符大小写规则标识符大小写示例类PascalAppDomain枚举类型PascalErrorLevel枚举值PascalFataError事件PascalValueChanged异常类PascalWebException只读的静态字段PascalReadValue接口PascalIDisposable方法PascalToString命名空间PascalSystem.Drawing属性PascalBackColor参数CameltypeName

3.命名规范

3.1命名的基本约定

  1>要使用可以准确说明变量/字段/类的完整的英文描述符,如firstName。

对一些作用显而易见的变量可以采用简单的命名,如在循环里的递增(减)变量就可以    被命名为“i”。

  2>要尽量采用项目所涉及领域的术语。

  3>要采用大小写混合,提高名字的可读性。

为区分一个标识符中的多个单词,把标识符中的每个单词的首字母大写。

不采用下划线作分隔字符的写法。

    有两种适合的书写方法,适应于不同类型的标识符:

      PasalCasing:

标识符的第一个单词的字母大写;

      camelCasing:

标识符的第一个单词的字母小写。

  4>下表描述了不同类型标识符的大小写规则:

标识符

大小写

示例

命名空间

Pascal

namespaceCom.Techstar.ProductionCenter

类型

Pascal

publicclassDevsList

接口

Pascal

publicinterfaceITableModel

方法

Pascal

publicvoidUpdateData()

属性

Pascal

PublicintLength{…}

事件

Pascal

publiceventEventHandlerChanged;

私有字段

Camel

privatestringfieldName;

非私有字段

Pascal

publicstringFieldName;

枚举值

Pascal

FileMode{Append}

参数

Camel

publicvoidUpdateData(stringfieldName)

局部变量

Camel

stringfieldName;

  5>避免使用缩写,如果一定要使用,就谨慎使用。

同时,应该保留一个标准缩写的列表,并且在使用时保持一致。

  6>对常见缩略词,两个字母的缩写要采用统一大小写的方式(示例:

ioStream,getIOStream);多字母缩写采用首字母大写,其他字母小写的方式(示例:

    getHtmlTag);

  7>避免使用长名字(最好不超过15个字母)。

  8>避免使用相似或者仅在大小写上有区别的名字。

3.2各种标示符类型的命名约定

  1>程序集命名

  实验室名称(Lab)+项目名称+模块名称(可选),例如:

    中心服务器程序集:

Lab.SeverCenter;

    中心服务器业务逻辑程序集:

Lab.SeverCenter.Business;

  2>命名空间命名

  采用和程序集命名相同的方式:

实验室名称(Lab)+项目名称+模块名称。

另外,一般情况下建议命名空间和目录结构相同。

例如:

    中心服务器:

Lab.SeverCenter;

    中心服务器下的用户控件:

Lab.SeverCenter.UserControl;

    中心服务器业务逻辑:

Lab.SeverCenter.Business;

    中心服务器数据访问:

Lab.SeverCenter.Data;

  3>程序集和DLL

  l大多数情况下,程序集包含全部或部分可重用库,且它包含在单个动态链接库(DLL)中。

  l一个程序集可拆分到多个DLL中,但这非常少见,在此准则中也没有说明。

  l程序集和DLL是库的物理组织,而命名空间是逻辑组织,其构成应与程序集的组织无关。

  l命名空间可以且经常跨越多个程序集。

可以考虑如下模式命名DLL:

  ..dll

  例:

Lab.SeverCenter.dll

  4>类和接口命名

  l类的名字要用名词;

  l避免使用单词的缩写,除非它的缩写已经广为人知,如HTTP。

  l接口的名字要以字母I开头。

保证对接口的标准实现名字只相差一个“I”前缀,例如对IComponent接口的标准实现为Component;

  l泛型类型参数的命名:

命名要为T或者以T开头的描述性名字,例如:

    publicclassList

    publicclassMyClass

  l对同一项目的不同命名空间中的类,命名避免重复。

避免引用时的冲突和混淆;

  5>方法命名

  l第一个单词一般是动词;

  l如果方法返回一个成员变量的值,方法名一般为Get+成员变量名,如若返回的值是bool变量,一般以Is作为前缀。

另外,如果必要,考虑用属性来替代方法;

  l如果方法修改一个成员变量的值,方法名一般为:

Set+成员变量名。

同上,考虑用属性来替代方法。

  6>变量命名

  l按照使用范围来分,我们代码中的变量的基本上有以下几种类型,类的公有变量;类的私有变量(受保护同公有);方法的参数变量;方法内部使用的局部变量。

    这些变量的命名规则基本相同,见标识符大小写对照表。

区别如下:

    a)类的公有变量按通常的方式命名,无特殊要求;

    b)类的私有变量采用两种方式均可:

采用加“m”前缀,例如mWorkerName;

    c)方法的参数变量采用camalString,例如workerName;

  l方法内部的局部变量采用camalString,例如workerName。

  l不要用_或&作为第一个字母;

  l尽量要使用短而且具有意义的单词;

  l单字符的变量名一般只用于生命期非常短暂的变量:

i,j,k,m,n一般用于integer;c,d,e一般用于characters;s用于string

  l如果变量是集合,则变量名要用复数。

例如表格的行数,命名应为:

RowsCount;

  l命名组件要采用匈牙利命名法,所有前缀均应遵循同一个组件名称缩写列表

3.3组件名称缩写列表

  缩写的基本原则是取组件类名各单词的第一个字母,如果只有一个单词,则去掉其中的元音,留下辅音。

缩写全部为小写。

组件类型

缩写

例子

Label

Lbl

lblNote

TextBox

Txt

txtName

Button

Btn

btnOK

ImageButton

Ib

ibOK

LinkButton

Lb

lbJump

HyperLink

Hl

hlJump

DropDownList

Ddl

ddlList

CheckBox

Cb

cbChoice

CheckBoxList

Cbl

cblGroup

RadioButton

Rb

rbChoice

RadioButtonList

Rbl

rblGroup

Image

Img

imgBeauty

Panel

Pnl

pnlTree

TreeView

Tv

tvUnit

WebComTable

Wct

wctBasic

ImageDateTimeInput

Dti

dtiStart

ComboBox

Cb

cbList

MyImageButton

Mib

mibOK

WebComm.TreeView

Tv

tvUnit

PageBar

Pb

pbMaster

 

4.声明规范

4.1变量声明:

为了保持更好的阅读习惯,请不要把多个变量声明写在一行中,即一行只声明一个变量。

  例如:

  StringstrTest1,strTest2;

  应写成:

  StringstrTest1;

  StringstrTest2;

 4.2代码缩进:

  l一致的代码缩进风格,有利于代码的结构层次的表达,使代码更容易阅读和传阅;

  l代码缩进使用Tab键实现,最好不要使用空格,为保证在不同机器上使代码缩进保持一致,特此规定C#的Tab键宽度为4个字符,设定界面如下(工具–选项):

  l避免方法中有超过5个参数的情况,一般以2,3个为宜。

如果超过了,则应使用struct来传递多个参数。

  l为了更容易阅读,代码行请不要太长,最好的宽度是屏幕宽度(根据不同的显示分辩率其可见宽度也不同)。

请不要超过您正在使用的屏幕宽度。

(每行代码不要超过80个字符。

  l程序中不应使用goto语句。

  l在switch语句中总是要default子句来显示信息。

  l方法参数多于8个时采用结构体或类方式传递

  l操作符/运算符左右空一个半角空格

  l所有块的{}号分别放置一行,并嵌套对齐,不要放在同一行上

  4.3空白:

  l空行将逻辑相关的代码段分隔开,以提高可读性。

  l下列情况应该总是使用两个空行:

    a)一个源文件的两个片段(section)之间。

    b)类声明和接口声明之间。

  l下列情况应该总是使用一个空行:

    a)两个方法之间。

    b)方法内的局部变量和方法的第一条语句之间。

    c)块注释(参见"5.1.1")或单行注释(参见"5.1.2")之前。

    d)一个方法内的两个逻辑段之间,用以提高可读性。

  l下列情况应该总是使用空格:

    a)空白应该位于参数列表中逗号的后面,如:

      voidUpdateData(inta,intb)

    b)所有的二元运算符,除了".",应该使用空格将之与操作数分开。

一元操作符和操作数之间不因该加空格,比如:

负号("-")、自增("++")和自减("--")。

例      如:

        a+=c+d;

        d++;

    c)for语句中的表达式应该被空格分开,例如:

        for(expr1;expr2;expr3)

    d)强制转型后应该跟一个空格,例如:

        charc;

        inta=1;

        c=(char)a;

5.语句规范

C#语言规范--1.6语句:

C#中的大多数语句都是直接从C和C++借用的,但有一些值得注意的添加和修改。

列出了可用的语句类型,并提供了每种类型的示例。

语句示例

语句列表和块语句staticvoidMain()

{

F();

G();

{

H();

I();

}

}

标记语句和goto语句

staticvoidMain(string[]args){

if(args.Length==0)

gotodone;

Console.WriteLine(args.Length);

done:

Console.WriteLine("Done");

}

局部常数声明

staticvoidMain(){

constfloatpi=3.14f;

constintr=123;

Console.WriteLine(pi*r*r);}

局部变量声明

staticvoidMain()

{

inta;

intb=2,c=3;

a=1;

Console.WriteLine(a+b+c);

}

表达式语句

staticintF(inta,intb)

{

returna+b;}staticvoidMain()

{

F(1,2);//Expressionstatement

}

if语句

staticvoidMain(string[]args)

{

if(args.Length==0)

Console.WriteLine("Noargs");

Else

Console.WriteLine("Args");

}

switch语句

staticvoidMain(string[]args)

{

switch(args.Length)

{

case0:

Console.WriteLine("Noargs");

break;

case1:

Console.WriteLine("Onearg");

break;

default:

intn=args.Length;Console.WriteLine("{0}args",n);

break;

}

}

while语句

staticvoidMain(string[]args)

{

inti=0;

while(i

{

Console.WriteLine(args[i]);

i++;

}

}

do语句

staticvoidMain()

{strings;

do

{

s=Console.ReadLine();

}

while(s!

="Exit");

}

for语句

staticvoidMain(string[]args)

{

For

(inti=0;i

}

foreach

语句staticvoidMain(string[]args)

{

foreach(stringsinargs)

Console.WriteLine(s);

}

break语句

staticvoidMain(string[]args)

{

inti=0;

while(true)

{

if(i==args.Length)

break;

Console.WriteLine(args[i++]);

}

}

continue语句

staticvoidMain(string[]args)

{

inti=0;

while(true)

{

Console.WriteLine(args[i++]);

if(i

continue;

break;

}

}

return语句

staticintF(inta,intb)

{

returna+b;

}

staticvoidMain()

{Console.WriteLine(F(1,2));return;

}

throw语句和try语句

staticintF(inta,intb)

{

if(b==0)

thrownewException("Dividebyzero");

returna/b;

}

staticvoidMain()

{

try

{

Console.WriteLine(F(5,0));

}

catch(Exceptione){

Console.WriteLine("Error");

}

}

checked和unchecked语句

staticvoidMain()

{

intx=Int32.MaxValue;

Console.WriteLine(x+1);

//Overflow

checked

{

Console.WriteLine(x+1);

//Exception}

unchecked{

Console.WriteLine(x+1);//Overflow

}

}

lock语句

staticvoidMain()

{Aa=...;

lock(a)

{

a.P=a.P+1;

}

}

using语句staticvoidMain()

{

using(Resourcer=newResource())

{

r.F();

}

}

6.注释规范

C#提供一种机制,使程序员可以使用含有XML文本的特殊注释语法为他们的代码编写文档.在源代码文件中,具有某种格式的注释可用于指导某个工具根据这些注释和它们后面的源代码元素生成XML.使用这类语法的注释称为文档注释(documentationcomment).这些注释后面必须紧跟用户定义类型(如类,委托或接口)或者成员(如字段,事件,属性或方法).XML生成工具称作文档生成器(documentationgenerator).(此生成器可以但不一定必须是C#编译器本身.)由文档生成器产生的输出称为文档文件(documentationfile).文档文件可作为文档查看器(documentationviewer)的输入;文档查看器是用于生成类型信息及其关联文档的某种可视化显示的工具.

此规范推荐了一组在文档注释中使用的标记,但是这些标记不是必须使用的,如果需要也可以使用其他标记,只要遵循"符合格式标准的XML"规则即可.

A.1.介绍

具有特殊格式的注释可用于指导某个工具根据这些注释和它们后面的源代码元素生成XML.这类注释是以三个斜杠(///)开始的单行注释,或者是以一个斜杠和两个星号(/**)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1