您的位置:首页 > 编程语言 > C#

C#编码规范

2015-10-09 14:34 525 查看





第1章 程序细节参考

[b]※ 错误参考

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

[/b]


第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章 变量命名

※ 错误参考

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>

SqlDataReaderGetAllWishTemplateInfo(int id);

}


2.4规范定义

数据库底层接口中,方法返回的数据类型,要考虑不同数据库的兼容性,必须支持多种数据库,返回接口类型。接口中方法添加了注释,在逻辑层等其它地方调用时,可不再另外写注释。

正确代码参考

/// <summary>

/// 定义贺卡模板接口

/// </summary>

public interface IDbWishTemplate

{

///<summary>

/// 获取所有的生日祝福模板信息

/// </summary>

/// <param name="id">所属单位主键</param>

/// <returns></returns>

IDataReaderGetAllWishTemplateInfo(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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: