http://www.cnblogs.com/yangcaogui/archive/2012/04/18/2447049.html

前一段时间阅读了“.NET设计规范”这本书,读后给我的感觉是规范对开发人员有着举足轻重的重要,可能我们都有自己的想法,但我相信遵循这些前辈们总结的规范将给我们的开发带来裨益,所以熟知这些开发规范并养成良好的习惯是需要我们坚持的,慢慢这些规范将潜移默化的影响着我们!

  1.80/20原则

    所谓的80/20原则,是在一些特殊情况下,要重视那“20%”的部分,“80%”的部分可以减轻重视度,其实我们大多数人都知道有这么一个原则,但是我还没有真正的把这个原则用于实践中去,如果你常用这个原则去审视一些大型项目的话,那里面就会有很多设计用刀这个原则的,比如前一段时间一篇文章关于“baidu”以及“Google”的分页问题,它就很好的运用了80/20这一个原则,好了,不多说了,开始规范之旅...

    2.类型命名规范

    2.1大小写规范

      有两种命名术语:①PascalCasing → 帕斯卡命名法 (单词的首字母要大写)

              ②camelCasing → 驼峰命名法 (第一个单词的首字母小写)

      注意事项:

      ①要把“camelCasing ”规范用于参数以及变量的命名

      ②命名时不要使用首字母缩写 ,除了特殊情况,如 → System.IO

      ③“PascalCasing”使用的主要区域为 → 图示

       

        

    2.2类型名称单词的选择

      ①要为名称选择易于阅读的名字

      ②不要跟C#中的关键字产生冲突      

      ③不要使用单词缩写以及单词的首字母缩写

      ④不要使用那些还没有流行的首字母缩写

      ⑤选择的单词要有含义

    2.3命名空间

      规范:简单易懂,并具有概括性

      

      具体规范如下:

       ①使用公司名作为前缀

②使用稳定的,与版本无关的产品名称作为空间的第二层!

③使用PascalCasing大小写风格!

④考虑在适当的名称中使用复数 → System.Collections

⑤不要引入太一般的类型名,如Log,Message,应该在它们之前加上限定词!

      Note:书中有介绍程序集的章节,只可惜我对它理解的不是很好,就没有写上来!

    2.3类,结构,接口的命名

      Note:类型名应该是一个名词或名词词组,如果没有为类型名找到一个很好的名词或名词词组,那么应该考虑重新设计名称了!

      选择名称的方法:首先你要知道你设计的类型应用于哪个场景,知道这个场景是干嘛的,然后选择合适的名词或名词词组进行设计!

      如:Stream,StreamReader,TextReader,StringReader这一类的名称设计,或者我要设计一个Json的操作类库,可以命名为 → JsonOperation

      具体规则:      

       ①使用名词或名词词组进行命名,并采用“PascalCasing”大小写风格!

②不要给任何一个类型名加前缀,这是大忌(接口除外)!

③考虑让派生类的名称以基类的名称结尾

如:Exception,它所有的派生类都是以“Exception”基类名称结尾!

或者是“Attribute”之类的

       .NET Framework中的一些派生类命名规则(详细的在后一篇文章会涉及到),图示:

        

④接口 → 以字母“I”为前缀开头,这样使用者就一目了然,这是一个老习惯了!

⑤应该使得实现接口的类型名跟接口名只相差一个字母“I”!

        如:接口IJsonOperation,实现它的类名称应该为 → “JsonOperation”

    2.4泛型类型参数的命名      

      ①要尽可能的用描述性的名字来命名泛型类型参数,应该在单词前面加上前缀“T”

      

      ②考虑用“T”来命名参数类型

如果只有一个参数类型,如 → List<T>

      ③如果泛型参数有了泛型约束,应该把约束的类型名追加的泛型参数上

可以把一个被限制为ISession接口的类型参数命名为 → “TSession”

    

    2.5枚举类型的命名

      ①也要遵守“PascalCasing”大小写规范

      ②要用单数名词来命名枚举类型

      ③要用复数名词来表示“位标记(Flags)”的枚举类型,如:

1    [Flags]
2 public enum Colors //如果是为标志,建议采用复数的形式
3 {
4 Read,
5 Black,
6 Yellow
7 }

      ④不要给枚举名添加“Enum”或者“Flag”或“Flags”的后缀,也不要添加前缀

    

    虽然很基础,但是对于我们这些门外汉有着举足轻重的作用,一起努力!

.NET设计规范一:设计规范基础的更多相关文章

  1. (转)iOS7界面设计规范(2) - UI基础 - iOS应用解析

    今天再来一发,然后结束掉周六的忙碌,去吃零食,还有冰啤酒:其实现在打嗝还有小龙虾味儿呢. 第二篇更多的是从技术的角度对iOS界面组成原理进行了简单的解析,篇幅很短,可稍作了解:更多关于iOS开发入门的 ...

  2. (转)iOS7界面设计规范(13) - UI基础 - 与iOS的系统整合

    突然就到了周日傍晚.你永远不会知道自己的生活在接下来的一周当中能够发生多少变化:各种不可预知性所带来的更多是快感还是焦虑与不安,冷暖自知.相比之下,白天工作当中那些需求列表与排期文档就显得那么可爱了, ...

  3. (转)iOS7界面设计规范(10) - UI基础 - 文字排版与配色

    明天就是周四了.貌似前几天还在恨周一呢.话说今天几乎开了一整天的会,正经事情没做多少:这种感觉比一整天从早到晚12个小时的忙碌于一件事情还要让人感到疲惫的对叭?那今天的iOS7设计规范更新又是一篇很简 ...

  4. (转)iOS7界面设计规范(8) - UI基础 - 术语和措辞

    讨厌周一,讨厌一周.今天中午交互组聚餐,却很开心:大家都是很厉害的人,你可以感到他们身上的能量,可以感到有些什么东西正在推着自己尽力向前走.这是一种很健康的状态,同时也很难得,自然越发需要珍惜.从无到 ...

  5. (转)iOS7界面设计规范(7) - UI基础 - 交互性与反馈

    现在只是周日下午,可怎样都觉得整个周末就这样即将过去了,不免沮丧.看了好多集小丸子了,又不免觉得现在其实是在放暑假,可以一天一天的窝在家里做任何事,任何事.再上一篇iOS7设计规范,然后本周末就到这里 ...

  6. (转)iOS7界面设计规范(12) - UI基础 - 品牌

    重要:这是针对于正在开发中的API或技术的预备文档(预发布版本).虽然该文档在技术精确度上经过了严格的审核,但并非最终版本,仅供苹果开发者计划的注册会员使用.苹果提供这份机要文档的目的,是帮助你按照文 ...

  7. (转)iOS7界面设计规范(11) - UI基础 - 图标与图形

    不知别人如何,我自己来讲,平时很习惯很有动力去做的一些事,譬如博客吧,一旦生活中出现一些让自己很难受的状况,就很容易受到影响:像是,你平时所习惯的生活状态都是基于某种东西的,一旦这种东西崩塌,会影响到 ...

  8. (转)iOS7界面设计规范(9) - UI基础 - 动画

    傍晚下了场大雨,现在坐在屋里也真是很风凉,听着Everlong突然觉得好像去年秋天的气息.每个季节都有各自的气息,每一年也是,如果你留意,便会感觉到.话说这几天,外面的猫猫狗狗们可以补些水来喝了,这也 ...

  9. (转)iOS7界面设计规范(6) - UI基础 - 模态情境

    继续规范.现在听着Clapton的Wonderful Tonight,想想看,整个高二暑假都在为这首歌着迷,经常夜里一边做英语暑期作业一边循环这首歌,心里特别静的赶脚.13年过去了,再听起来,就像隔着 ...

  10. (转)iOS7界面设计规范(5) - UI基础 - 导航

    通过分页控件(page control)来暗示多个条目或内容视图的存在.该控件可以有效的向用户展示内容单元的数量,以及当前所见的这一条在队列中的位置.请参考分页控件一节,了解更多详情. 注意:虽然工具 ...

随机推荐

  1. 【BZOJ 2194】2194: 快速傅立叶之二(FFT)

    2194: 快速傅立叶之二 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1273  Solved: 745 Description 请计算C[k]= ...

  2. Entity Framework(实体框架 EF)

    什么是Entity Framework呢(下面简称EF)? EF(实体框架)是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架.ORM(对象关系映射框架):指的是面向 ...

  3. 51nod部分容斥题解

    51nod1434 区间LCM 跟容斥没有关系.首先可以确定的一个结论是:对于任意正整数,有1*2*...*n | (k+1)*(k+2)*...*(k+n).因为这就是$C_{n+k}^{k}$. ...

  4. [ARC055D]隠された等差数列

    题意:对一个等差数列$a_i=A+Bi(0\leq i\leq n-1)$和非负整数$x$,把$a_i$的$10^x$位拿出来可以写成一个字符集为$0\cdots9$的字符串,现在给定这个字符串$d_ ...

  5. 2017-2018-1 JAVA实验站 第二周作业

    2017-2018-1 JAVA实验站 第二周作业 小组成员: 组长 20162318张泰毓 成员 20162303石亚鑫 20162304张浩林 20162307张韵琪 20162321王彪 201 ...

  6. bzoj 3437: 小P的牧场 -- 斜率优化

    3437: 小P的牧场 Time Limit: 10 Sec  Memory Limit: 128 MB Description 小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号), ...

  7. codeforces 148E Aragorn's Story 背包DP

    Aragorn's Story Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/probl ...

  8. mmm-master漂移问题的分析

    date:20140527auth:Jin 一.问题描述线上store应用,偶尔出现慢的现象.检查发现是writer角色在master-backup之前漂移检查mysql-log没有发现异常,也没前端 ...

  9. OpenCV2马拉松第12圈——直方图比較

    收入囊中 使用4种不同的方法进行直方图比較 葵花宝典 要比較两个直方图, 首先必需要选择一个衡量直方图相似度的对照标准.也就是先说明要在哪个方面做对照. 我们能够想出非常多办法,OpenCV採用了下面 ...

  10. 安装sql2012 正在启动操作系统功能"NetFx3"

    安装完windows8 后开始安装sql2012,安装过程中停在“正在启动操作系统功能"NetFx3"”不动了,很是着急,于是上网查了一下资料,原来NetFx3指的是Framewo ...