技术规范1.2
.NET
强制执行:
1、 方法(特别是公用的方法)、事件加上xml注释(包括参数、返回值和用途)。
2、 方法内涉及到判断的必须加上注释。
3、 条件语句前后与其他语句保持一行间隔。
4、 两个方法及属性之间尽量使用空行分隔,以增加代码的可读性。
5、 避免一个操作多次访问服务端,禁止在循环中调用远程方法(同步、异步都不行),应该合并参数采用一次调用并返回数据。
一次操作多次访问服务端如:
循环中调用远程同步方法:
6、 客户端初始化的时候不要调用同步方法,鼠标移动到某一行时不要调用同步方法。
7、 代码深度最大不能超过9,凡是9+以上的代码必须重构。
8、 所有跟数据库交互的方法,应尽量不在循环中调用。如
建议:
1、 不要嵌套使用3目运算符。如
2、 命名要规范。
3、 同类数据,使用枚举。
4、 控制代码长度,一个方法只干一件事。
5、 拒绝硬编码。
6、 避免长的sql,长sql使用存储过程。
SQL
强制执行:
1、 存储过程名称的定义规则,操作数据的存储过程,用Gp_开头,查询数据的存储过程,用Web_开头.
2、 数据库在游标中如果使用return返回时,必须将当前游标CLOSE,DEALLOCATE
例如:
IF @@ROWCOUNT = 0 OR @@ERROR <> 0
BEGIN
CLOSE Account_CURSOR
DEALLOCATE Account_CURSOR
RETURN 701
END
3、 在所有存储过程结尾处必须加”GO”,以防止在批量执行SQL语句的时候,将其他存储过程中的语句加入
例如 :
if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[Web_ParentToGetPtype]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[Web_ParentToGetPtype]
GO
CREATE PROCEDURE Web_ParentToGetPtype
…………..
GO –-这里不加的话,会有问题,下面是第二个存储过程
if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[Web_ParentToGetPtype]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
4、 不能同时读写同一张表
例如:
INSERT INTO #TotalAll
SELECT A.TypeId,A.UserCode,A.FullName,Sum(B.Total) AS Total,Sum(B.TotalFor) AS TotalFor,Sum(B.Total1) AS Total1,A.SonNum,A.nTypeId,A.nParId,A.Leveal
FROM #AcItemAll A JOIN #TotalAll B ON B.NTypeId LIKE A.NTypeId+'%'
WHERE A.SonNum>0
GROUP
A.TypeId,A.Leveal,A.UserCode,A.FullName,A.nTypeId,A.nParId,A.SonNum
BY
建议:
1、 关键字大写
2、 存储过程之中应该尽量不以抛出错误码的形式返回,
例如:return -1,而应该采用raiserror('选择的商品数最大行数不能超过500!',16,1)
3、 在对字段进行Group by 进行分组合计时,必须只对需要进行分组的列才GROUP BY,然后再关联出其他无须分组的列
4、 杜绝不必要的子查询和连接表,比如查询inoutstocktable中已经有要出的所有字段,就不需要再关联billindex
SVN:
提交svn时必须加注释(在svn服务器上加)。