zoukankan      html  css  js  c++  java
  • 吉瑞代码写法

    自己看自己的代码啥问题也没有,但是一个团队、N多个人、N多年的代码,就比较难维护、难阅读了,什么样的不好的习惯、错误漏洞能出来的就全出来了。

    第1章     头部文件源码参考

    错误参考

     

    using System;

    using System.Collections.Generic;

     

    using System.Text;

    using System.Data;

    using FDA.Model;

    using FDA.IDAL;

    namespace FDA.BLL

    {

     

    1.1   规范定义

    缺少公司的版权信息定义。

    1.2规范定义

    using 没有用开发环境里中提供的工具进行整理、排序,引用了多余的 System.Text命名空间。

    1.3规范定义

    该有的空行没空起来,using 与 namespace 之间需要有空行。

     

     

    正确代码参考

     

    /**************************************************************

    * Copyright (C) 2010 iTouch, Inc (http://www.itouch.com.cn)

    * All Rights Reserved

    * Created by JiRiGaLa <QQ:252056973>

     

    * 版权所有:浙大网新易盛网络通讯有限公司

    *     者:吉日嘎拉(JiRiGaLa_Bao@hotmail.com)

    * 创建时间:2010-06-11

     

    * 修 改 人:

    * 修改内容:

    * 修改时间:

    **************************************************************/

     

    using System.Collections.Generic;

    using System.Data;

    using FDA.IDAL;

    using FDA.Model;

     

    namespace FDA.BLL

    {

         

     

    第2章     函数参数定义部分

    错误参考

     

            private static readonly IAlarmQuery dal = FDA.DALFactory.DataAccess.CreateAlarmQuery ();

            public DataTable GetAlarmHandtailorList(ref AlarmInfo info)

            {

                return dal.GetAlarmHandtailorList(ref info);

            }

            public DataTable GetAlarmHndtailorListNames(string creater)

            {

                return dal.GetAlarmHndtailorListNames(creater);

            }

    2.1规范定义

    变量与函数之间需要有空行,该有的空行需要有。

    2.2规范定义

    函数中的参数名不规范,建议 ref AlarmInfo info 修改为 ref AlarmInfo alarmInfo,首字母小写。

    2.3规范定义

    函数与函数之间,应该有空格隔开,不要都拥挤在一起。

    2.4规范定义

    由于此函数部分都是为了实现接口写的,函数的具体功能、参数说明等应该在接口里写就可以了,此处可以不写函数说明、参数说明。

     

     

    正确代码参考

     

     

            private static readonly IAlarmQuery  dal = FDA.DALFactory.DataAccess.CreateAlarmQuery ();

     

            public DataTable GetAlarmHandtailorList(ref AlarmInfo alarmInfo)

            {

                return dal.GetAlarmHandtailorList(ref alarmInfo);

            }

     

            public DataTable GetAlarmHndtailorListNames(string creater)

            {

                return dal.GetAlarmHndtailorListNames(creater);

            }

     

    错误参考

     

           protected static readonly IApplianceQuery aq = DALFactory.DataAccess.CreateApplianceQuery();       

           

    /// <summary>

            /// 获取器械实时库存信息(Search),按器械信息分类。

            /// </summary>

            /// <param name="asp">分页实体</param>

            /// <param name="RecordCount">总记录数</param>

            /// <returns></returns>

            public DataSet GetAppPeriodStockSearch(ApplianceStockPager asp, ref int RecordCount)

            {

                return aq.GetAppPeriodStockSearch(asp, ref RecordCount);

            }

     

            /// <summary>

            /// 获取器械实时库存明细信息的SQL语句

            /// </summary>

            /// <param name="Qx_id">数据编号</param>

            /// <returns></returns>

            public ApplianceStockInfo GetAppPeriodStockDetail(string Qx_id)

            {

                return aq.GetAppPeriodStockDetail(Qx_id);

            }

    2.5规范定义

    代码中的 aq,与上面代码中的 dal 习惯冲突,建议统一用 dal或者小写字母原则 aq 写为 ApplianceQuery。

    2.6规范定义

    RecordCount 局部变量不能大写开头,建议用 recordCount。

    2.7规范定义

    Qx_id不建议这么写,局部变量不能大写开头,建议写为qxId,也不建议用_ , ID建议写为Id。  

    2.8规范定义

    由于此函数部分都是为了实现接口写的,函数的具体功能、参数说明等应该在接口里写就可以了,此处可以不写函数说明、参数说明。

     

      

    正确代码参考

     

     

            protected static readonly IApplianceQuery dal = DALFactory.DataAccess.CreateApplianceQuery();

     

            /// <summary>

            /// 获取器械历史库存信息(Search),按器械信息分类。

            /// </summary>

            /// <param name="applianceStockPager">分页实体</param>

            /// <param name="recordCount">总记录数</param>

            /// <returns>数据集</returns>

            public DataSet GetApplianceStockSearch(ApplianceStockPager applianceStockPager, ref int recordCount)

            {

                return dal.GetApplianceStockSearch(applianceStockPager, ref recordCount);

            }

     

            /// <summary>

            /// 获取器械历史库存明细信息的SQL语句

            /// </summary>

            /// <param name="qxId">数据编号</param>

            /// <returns>分页实体</returns>

            public ApplianceStockInfo GetApplianceStockDetail(string qxId)

            {

                return dal.GetApplianceStockDetail(qxId);

            }

    错误参考

     

            /// <summary>

            /// 获得数据列表,如根据仓库获取探头列表

            /// </summary>

            public DataSet GetDllList(string strColum, string strWhere)

            {

                return dal.GetDllList(strColum, strWhere);

            }

    2.9规范定义

    在函数参数中变量中不要加str等前缀 strColum、strWhere应该写为colum、sqlWhere

     

     

     

    正确代码参考

     

     

            public DataSet GetDllList(string colum, string where)

            {

                return dal.GetDllList(colum, where);

            }

     

    错误参考

     

            SystemManage.cs 文件,代码 1206 行

     

    2.10规范定义

    光功能定义就这么多,那实现部分更不是海一样的代码了?需要分割、职责分明、把一个大的功能模块划分为多个功能部分。

     

     

    错误参考

     

    namespace FDA.BLL

    {

        public class Remoting

        {

    2.11规范定义

    Remoting 是关键字,不建议用关键字做类名、函数名、参数名等。

     

    第1章     程序细节参考

    错误参考

     

    messageReceiver.IsShow = Convert.ToInt32(dataRow["Is_Show"]) == 1 ? true : false;

    1.1   规范定义

    建议不要写多余的没多大必要的 true : false

     

     

    正确代码参考 

    messageReceiver.IsShow = Convert.ToInt32(dataRow["Is_Show"]) == 1;

     

     

     

    错误参考 

         MessageAttachment result = null;  

    result = PackAttachment(table.Rows[0]);

         return result;

    1.2规范定义

    没必要的中间过度变量建议尽量就避免了。

     

    正确代码参考 

         return PackAttachment(table.Rows[0]);

     

     

    错误参考 

         DataSet GetApothecaryUnOnDateList( string code,string begin,string end);

     

    1.3规范定义

    变量与变量之间要有空格隔开,该有空格时有空格,不该有的空格删除掉,不要紧紧挨在一起。

    1.4规范定义

    尽量从变量的名字、变量的类型中可以知道变量的详细限制,例如 begin 写为 beginDate。 

     

    正确代码参考

         DataSet GetApothecaryUnOnDateList(string code, string beginDate, string endDate);

      

      

    错误参考 

            /// <summary>

            /// packE

            /// </summary>

            public string packE

            {

                get { return _packE; }

                set { _packE = value; }

            }

     

     1.5规范定义

    属性要写注释,否则谁知道这个是什么呀?。

    1.6规范定义

    属性要大写字母开头,很少见微软的程序,属性小写开头,该大写的不大写,改小写的不小写。

    1.7规范定义

    若没必要,尽量不要用_。

     

     

    正确代码参考

     

            /// <summary>

            /// 包装名(英文名)

            /// </summary>

            public string PackE

            {

                get { return packE; }

                set { packE = value; }

            }

     

     

    错误参考

     

        /// <summary>

        /// 国家库进口药品信息实体

        /// </summary>

        [Serializable]

        public class MediImportInfo

    1.8规范定义

    实体类,尽量用*Entity 这个类名,这样大家很容易知道,这个是实体类?控制类?。

     

     

    正确代码参考

     

        /// <summary>

        /// 国家库进口药品信息实体

        /// </summary>

        [Serializable]

        public class MediImportInfoEntity

    第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);

     

  • 相关阅读:
    Swift try try! try?使用和区别
    Sitemesh 3 配置和使用(最新)
    idea + mybatis generator + maven 插件使用
    (五)Hololens Unity 开发之 手势识别
    (四)Hololens Unity 开发之 凝视系统
    (二)Hololens Unity 开发入门 之 Hello HoloLens~
    (三)Hololens Unity 开发之 语音识别
    (一)Hololens Unity 开发环境搭建(Mac BOOTCAMP WIN10)
    iOS多线程技术方案
    基于OpenSSL的RSA加密应用(非算法)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1824299.html
Copyright © 2011-2022 走看看