代码设计规范

代 码 设 计 规 范

一、注释规范

1、自建代码文件注释          

对于自己创建的代码文件(如函数、脚本),在文件开头,一般编写如下注释:

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

作者:

说明:

创建日期:

版本号:

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

2、标准注释 

在模块、类、属性、方法前一行添加注释,以便调用的时候提示用户,下以方法声明做例子:

       ///<summary>

      ///<对该方法的说明>

      ///</summary>

      ///<paramname="<参数名称>"><参数说明></param>

   ///<returns>

     ///<对方法返回值的说明,该说明必须明确说明返回的值代表什么含义>

     ///</returns>

3、代码中的注释

  代码间注释分为单行注释和多行注释:

  单行注释:

      //<单行注释>

            

多行注释:

             /*多行注释1

            多行注释2

            多行注释3*/

         

代码中遇到语句块时必须添加注释(if,for,foreach,……),添加的注释必须能够说明此语句块的作用和实现手段(所用算法、循环条件、不同分支的意义等等)。

           

         

二、异常处理

1、数据层服务层异常必须要记录到服务日志中

try

{ }

catch (DbEntityValidationException ex)

{ throw new SerivceException ("");}

catch (SerivceException ex)

{throw ex; }

catch (Exception ex)

{throw new SerivceException (""); }

2、业务层客户端异常要记录在文件中

原则异常msg描述清楚所发生错误原因、关键必要的参数,已便于客户端使用者、测试人员及相关研发人员明白错误原由。

三、Web页面

1、出现超出半屏幕的html标签时需要加注释 例:<!-- BEGIN 描述 --> <body></body> <!-- End 描述 -->

         

2Js命名规则

函数: fn 例: fnMethod

事件: on例: eventBeforeSave

3、单行的 IF - ELSE,WHILE 或者 FOR 语句也 必须 加入括号,不过他们可以这样写:

if (condition){ statement; }

while (condition){ statement; }

for (intialization; condition; update){ statement; }

4、

foreach(var item in list){

foreach(var item1 in list){

foreach(var item2 in list){

            }

    }

}

         

三、命名规范

 1、程序集命名、命名空间、类(全部为中文名)

1)程序集:项目域名+项目名称+模块名 例:六月版.供应商.业务层

2)命名空间:六月版.供应商.业务层.单据管理 (业务逻辑后缀'管理')

3)类名:订单

2、方法命名

1)业务层、服务方法命名

以混合命名法为主,常用动词单词+中文词描述+'_'+精确描述

        Get***        //'获取***'

        Create***    //'创建***'

        Update***   //'更新***'

        Del***        //'删除***'

        Save***      //'创建或修改***'

        Fill***         //'填充***'  多用于业务逻辑处理

            Add***         //'添加***' 多用于业务逻辑处理

            Remove***   //'移除***' 多用于业务逻辑处理 

        例:public VM.订单 Get订单信息(string 订单编号)

            public void Update订单状态_已出库(string 订单编号, string 操作人)

             对于获取多条记录的方法名要加以 '集'结尾

            例:public List<VM.订单> Get订单信息(string 关键字)

  1. Mvc Controllers 方法命名(全英文) 开头大写,文件名开头大写

    3)     方法参数全部为中文名,Mvc Controllers方法参数(全英文)//开头字母小写

4)        MVC 分布视图 _开头加开头大写单词

3、变量命名

命名空间引用缩写

业务层: 例:using BS供应商=六月版.供应商.业务层 ;

数据层: 例:using DAO供应商=六月版.供应商.数据层 ;

服务层: 例:using Server供应商=六月版.供应商.服务 ;

视图模型: 例:using VM供应商=六月版.供应商. 视图模型

公共类库: 例:using Comm=DotNet.Common;

变量命名以混合命名法为主

Sbyte: sbte

Char: chr

Short: sht

Object: obj

Int: int

String: str

Long: lng

DateTime: dte

Byte: bte

IntPtr: intptr

Ushot: usht

临时变量: tmp

Uint: uint

Guid: g

Ulong: ulng

(s、dao)实体模型: model    

Float: flt

类的私有变量: m

Double: dbl

静态变量: st

Decimal: dcl

常量: const

Bool: is

全局: p

StringBulider: sb

List:lst

Array: arr

枚举: e

数组: a

对象来自视图:vm

 DbContext:db

     

总体原则以中文表示所要表示的内容,以变量类型做为前缀。变量类型做为前缀是为了索引方便,使用中文名是为了意义容易理解。

注:方法的参数变量命名不使用以上规则,返回值变量使用以上规则

Html命名规则

命名

说明

标准命名举例

doc

Document

      

wnd

Window

      

frm

Form

      

btn

input type=button

      

ckb

input type=checkbox

      

file

input type=file

      

hid

input type=hidden

      

img

input type=image|img

      

pwd

input type=password

      

rdb

input type=radio

      

rst

input type=rest

      

smt

input type=submit

      

txt

input type=text

      

sel

select

      

tar

textarea

     

Table

tbl

      

         

         

常用命名规则

登录条:loginBar

加入:joinus

主导航:mainNav

标志:logo

指南:guild

顶导航:topnav

侧栏:sidebar

服务:service

边导航:sidebar

广告:banner

热点:hot

左导航:leftsideBar

导航:nav

新闻:news

右导航:rightsideBar

子导航:subNav

下载:download

标语:banner

菜单:menu

注册:register

菜单内容1:menu1Content

子菜单:subMenu

状态:status

菜单容量:menuContainer

搜索:search

按钮:btn

子菜单:submenu

滚动:scroll

投票:vote

边导航图标:sidebarIcon

页面主体:main

合作伙伴:partner

注释:note

内容:content

版权:copyright

容器:container

标签页:tab

外套:wrap

登陆:login

文章列表:list

主导航:mainNav

购物车:shop

提示信息:msg

子导航:subnav

当前的curren

小技巧:tips

商标:label

     

页脚:footer

整个页面:content

     

友情链接:friendLink

页眉:header

     

     

标题:title

     

 定制:Customized

   ID:Id 

    编号:Number

      

     

     

     

四、编码优化

1.使用String.Compare()字符串比较
不要使用UpperCaseLowerCase转换字符串的大小写,再进行比较
使用String.Compare()可忽略字符串大小写进行比较
String  strTemp = "Active";
If(String.Compare(strTemp,"active",true)==0){
         Consolt.Write("Equal");
}

2.避免在循环体里声明变量,应该在循环体外声明变量,在循环体内初始化变量
//
避免
For(int i=0;i<10;i++){
       SomeClass obj = new SomeClass();
       //…
}
//
推荐
SomeClass obj = null;
For(int i=0; i<10; i++){
       obj = new SomeClass();
       //…
}

3.关于this的使用

this可以让人直接看出来调用的是参数或局部变量,还是类的成员

3.设计原则

  • 单一职责原则(SRP - 就一个类而言,应该仅有一个引起它变化的原因
  • -闭原则(OCP- 软件实体(类,模块,函数等)应该是可以扩展的,但是不可以修改
  • 里氏替换原则(LSP- 子类必须能够替换它们的基类型
  • 依赖倒置原则(DIP- 抽象不应该依赖于细节。细节应该依赖于抽象。
  • 接口隔离原则(ISP- 不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。
  • 重用发布等阶原则(REP- 重用的粒度就是发布的粒度。
  • 共同封闭原则(CCP- 包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成影响。
  • 共同重用原则(CRP-  一个包中所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。
  • 无环依赖原则(ADP- 在包的依赖关系图中不允许存在环。
  • 稳定依赖原则(SDP- 朝着稳定的方向进行依赖。
  • 稳定抽象原则(SAP- 包的抽象程度应该和其稳定程度一致。
  • 合成/聚合复用原则(CARP要尽量使用合成/聚合,尽量不要使用继承

补充:

2014/10/08

关于项目中Id或编号的变量、参数等 命名需要注意结名称尾要加上 **Id  **编号    例: 商品Id   商品编号

原文地址:https://www.cnblogs.com/shanhe/p/3877998.html