无废话简单高效C#编码规范2010060621
自己看自己的代码啥问题也没有,但是一个团队、N多个人、N多年的代码,就比较难维护、难阅读了,什么样的不好的习惯、错误漏洞能出来的就全出来了。
第1章 变量命名
※ 错误参考
FDA.OA.Birthdays.WishTemplate wishTemplateBll = new FDA.OA.Birthdays.WishTemplate();
/// <summary>
/// 绑定贺卡祝福模板数据
/// </summary>
<param name="id">用户所属单位id </param>
public void BindWishTemplateById(string id)
{
FDA.OA.Birthdays.WishTemplate wishTemplateBll = new FDA.OA.Birthdays.WishTemplate();
string sqlQuery = string.Format(" AND FDAId={0} ",id);
int totalRecord = 0;
IList<WishTemplateInfo> list = wishTemplateBll.GetWishTemplateList(PageIndex, PageSize,id, sqlQuery, out totalRecord);
base.BindGrid(totalRecord, list);
}
1.1 规范定义
全局变量最好尽量少用,变量或者实例只在方法调用时定义。全局变量和局部变量应该区别开,尽量避免混用。
正确代码参考
/// <summary>
/// 绑定贺卡祝福模板数据
/// </summary>
<param name="id">用户所属单位id </param>
public void BindWishTemplateById (string id)
{
FDA.OA.Birthdays.WishTemplate wishTemplateBll = new FDA.OA.Birthdays.WishTemplate();
string sqlQuery = string.Format(" AND FDAId = {0} ", id);
int totalRecord = 0;
IList<WishTemplateInfo> list = wishTemplateBll.GetWishTemplateList(PageIndex, PageSize,id,sqlQuery,out totalRecord);
base.BindGrid(totalRecord, list);
}
※ 错误参考
txtSubject.Text.ToString();
1.2规范定义
声明或者方法返回的字符串类型,后面不需再添加多余的 ToString()方法。
正确代码参考
txtSubject.Text;
※ 错误参考
DataSet ds_ADC = new DataSet();
DataSet ASD123 = new DataSet();
1.3规范定义
变量命名不能包含下划线,关键字或者字母与数字组合,应简洁明了,通俗易懂。
正确代码参考
DataSet dateSetUserInfo = new DataSet();
※ 错误参考
UserNametxt UserNamelbl Addlbl GVUserInfo Delbtn
1.4规范定义
控件类型简称写在前面,再加后缀。带有命令操作的按钮名应写命令的全称,如:btnDelete。
正确代码参考
TextBox: txtUserName;
Label: lblUserName;
Button: btnAdd btnDelete
GridView: gvUserInfo
※ 错误参考
bool returnValue = sendWishBll.Add(sendWishModel) > 0;
if (returnValue)
{
Framework.Utility.ScriptUtil.AlertAndRedirect("您的贺卡发送成功!", RedirectUrl);
}
1.5规范定义
标点符号不能随便写。比如:感叹号,系统提示的语句使用句号结束,标点符号后面需再空一格。感叹号尽量少使用。
正确代码参考
bool returnValue = sendWishBll.Add(sendWishModel) > 0;
if (returnValue)
{
Framework.Utility.ScriptUtil.AlertAndRedirect("您的贺卡发送成功。", RedirectUrl);
}
※ 错误参考
string sqlQuery = " delete OASendBirthWish where SendWishId = @SendWishId ";
string sqlQuery = string.Format(" and a.FDAId={0} and UserId!={1} ", id, userId);
1.6规范定义
SQL或者Oracle中的关键字,以及Where条件中尽量使用大写形式,避免出错。如果方法中传递的是属性,首字母应大写,方法内的局部变量小写。
正确代码参考
string sqlQuery = " DELETE OASendBirthWish WHERE SendWishId =@SendWishId ";
string sqlQuery = string.Format(" AND a.FDAId={0} AND UserId!={1} ", id, userId);
※ 错误参考
public interface IDbWishTemplate
{
}
public class SqlWishTemplate : IDbWishTemplate
{
}
1.7规范定义
类或者接口名称标头需要添加注释,指明类名或者接口的用途。
正确代码参考
/// <summary>
/// 定义贺卡模板接口
/// </summary>
public interface IDbWishTemplate
{
}
/// <summary>
/// 贺卡模板数据访问层
/// </summary>
public class SqlWishTemplate : IDbWishTemplate
{
}
第2章 方法定义
※ 错误参考
/// <summary>
/// 获取用户信息
/// </summary>
public void GetUser();
{
}
2.1规范定义
方法命名尽量规范,简单明了,通俗易懂 。
正确代码参考
/// <summary>
/// 获取用户信息实体
/// </summary>
public void GetUserModel();
{
}
※ 错误参考
/// <summary>
/// 删除行提示事件
/// </summary>
/// <param name="sender"></param>
protected void gvWishMaterialList_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row != null && e.Row.RowType == DataControlRowType.DataRow)
{
// 添加删除按钮提示操作
LinkButton linkButton = (LinkButton)e.Row.Cells[5].Controls[0];
linkButton.Attributes.Add("onclick", "return confirm('您真的要删除吗? ')");
}
}
2.2规范定义
方法上方生成的注释参数类型以及个数,与参数列表要保持一致。如果是由开发工具自动生成的事件或者方法,可不需要写注释。
正确代码参考
protected void gvWishMaterialList_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row != null && e.Row.RowType == DataControlRowType.DataRow)
{
// 添加删除按钮提示操作
LinkButton linkButton = (LinkButton)e.Row.Cells[5].Controls[0];
linkButton.Attributes.Add("onclick", "return confirm('您真的要删除吗? ')");
}
}
※ 错误参考
public void BindWishMaterialById() // 绑定贺卡素材数据
{
string sqlQuery = string.Format(" AND FDAId={0} ", FDAID);
int totalRecord = 0;
IList<WishMaterialInfo> list = wishMaterialBll.GetWishMaterialList(PageIndex, PageSize, FDAID, sqlQuery, out totalRecord);
base.BindGrid(totalRecord, list);
}
2.3规范定义
方法名中指明需要传递的参数,参数列表中一定要传递参数,如ById。注释要写在方法上面。
正确代码参考
/// <summary>
/// 绑定贺卡素材数据
/// </summary>
public void BindWishMaterialById(string id)
{
string sqlQuery = string.Format(" AND FDAId={0} ",id);
int totalRecord = 0;
IList<WishMaterialInfo> list = wishMaterialBll.GetWishMaterialList(PageIndex, PageSize,id, sqlQuery, out totalRecord);
base.BindGrid(totalRecord, list);
}
※ 错误参考
/// <summary>
/// 定义贺卡模板接口
/// </summary>
public interface IDbWishTemplate
{
///<summary>
/// 获取所有的生日祝福模板信息
/// </summary>
/// <param name="id">所属单位主键</param>
/// <returns>DataReader</returns>
SqlDataReader GetAllWishTemplateInfo(int id);
}
2.4规范定义
数据库底层接口中,方法返回的数据类型,要考虑不同数据库的兼容性,必须支持多种数据库,返回接口类型。接口中方法添加了注释,在逻辑层等其它地方调用时,可不再另外写注释。
正确代码参考
/// <summary>
/// 定义贺卡模板接口
/// </summary>
public interface IDbWishTemplate
{
///<summary>
/// 获取所有的生日祝福模板信息
/// </summary>
/// <param name="id">所属单位主键</param>
/// <returns></returns>
IDataReader GetAllWishTemplateInfo(int id);
}
※ 错误参考
FDA.OA.Birthdays.WishTemplate wishTemplateBll = new FDA.OA.Birthdays.WishTemplate();
SqlDataReader sqlDataReader= wishTemplateBll.GetAllWishTemplateInfo(id);
2.5规范定义
界面层不能直接调用SQL或者Oracle数据库标识特征的方法,要考虑返回值在不同数据库的兼容性。
正确代码参考
FDA.OA.Birthdays.WishTemplate wishTemplateBll = new FDA.OA.Birthdays.WishTemplate();
IDataReader iDataReader = wishTemplateBll.GetAllWishTemplateInfo(id);
About
吉日嘎拉(蒙古语为吉祥如意),2000年毕业于黑龙江大学计算机系软件专业,目前定居杭州,典型的IT软件土鳖一个,外号“软件包工头”。
通用权限管理系统组件(GPM - General Permissions Manager)自2003年开始发布,目前是国内注册用户和免费盗版用户最多的权限管理系统,是各种信息管理系统开发中彻底的权限解决方案。本组件支持多种主流数据库(Oracle、sqlsever、db2、mysql),功能强大,使用方便,代码简洁,思路严谨,被广大支持者称为权限管理系统中的“走火入魔级权限管理系统”。
精心维护通用权限管理系统组件(GPM - General Permissions Manager)有8年多,3年的不断推广,20万行经典的业务逻辑积累,经过上万次的调试修正,经历了四百个付费客户,上百软件公司的实战开发。
11年以上开发经验,外企工作5年,上市公司3年,独立经营软件公司2年,主持研发部门管理工作4年以上。
将权限管理、工作流做到我能力的极致,一个人只能做好那么很少的几件事情。
QQ:252056973,Mail:jirigala_bao@hotmail.com访问者分布通用权限管理模块的严谨设计定位、精心编码实现、不断维护推广、持续优化改进,主要是为了实现一个可以高度重复利用劳动成果的工具软件并×××给所需的人们,另想成为国人值得骄傲的知名软件功能模块。
可供国内管理类开发人员在日常工作中进行灵活二次开发利用的模块,开发管理类软件的必备工具之一,我们的目标就是让程序员早点儿回家休息。
淘宝店地址: