五、技术规则
2、程序代码规范
2-1
:程序块要采用缩进风格编写。
2-3
:较长的语句(
>80
字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
示例:
if(ChBox.Checked==true)
{
TheArticle.ID = DataGrid1.Items[i].Cells[0].Text;
TheArticle.PassAdmin = Session["HnucAdmin"].ToString();
Res+="<br/>
文章
”
+((HyperLink)DataGrid1.Items[i].Cells[1].FindControl("ArticleLink")).text
+":"+ TheArticle.Pass();
}
2-4:
循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。
2-5:
若函数或过程中的参数较长,则要进行适当的划分。
2-6: if
、
for
、
do
、
while
、
case
、
switch
、
default
等语句自占一行,且
if
、
for
、
do
、
while
等语句的执行语句部分无论多少都要加括号
{}
。
2-7:
一行程序以小于
80
字符为宜,不要写得过长。
2-8:
源程序中关系较为紧密的代码应尽可能相邻。
说明:便于程序阅读和查找。
示例:以下代码布局不太合理。
rect.length = 10;
char_poi = str;
rect.width = 5;
若按如下形式书写,可能更清晰一些。
rect.length = 10;
rect.width = 5; //
矩形的长与宽关系较密切,放在一起。
char_poi = str;
2-9:
数据库设计必须先统一采用数据库建模,然后对建模进行正向工程导出代码,再在此代码上进行修改。
数据库设计完成后,要提交的工件包括建模图,所有代码,包括数据库创建代码,测试数据输入代码和数据库清除代码,
以及相应的说明文档,包括数据库的总体设计,每个表的详细说明,每个存储过程,触发器的说明。
2-10:
在每一个
ASP.NET
页面的
Page_Load
方法中都要是否是响应客户端回发而加载。
例如:
private void Page_Load(object sender, System.EventArgs e)
{
//
在此处放置用户代码以初始化页面
if( !Page.IsPostBack )
}
2-11:
在每一个要求权限控制的页面上都要加上权限审查的的语句,如果没有权限则转到相应的页面。
2-12
:
对于异常,在项目开发初期,能不处理的尽量不处理,让异常充分暴露,在项目后期再对其进行统一规划处理。
3-1:
一般情况下,源程序有效注释量必须在
20
%以上。
3-2:
函数头部应进行注释,列出:函数的目的
/
功能、输入参数、输出参数、返回值、调用关系(函数、表)等。
C#
编程中注释的具体使用请参考
MSDN
中:
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/csref/html/vclrfTagsForDocumentationComments.htm
例子:
/// <summary>
///
在设置了连接字的基础上输入一个
SQL
语句,返回一个表
/// </summary>
/// <param name="SQL">SQL
语句
</param>
/// <returns>
表
</returns>
/// <remarks>
静态方法
</remarks>
public static DataTable GetDataTable(string SQL)
{
//
此方法通过传递
SQL
返回
DataTable
SqlConnection Conn = new SqlConnection( ConnStr );
SqlDataAdapter myCmd = new SqlDataAdapter(SQL,Conn);
DataSet ds = new DataSet();
myCmd.Fill(ds,"dsTable");
DataTable dt = ds.Tables[0];
Conn.Close();
return dt;
}
3-3:
边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
3-4:
注释的内容要清楚、明了,含义准确,防止注释二义性。
3-5:
避免在注释中使用缩写,特别是非常用缩写。
3-6:
注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。
3-7:
对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。变量、常量的注释应放在其上方相邻位置或右方。
3-8:
注释与所描述内容进行同样的缩排。
示例:如下例子,排版不整齐,阅读稍感不方便。
void example_fun( void )
{
/* code one comments */
CodeBlock One
/* code two comments */
CodeBlock Two
}
应改为如下布局。
void example_fun( void )
{
/* code one comments */
CodeBlock One
/* code two comments */
CodeBlock Two
}
3-9:
将注释与其上面的代码用空行隔开。
示例:如下例子,显得代码过于紧凑。
/* code one comments */
program code one
/* code two comments */
program code two
应如下书写
/* code one comments */
program code one
/* code two comments */
program code two
3-10:
对除了很易懂的变量的定义和分支语句(条件分支、循环语句等)必须编写注释。
说明:这些语句往往是程序实现某一特定功能的关键,对于维护人员来说,良好的注释帮助更好的理解程序,有时甚至优于看设计文档。
3-11:
避免在一行代码或表达式的中间插入注释。
3-12:
通过对函数或过程、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为自注释的。
说明:清晰准确的函数、变量等的命名,可增加代码可读性,并减少不必要的注释。
3-13
:在代码的功能、意图层次上进行注释,提供有用、额外的信息。
说明:注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。
示例:如下注释意义不大。
/* if receive_flag is TRUE */
if (receive_flag)
而如下的注释则给出了额外有用的信息。
/* if mtp receive a message from links */
if (receive_flag)
3-14:
在程序块的结束行右方加注释标记,以表明某程序块的结束。
说明:当代码段较长,特别是多重嵌套时,这样做可以使代码更清晰,更便于阅读。
示例:参见如下例子。
if (...)
{
// program code
while (index < MAX_INDEX)
|