当前位置: 首页 > news >正文

.NET命名规范和开发约定

一个新团队的组建,规范是个很大的问题,特别对于刚毕业的学生,需要加强一下这方面的学习和训练。上个星期给我们新来的同事讲解了一下.NET编程规范,顺便也回顾一下编程规范。由于前期没有太多的准备,而且公司没有这方面的文档,今天记下留着备用以便整理成文档给与后来者使用,这些都只是在下多年来使用的一些约定,可能是错误的或不对,欢迎各位批评指正。

 

命名规范:

有3种最常见的命名规范,大部分编程规范的命名法则都来自于他们。他们是:

  • 匈牙利命名法:也就是Hungarian 命名法。这种命名技术是由一位能干的Microsoft程序员查尔斯·西蒙尼(Charles Simonyi) 提出的,他出生在匈牙利。就被命名为“匈牙利命名法”,主要用于Window系统编程。
  • Camel命名法:也叫骆驼命名法。原因是采用该命名法的名字看起来就像骆驼的驼峰一样高低起伏。首字母小写例如:string myAddress;主要非Public的使用此方法。
  • Pascal命名法:也叫帕斯卡命名法。首字母大写的命名法则。例如 string MyAddress;

 .NET命名规范:

 在.net编程过程中,一般采用Camel和Pascal命名方法结合的方式来命名。

Pascal

AppDomain

枚举类型

Pascal

ErrorLevel

枚举值

Pascal

FatalError

事件

Pascal

ValueChanged

异常类

Pascal

WebException

只读的静态字段

Pascal

RedValue

接口

Pascal

IDisposable

方法

Pascal

ToString

命名空间

Pascal

System.Drawing

参数

Camel

typeName

属性

Pascal

BackColor

 

 一般遵循上面的命名约定就可以写出比较好看的代码了。当然最团队开发中还需要注意的是对Public和Protected方法属性等等进行注释,代码的美化有助于阅读,而且多个成员之间可以一目了然的看到了方法或其他的使用情况。

 

C#文档布局 

 一般情况下一个C#文件首先需要添加的是版权,开发者,开发日期等等信息,这个可以通过注册class模板实现,而不需要一个一个的添加和改写。

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

复制代码
 * 开发人员:网魂小兵
 * 
 * 缓存实例。
 * 
 * 最后修改:2011-10-28
 * *********************************************************** */
namespace MyNamespace
{
     using System;
     using System.Collections.Generic;
     using System.Linq;
     using System.Text;

     class MyClass{}
}
复制代码

 当然可以把引用的命名空间写到前面去,只不过我比较喜欢放在里面。我们团队的开发人员我一般都会帮他们注册一个class模板,所以每次添加的类基本都是这样的,关于如何添加可以查看我博客的另一篇文章: 

VS2010类模板更改,增加版权等等信息

 

数据库方法的命名约定 

 对于一个实例来说,SQL语句一般只有四个,Insert Into, Delete From, Select From, Update Set。我一般会要求团队成员们使用Create, Delete, Get/Load, Update,当然如果方法同时都可以有Insert和Update,也可以使用CreateOrUpdate/Save来表示。方法名称使用动宾词语格式,如果是多个集合的使用复数形式。

 

 最后还会鼓励使用枚举来替代各种数字等等表示的特性,使用const常量来替代经常出现的字符串,这样在修改时候就不需要每个地方替换了。而且使用枚举会更佳直观提供代码阅读性,好久没写博客了,都不知道怎么写,要写些什么了,今天来亮相一下,欢迎各位批评指正!!!

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2012/02/26/dotnet_developer_name_rules.html,如需转载请自行联系原作者

相关文章:

  • Nginx安装、默认虚拟主机、Nginx用户认证、Nginx域名重定向
  • Mysql性能
  • 【转】self.myOutlet=nil、viewDidUnload、dealloc的本质剖析
  • Find Blank Cell in Excel
  • 浮动元素引起的问题和解决办法?
  • 使用 pod install 还是 pod update ?
  • SylixOS中APIC HPET定时器字符驱动实现
  • 如何在windows上调试安卓机谷歌浏览器上的页面
  • django-权限管理
  • [转]OOA/OOD/OOP区别
  • 绝对常用的Linux命令
  • 【HeadFirst 设计模式学习笔记】3 装饰模式
  • Windows Phone 7 学习笔记2:感应设备的方向
  • ssh 断开处理
  • 关于JavaScript 的事件[下]
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【译】理解JavaScript:new 关键字
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • C语言笔记(第一章:C语言编程)
  • ERLANG 网工修炼笔记 ---- UDP
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • JSDuck 与 AngularJS 融合技巧
  • Octave 入门
  • PHP 的 SAPI 是个什么东西
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 初探 Vue 生命周期和钩子函数
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 关于for循环的简单归纳
  • 手机端车牌号码键盘的vue组件
  • 思维导图—你不知道的JavaScript中卷
  • 微信小程序填坑清单
  • 详解移动APP与web APP的区别
  • ionic异常记录
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #define与typedef区别
  • (145)光线追踪距离场柔和阴影
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (七)c52学习之旅-中断
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (一)Java算法:二分查找
  • (转)http-server应用
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (转载)虚函数剖析
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • @AliasFor注解
  • @Valid和@NotNull字段校验使用
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [C#C++]类CLASS
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [Docker]十二.Docker consul集群搭建、微服务部署,Consul集群+Swarm集群部署微服务实战