权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

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

2010-06-22 14:03  通用C#系统架构  阅读(1383)  评论(7编辑  收藏  举报

无废话简单高效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);

 

 

 



C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友