五、技术规则
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.注解
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 */
|