以下转载于:http://www.it28.cn/ASPNET/825095.html

下面这个规范是我为朋友写的几点建议,写的很范,作为BLOG,愿与大家一起分享。只给出部分设计规范样例,关于.NET编程的详细规范、设计请参考相关书籍。

1、命名规范

1.1    命名空间命名,一般命名为”公司简称+产品名称+程序包”的形式,如ARSC.EngineMap.Geometry、SharpMap.Framework、SharpMap.Controls、GoogleMap.Downloader、GoogleMap.App等,其长度一般要求不能过于太长。程序集的名称可以和命名空间保持一直。注意可以在不同的.DLL里面定义相同的命名空间。

1.2    变量命名,如果是局部变量、函数接口变量,主要以易于表达概念的英语进行命名。单词第一个字符必须小写,如果是组合单词,第二个单词应该大写,如firstName、computerName。

Public void ConcactName (string firstName,string lastName);

对于成员变量需要定义以”_”开头,如:

Public class Person

{

Private string _firstName;

Private string _lastName;

Private int   _age;

}

1.3    类命名,类主要由名词性短语命名,类的第一个单词都是大写,做到见名知意,如Person、Computer、ExtensionManager、PrintManager、FormatTransform、HttpDownloader、TcpDownloader、CommandPool、XmlHelper、XmlUtility、ProductFinder、ProductRepository、CourseCatalog等。注意的是类命名不能加复数形式如Persons表示人的集合,正确命名应该为PersonCollection。

1.4    接口命名,接口命名可以参考类命名规则,但是其需要在命名前加”I”。如ICommandPool、IDownloader、IPrintManager、IProductFinder等。

1.5    方法命名,主要以动名词短语构成,函数主要表达一种计算功能或者任务,因此给函数取一个合适的名字非常重要,如CaculateArea、QueryProduct、CreateBar、ExportView、CanSeek、HasValue、HasChildern等。长名称函数一般用于私有函数中,如CopyProductsToRepositoryFromCache这个函数要比注释好的多。

1.6    代理命名,如提供回调的代理需要加上CallBack后缀:

Public delegate void ProgressNotificationCallBack(int curPos,int totalSize);提供事件原型的代理需要加上EventHandler后缀,如:

Public delegate void CurrentToolChangedEventHandler(object sender,MapToolEventArgs e);

1.7    事件命名,主要是要能够见名知意,如

Public event CurrentToolChangedEventHandler CurrentToolChanged;

Public event EventHandler CurrentLayerChanged;

1.8    属性命名,提供私有成员的访问控制如

Public string Name

{

Get{return _name;}

Set

{

If(value==null)

Throw new ArgumentNullException(“Name can’t be set null.”);

_name=value;

}

}

2、成员访问控制

成员访问控制主要由internal(在该DLL内可以访问)、protected(子类可以访问)、private(私有访问)、public(访问不受控制)和Protected internal(在其子类或者该DLL内部可以访问),我们将所有成员变量都设计成私有,如果需要公开该数据,需要提供属性。如:

Public class Person

{

Private string _name;

Public string Name

{

Get{return _name;}

Set {_name=value;}

}

}

3、XML代码注释

对于公开函数接口必须提供代码XML注释,便于形成开发文档。私有函数可适当加以注释。详细请参考MSDN。

/// <summary>

/// 命令池对象,主要用于命令按钮的注册和反注册。

/// </summary>

///<remarks>

///每一个命令池都和一个<seealso cref="ICommandBars"/>绑定在一起,

///如果想将按钮添加到<seealso cref="ICommandBars"/>上,首先必须在命令池中注册该按钮项目。

///</remarks>

public interface ICommandPool

{

/// <summary>

/// 获取命令池中工具条项目。

/// </summary>

/// <param name="uid">命令按钮全局唯一标识符。</param>

/// <returns>返回工具条项目。</returns>

ICommandItem GetCommandItem(GuidClass uid);

/// <summary>

/// 获取和设置应用程序钩子其为<seealso cref="Jackey.Framework.IApplication"/>。

/// </summary>

object Hook { get; set; }

/// <summary>

/// 获取和设置COM对象钩子。该钩子只需要在COM应用程序中进行设置。

/// </summary>

object COMHookObject { get;set;}

/// <summary>

/// 获取和设置命令按钮单击回调函数。

/// </summary>

ButtonClickCallBack ButtonClick { get;set;}

/// <summary>

/// 利用指定全局唯一标识符注册命令按钮。

/// </summary>

/// <param name="cmd">命令对象。</param>

/// <param name="guid">命令按钮全局唯一标识符。</param>

更多资料转载中http://www.it28.cn/ASPNET/825095.html

.NET代码设计简单规范的更多相关文章

  1. 代码规范、API设计等规范

    一份整理好了的规范文档,node后端开发用到 "规范是个好东西..." - 鲁迅 以下规范仅作为参考 1.代码规范 命名 尽量保证命名更加语义化 文件命名采用下划线命名法 // g ...

  2. 浅谈PHP代码设计结构

    浅谈PHP代码设计结构 您的评价:       还行  收藏该经验       coding多年,各种代码日夜相伴,如何跟代码友好的相处,不光成为职业生涯的一种回应,也是编写者功力的直接显露. 如何看 ...

  3. Discuz代码研究-编码规范

    Discuz中的编码规范很值得PHP开发人员借鉴.里面既介绍了编码时代码标记,注释,书写规则,命名原则等方面基础的内容,对代码的安全性,性能,兼容性,代码重用,数据库设计,数据库性能及优化作了阐述,这 ...

  4. Delphi代码创建形式规范 1.0

                Delphi代码创建形式规范 1.0 本规范的目的:给自己的代码一个统一而标准的外观,增强 可读性,可理解性,可维护性 本规范的原则:名称反映含义,形式反映结构 1.单元风格 ...

  5. 拿什么拯救你,我的代码--c#编码规范实战篇

    此文为译文,原文地址请点击. 本文通过重构一个垃圾代码,阐述了如何写出优秀的代码.开发人员及代码审核人员需按照此规范开发和审核代码.此规范以C#为例,JAVA的童鞋一并参考,C++的童鞋自行脑补吧. ...

  6. 拿什么拯救你,我的代码--c#编码规范实战篇 (转)

    http://www.cnblogs.com/lazio10000/p/5413439.html 此文为译文,原文地址请点击. 本文通过重构一个垃圾代码,阐述了如何写出优秀的代码.开发人员及代码审核人 ...

  7. WPF换肤之四:界面设计和代码设计分离

    原文:WPF换肤之四:界面设计和代码设计分离 说起WPF来,除了总所周知的图形处理核心的变化外,和Winform比起来,还有一个巨大的变革,那就是真正意义上做到了界面设计和代码设计的分离.这样可以让美 ...

  8. 设计简单算法体验Vivado HLS的使用

    前言 本文主要讲解了使用Vivado HLS设计简单C语言的二选一选择器算法的硬件HLS开发的全流程,包括工程创建-算法验证和仿真-算法综合-RTL仿真-IP封装等步骤. 参考网站: http://b ...

  9. (2.15)Mysql之SQL基础——开发设计最佳规范

    (2.15)Mysql之SQL基础——开发设计最佳规范 关键字:mysql三大范式,mysql sql开发规范 分析: show profile.mysqllsla.mysqldrmpslow.exp ...

随机推荐

  1. Android NDK学习(六): so文件兼容之abiFilters的使用

    最近项目中遇到了要使用opencv的情况,涉及到了abi兼容的选择.因为如果全部都适配的话,包很大,这样兼容那些用户数极少的cpu就很不划算,所以我只适配了armeabi-v7a这一个.但是今天在x6 ...

  2. Javascript多线程

    最近项目中要用一个倒计时,但是当弹窗的时候倒计时会被阻塞,所以我想到使用Javascript多线程解决该问题. 虽然JavaScript是单线程的,但是通过worker可以让Javascript另外开 ...

  3. JavaScript实现多张图片上传功能

    今天闲着没事,把之前的多张图片上传代码整理了下. 页面主要代码: <div class="upBox upBox2"> <div class="d1&q ...

  4. 微信小程序基础

    前言 什么是微信小程序,它是一种轻量级的APP,它与常规App来说,无需下载安装即可使用,它嵌于微信App中,要使用微信小程序你只需要搜索一下微信小程序的名称就好,如近期的"Google的画 ...

  5. Python基础教程(第3版) 笔记(二)

    1.8模块Python提供了完成(某人的年 龄为32.9,并想将这个值向下圆整为32,因为他还没有满33岁)这种任务的函 数floor.导入模块,可以使用特殊命令import.函数floor包含在模块 ...

  6. python3爬虫——下载unsplash美图到本地

    最近发现一个网站www.unsplash.com ( 没有广告费哈,纯粹觉得不错 ),网页做得很美观,上面也都是一些免费的摄影照片,觉得很好看,就决定利用蹩脚的技能写个爬虫下载图片. 先随意感受一下这 ...

  7. 通过 CLI 管理 Jenkins Server

    Jenkins 内置的命令行接口允许管理员通过命令行工具访问并管理 Jenkins.这让我们可以通过脚本自动化的创建配置或执行任务,也就是把 Jenkins 中的配置代码化了.Jenkins 同时支持 ...

  8. JavaWeb学习 (十五)————JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  9. ZooKeeper概念与应用

    Zookeeper是开源的分布式协调服务,提供了分布式数据一致性的解决方案. Zookeeper 可用作配置中心和分布式锁服务,在 Dubbo.Kafka.Spark等分布式集群上得到广泛应用. ZN ...

  10. python数据类型之内置方法

    python有六大数据类型,分别为整型.字符串.列表.字典.元祖和集合,这些基本数据类型都内置了很多方法,接下来一一探寻. python中整型有两种:int和float 1 int 使用dir函数查看 ...