一、 环境设置

首先去除开发环境中的一些选项如下:

图一

图二

二、 命名规范

1) 通用性

l 标识的总长度不要超过32个字符。

l  标识符的基本语法是以字母和_开始,由字母数字及下划线组成的单词,第一个字符不能是数字。

l  只要合适,在变量名的末尾追加计算限定符(Avg、Sum、Min、Max、Index)。

l  在变量名中使用互补对,如 min/max、begin/end 和 open/close。

l  布尔变量名应该前加或包含 Is(is)。

l 尽量减少使用缩写,而是使用以一致方式创建的缩写。缩写应该只有一个意思;同样,每个缩写词也应该只有一个缩写。例如,如果用 min 作为 minimum 的缩写,那么在所有地方都应这样做;不要将 min 又用作 minute 的缩写。

l 在命名函数时包括返回值的说明,如 GetCurrentWindowName()。

l 避免对不同的元素重用名称,如名为 ProcessSales() 的例程和名为 iProcessSales 的变量。

l 在命名元素时避免同音异义词(如 write 和 right),以防在检查代码时发生混淆。

l 在命名元素时,避免使用普遍拼错的词。另外,应清楚区域拼写之间存在的差异,如 color/colour 和 check/cheque。

l 在内部范围中避免使用与外部范围中的名称相同的名称。若访问错误变量,则会产生错误结果。若变量与同一名称的关键字冲突,则必须在关键字前加适当的类型库以作标识。例如,若有一个名为 date 的变量,只能通过调用 System.Date 来使用内部 Date 函数。

l 接口名称以前缀“I”开始,后面接一个名词或名词词组(如 IComponent),或者接一个描述接口行为的形容词(如 IPersistable)。不要使用下划线,不要过多使用缩写,因为缩写会引起混淆。

l 事件处理程序的名称以一个描述事件类型的名词开始,后面接后缀“EventHandler”,如“MouseEventHandler”。 事件参数类的名称里要加“EventArgs”后缀。

l 如果某事件含有“之前”或“之后”的概念,请以现在时或过去时形式使用前缀,如“ControlAdd”或“ControlAdded”。

l 单个长字符串拆分成多行写。当一行被分为几行时,需要将串联运算符放在每一行的末尾。

l SQL Server中不要给存储过程加sp 前缀/不要给用户定义的函数加 fn_ 前缀/不要给扩展存储过程加 xp_ 前缀。这些前缀是为标识系统保留的。将每个主要的SQL子句放在不同的行上,这样更容易阅读和编辑语句。

l 不要使用原义数字或原义字符串,如 For i = 1 To 7。而是使用命名常数,如 For i = 1 To NUM_DAYS_IN_WEEK 以便于维护和理解。

2) 变量命名

变量名称命名规则:形容词+名词(或名词)

  1. 属性(类属性/类属性对应的私有变量)

l 类属性与类属性对应的私有变量基本一样。

类属性对应的私有变量是在类属性名的前面加“_”

如:private int _PageSize;// 类属性对应的私有变量

public int PageSize { set { _PageSize = value; } }//类属性

l 注意大小写要保持一致。每个单词的第一个字母必须大写。其它单词的第一个字母也大写。单词之间不加“_”。

l 不要使用public来定义一个属性。

l 属性名和类名以名词开始,如 EmployeeName 和 CarAccessory。

  1. 私有变量(短期性/长期性)

l 短期性(方法内私有变量/不是经常用的变量)

u 定义前加“_”

u 如:string _strSQL = null;

u 第一个单词的第一个字母必须小写,其它单词第一个字母大写。单词之间不加“_”。

l 长期性(类私有变量/方法入口参数)

u 类私有变量:前加“_”,和类属性对应的私有变量一样。每个单词的第一个字母必须大写。其它单词的第一个字母也大写。单词之间不加“_”。

如:private int _PageSizeTmp;

u 方法入口参数:第一个单词的第一个字母必须小写,其它单词的第一个字母必须大写。如果只有一个单词组成全小写。单词之间不加“_”。

如:public static int SendCTTVOSMS(string mobile,string content)

public static string CallAccountHiVA(string restPhone,string userPhone)

  1. 全局变量/静态变量/常量

l 定义要全部大写。如:public static int SMS_TYPE = 2;

l 定义部分也可小写。

如:public static string VOSMS_UserName = "88000002";

l 单词与单词之间加“_”分隔。

3) 函数命名

函数命名规则:动词+名词(或动词),每个单词第一个字母必须大写。单词之间不加“_”。

如:public static string GetOrderStatus(int sendMode,int statueID)

函数名和方法名以动词开始,如 InitNameArray() 和 CloseDialog()。

4) 控件命名

控件命名规则:类别+名称

类别对照表:

前缀

表示类型

frm

窗口

btn

按钮

cbo

下拉式列表框

txt

文本输入框

lbl

标签

img

图像

pic

图片

div

DIV

grd

网格

scr

滚动条

lst

列表框

sds

SqlDataSource

ods

OleDbDataSource

如按钮:btnSave

前缀

表示类型

b/is

Bool

c

Char

sb

Sbyte

b

Byte

n/i

Int

ui

Uint

l

Long

ul

Ulong

f

Float

d

Double

s/str

String

5) 表字段命名

l 在命名表时,用单数形式表示名称。例如,使用 Employee,而不是 Employees。

l 在命名表的列时,不要重复表的名称;例如,在名为 Employee 的表中避免使用名为 EmployeeLastName 的字段。

l 不要在列的名称中包含数据类型。如果后来有必要更改数据类型,这将减少工作量。

6) Web文件目录结构命名

l 与过程名一样,文件和文件夹的名称也应该精确地说明它们的用途。

l Web文件第一个单词的首字符要小写其它单词的首字符要大写。或全小写。文件存在后,在程序中要严格按照文件的大小写引入文件。目录名称必须全小写。

l Web目录结构:

根---类库1

类库…N

解决方案启动文件

项目发布目录

Web源代码--- inc( JS目录)

css(CSS目录)

后台目录

bin目录

app_data数据库目录

master目录

其它子功能目录

app_code类文件

images图片目录

三、 注释规范

1) 在文件的头部标明文件的作者,完成时间,它所完成的主要功能。

2) 程序有过改动后,要写上修改人、时间、简单原因说明列表。

如:

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

* 谁创建的 日期 什么功能描述

* 谁修改的 日期 什么功能描述

* 谁修添加 日期 什么功能描述

* 谁修删除 日期 什么功能描述

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

3) 函数等代码中的注释规范都按系统自动的注释格式

如:

4) 修改代码时,总是使代码周围的注释保持最新。

5) 在每个例程的开始,提供标准的注释样本以指示例程的用途、假设和限制很有帮助。注释样本应该是解释它为什么存在和可以做什么的简短介绍。

6) 避免在代码行的末尾添加注释;行尾注释使代码更难阅读。不过在批注变量声明时,行尾注释是合适的;在这种情况下,将所有行尾注释在公共制表位处对齐。

7) 避免杂乱的注释,如一整行星号。

8) 在部署之前,移除所有临时或无关的注释,以避免在日后的维护工作中产生混乱。

9) 如果需要用注释来解释复杂的代码节,请检查此代码以确定是否应该重写它。尽一切可能不注释难以理解的代码,而应该重写它。尽管一般不应该为了使代码更简单以便于人们使用而牺牲性能,但必须保持性能和可维护性之间的平衡。

10) 在编写注释时使用完整的句子。注释应该阐明代码,而不应该增加多义性。

11) 在编写代码时就注释,因为以后很可能没有时间这样做。另外,如果有机会复查已编写的代码,在今天看来很明显的东西六周以后或许就不明显了。

12) 避免多余的或不适当的注释,如幽默的不主要的备注。

13) 使用注释来解释代码的意图。它们不应作为代码的联机翻译。

14) 注释代码中不十分明显的任何内容。

15) 为了防止问题反复出现,对错误修复和解决方法代码总是使用注释,尤其是在团队环境中。

16) 对由循环和逻辑分支组成的代码使用注释。这些是帮助源代码读者的主要方面。

17) 在整个应用程序中,使用具有一致的标点和结构的统一样式来构造注释。

18) 用空白将注释同注释分隔符分开。在没有颜色提示的情况下查看注释时,这样做会使注释很明显且容易被找到。

19) 为了防止在阅读代码时左右滚动源代码编辑器,每行代码或注释不得超过一个显示屏。

20) 可能多的注释变量表示的意思。

四、 其它代码风格/习惯

1) JS和CSS文件必需是UTF-8编码的文件。

2) 单行的判断代码不需要加“{}”。

如:if (_url.Trim().Equals(String.Empty)) return -2;

能简写的代码要简写。保证自己写出来的代码每一句都是有效代码。

3) 不要使用VS的自动排版代码功能。

4) 少用“==”运算。应该使用“.Equals”进行比较。

5) 运算符前后要空一格。如:_TotalPage = _TotalRecord / _PageSize; 这样做是不会改变代码意图的,却可以使代码更加容易阅读。

6) 每一个操作结束后加一个空行。所有代码里不能有连续的二个或二个以上的空行。

7) 将大的复杂代码节分为较小的、易于理解的模块。

8) 近可能的使用TAB键来空位。不要使用4个空格来代替TAB键。

9) 在页面文件中不能定义static类型的来传递数据。

10)

C#.NET编码规范的更多相关文章

  1. Android的编码规范

    一.Android编码规范 1.学会使用string.xml文件 在我看来,当一个文本信息出现的次数大于一次的时候就必须要使用string.xml 比如一个保存按钮 , 不规范写法: <Butt ...

  2. PHP 高级编程(1/5) - 编码规范及文档编写

    PHP 高级程序设计学习笔记20140612 软件开发中的一个重要环节就是文档编写.他可以帮助未来的程序维护人员和使用者理解你在开发时的思路.也便于日后重新查看代码时不至于无从下手.文档还有一个重要的 ...

  3. 【原】JAVA SE编码规范

    /* * 编码规范: * 1.所有的命名遵循"见名知意"的原则 * 2.所有的命名不允许使用汉字或拼音 * 3.Java的工程命名建议使用小写,比如:oa.crm.cms... * ...

  4. 浅谈Android编码规范及命名规范

    前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...

  5. PHP编码规范PSR-2

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  6. Objective-C开发编码规范【转载】

    概要 Objective-C是一门面向对象的动态编程语言,主要用于编写iOS和Mac应用程序.关于Objective-C的编码规范,苹果和谷歌都已经有很好的总结: Apple Coding Guide ...

  7. 前端编码规范之CSS

    "字是门面书是屋",我们不会去手写代码,但是敲出来的代码要好看.有条理,这还必须得有一点约束~ 团队开发中,每个人的编码风格都不尽相同,有时候可能存在很大的差异,为了便于压缩组件对 ...

  8. 前端编码规范之JavaScript

    上次浅谈了下关于CSS的编码规范,大部分童鞋持赞同意见,仍存在一些童鞋不太理解这些规范的意义. 如果是个人或者小作坊开发,其实这些所谓的编码规范也没啥意思,因为大家写好的代码直接就给扔到网上去了,很少 ...

  9. Java Script 编码规范【转】

    Java Script 编码规范 以下文档大多来自: Google JavaScript 编码规范指南 Idiomatic 风格 参考规范 ECMAScript 5.1 注解版 EcmaScript ...

  10. python编码规范

    python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...

随机推荐

  1. java加密解密算法位运算

    一.实例说明 本实例通过位运算的异或运算符 “ ^ ” 把字符串与一个指定的值进行异或运算,从而改变每个字符串中字符的值,这样就可以得到一个加密后的字符串.当把加密后的字符串作为程序输入内容,异或运算 ...

  2. dll文件:关于MFC程序不能定位输入点

    问题:无法定位程序输入点到动态链接库上...... 过程:找完整个工程文件夹: APS为资源文件: resource.h为定义文件: 完全复制 除主文件以外的所有文件,程序可用: 在主程序框Cpp文件 ...

  3. 创建一个dynamics CRM workflow (五) - Deploy Custom Workflows

    我们打开plugin registeration tool. 注册一个新的assembly. custom workflow 和 plugin注册的方法还有些不同. 这一步custom workflo ...

  4. Python基础:使用list & tuple

    list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. tuple 小结 list和tuple是Python内置的有序集合,一个可变,一个不 ...

  5. MongoDB 学习笔记(一):安装及简单shell操作

    一.说明 1.该系列MongoDB学习笔记的学习环境采用的MongoDB版本为mongodb-win32-i386-2.4.6,操作系统为win7. 二.安装 1.新建两个目录,分别是D:\Insta ...

  6. jmeter搭建

    jdk 1.8的地址  链接:https://pan.baidu.com/s/1eEyYbzo1Tfbvbmf_vN2yUA 密码:6dxi 1.安装JDK 选择安装目录 安装过程中会出现两次 安装提 ...

  7. navicat Premium远程链接mysql报错

    1,报错1057,原来是没有远程权限连接mysql 2.打开my.ini文件,添加skip-grant-tables跳过验证 3.添加到path环境变量,前面是英文下的分号 4.切换到cmd,输入my ...

  8. 4.2、Ansible常用模块

    1.command:命令模块,默认模块,用于在远程执行命令,不支持变量.ansible 192.168.139.128 -a 'date' 2.cron:计划任务模块:ansible 192.168. ...

  9. Django模型Model的定义

    概述 Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API,可以根据不同的业务需求选择不同的数据库. 模型.属性.表.字段间的关系 一个模型类在数据库中对应一张表, ...

  10. rtsp://192.168.1.198:554/PSIA/streaming/channels/101

    rtsp://192.168.1.198:554/PSIA/streaming/channels/101 Playing rtsp://192.168.1.198:554/PSIA/streaming ...