【浙大网新图灵通讯】无废话简单高效C#编码规范20100621

无废话简单高效C#编码规范2010060621 自己看自己的代码啥问题也没有,但是一个团队、N多个人、N多年的代码,就比较难维护、难阅读了,什么样的不好的习惯、错误漏洞能出来的就全出来了。 第1章 变量命名 ※ 错误参考 FDA.OA.Birthdays.WishTemplate wishTemplateBll = new FDA.OA.Birthdays.WishTemplate(); /// /// 绑定贺卡祝福模板数据 /// 用户所属单位id 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 list = wishTemplateBll.GetWishTemplateList(PageIndex, PageSize,id, sqlQuery, out totalRecord); base.BindGrid(totalRecord, list); } 1.1 规范定义 全局变量最好尽量少用,变量或者实例只在方法调用时定义。全局变量和局部变量应该区别开,尽量避免混用。 正确代码参考 /// /// 绑定贺卡祝福模板数据 /// 用户所属单位id 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 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规范定义 类或者接口名称标头需要添加注释,指明类名或者接口的用途。 正确代码参考 /// /// 定义贺卡模板接口 /// public interface IDbWishTemplate { } /// /// 贺卡模板数据访问层 /// public class SqlWishTemplate : IDbWishTemplate { } 第2章 方法定义 ※ 错误参考 /// /// 获取用户信息 /// public void GetUser(); { } 2.1规范定义 方法命名尽量规范,简单明了,通俗易懂 。 正确代码参考 /// /// 获取用户信息实体 /// public void GetUserModel(); { } ※ 错误参考 /// /// 删除行提示事件 /// /// 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 list = wishMaterialBll.GetWishMaterialList(PageIndex, PageSize, FDAID, sqlQuery, out totalRecord); base.BindGrid(totalRecord, list); } 2.3规范定义 方法名中指明需要传递的参数,参数列表中一定要传递参数,如ById。注释要写在方法上面。 正确代码参考 /// /// 绑定贺卡素材数据 /// public void BindWishMaterialById(string id) { string sqlQuery = string.Format(" AND FDAId={0} ",id); int totalRecord = 0; IList list = wishMaterialBll.GetWishMaterialList(PageIndex, PageSize,id, sqlQuery, out totalRecord); base.BindGrid(totalRecord, list); } ※ 错误参考 /// /// 定义贺卡模板接口 /// public interface IDbWishTemplate { /// /// 获取所有的生日祝福模板信息 /// /// 所属单位主键 /// DataReader SqlDataReader GetAllWishTemplateInfo(int id); } 2.4规范定义 数据库底层接口中,方法返回的数据类型,要考虑不同数据库的兼容性,必须支持多种数据库,返回接口类型。接口中方法添加了注释,在逻辑层等其它地方调用时,可不再另外写注释。 正确代码参考 /// /// 定义贺卡模板接口 /// public interface IDbWishTemplate { /// /// 获取所有的生日祝福模板信息 /// /// 所属单位主键 /// 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); 将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。 吉日嘎拉 不仅权通用权限 关注 - 128 粉丝 - 332 关注博主5 5 0 (请您对文章做出评价)« 上一篇:按Sybase的PowerDesigner工具设计的数据库模型 ---> 解析生成能兼容多种数据库的相应的C#底层代码 » 下一篇:C#、ASP.NET主键到底怎么写比较好?ID?Id?id?IDs?Ids?ids?欢迎大家指点 posted on 2010-06-22 14:03 吉日嘎拉 不仅权通用权限 阅读(646) 评论(6) 编辑 收藏 评论 1854142 #1楼  回复 引用 查看  UserId ? Id 是什么 2010-06-22 14:24 | 阿龍 #2楼  回复 引用 查看  其实我和吉日哥学习了很多,虽然人气不如以前了。 2010-06-22 18:29 | 王一一 #3楼[楼主]  回复 引用 查看  @王一一 主要是不让我发首页了,太有人气了。 2010-06-22 20:41 | 吉日嘎拉 不仅权限管理 #4楼  回复 引用 查看  这篇可以考虑放首页啊,这个对初学者很有用的 2010-06-22 20:45 | joylee #5楼[楼主]  回复 引用 查看  @joylee 被剥夺了发首页的权限了,哈哈,没办法了,被剥夺了。 2010-06-22 20:47 | 吉日嘎拉 不仅权限管理 #6楼  回复 引用 查看  @吉日嘎拉 不仅权限管理 蛋定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值