聊聊.net 程序设计——命名规范(上)
转眼工作好几年了,经历了几家公司也参与设计开发了一些项目产品。不敢妄言只能说在技术上有了一些沉淀,想写出来与各位志同的人分享一下。
之前一直在各个技术论坛游走,一直在欣赏其他同仁写的技术文章,不得不说有些让我受益匪浅。怎么说呢三人行必有我师,搞技术的没有人可以样样精通。所以一直也想把我这几年积攒下的东西与各位分享一下。
我先介绍一下,本人这几年一直在搞.net B/S、C/S方向(呵呵,当时就因为是Microsoft的平台所以才选择的)经历了.net framework2.0、3.0、3.5到目前的4.0不得不说微软确实财大气粗推出框架版本这么迅速,框架也越来越完善功能也越来越强大。不得不说这样庞大的一个框架以及后面那样一支庞大的开发团队在短时间内可以不断更新可以无间隙的集成,这样的事情也许只有像微软这样的公司才能够做的到吧!试想这几年所做的国内项目(虽然和Microsoft的framework没法比较)如果可以像framework这样可以快速更新无缝集成,我个人认为除了要有一支技术过硬、高凝聚力、高执行力的团队以外,还要有一套适应所处行业适应所在团队的一套标准。只有有了标准才会有具体的约束具体的方向,对一些事物才会可控。
这样针对上述的标准,我来说说我们搞技术最常用的程序命名规范。也许网上关于命名规范的文章不计其数,我不是在步别人的后尘,我只想谈谈我的体会。
闲话少说,现在开始了。
主要想通过两部分来阐述命名规范的一些相关体会,一部分即《聊聊.net 程序设计——命名规范(上)》,其中将主要讨论如何使用大小写,如何为标识符选择适当的名字,以及如何使用某些特定的术语;另一部分为《聊聊.net 程序设计——命名规范(下)》其中将讨论命名空间、类型、成员、参数、程序集以及资源的命名规范。
那么开始我们上半部分的讨论,如何使用大小写?
众所周知大小写最常用的有两种方法即:
PascalCasing
camelCasing
PascalCasing它把标识符中每个单词的首字母(包括2个单词以上的首字母)大写,如:WebClient;当然其中还有一些特例比如System.IO,其中IO为两个单词的首字母缩写都进行了大写处理,其实这样符合PascalCasing的方法。
camelCasing它把除了第一个单词之外的所有单词的首字母大写,如:propertyName。
一般在实际工作中一般将命名空间、类型及成员的名字采用PascalCasing方法命名,参数采用camelCasing方法命名。
如下:
标识符 大小写 Demo 命名空间 Pascal System.Net 类型 Pascal StreamReader 接口 Pascal IEnumerable 方法 Pascal ToString 属性 Pascal Name 事件 Pascal OnLoad 枚举 Pascal FileMode 参数 camel value 上述例子阐述了一些开发场景中的命名大小写方式,还有一种即”字段”微软官方推荐使用Pascal大小写命名方法,但我在实际工作中更倾向于按访问修饰符来决定采用哪种大小写命名方式,如:
public、internal、protected采用Pascal
private采用camel
当然这是我的个人习惯而已,在公司内部对于这种习惯也进行了讨论,最终保留了这种方案。
还有一种情况,即上述例如IO的命名。IO是两个单词首字母缩写,IO是微软官方的命名所以大家都熟悉也都接受,但实际工作中个人认为尽量不要采用这种缩写的命名方式,除了你的缩写命名让人可以一目了然(这种情况很少)否则不要采用首字母单词缩写来进行命名,因为这样的命名会让人不熟悉时产生不知所云的影响。
如何为标识符选择适当的名字?
我认为有一下几点:
1、选择易于阅读的名字
一个易于阅读的名字很重要,它可以那你的代码更具可读性在没看代码逻辑前就知道你的方法、属性、事件等的用途。
2、要看重可读性而非简洁性
也许有人认为命名的长度越短越好其实也不尽然,简介的命名也许会让人感觉代码很“干净”但不一定能讲功能逻辑表述清楚,如:GetInt没有GetLength看起来更直观。
3、尽量不要使用下划线、连字符以及其他非字母数字的字符,其实感觉带数字的命名也不是很好,记得当年做GIS时采用ESRI公司的ArcGIS Engine做嵌入式开发时,其中就有用…2的命名方式当时感觉比较混乱不知所以然,当然只是个人感受罢了,仅对于本人自己来说不到万不得已尽量不要采用数字命名。
4、提到命名,不得不提及当年包括现在还有公司采用的匈牙利命名法,即:采用小写形式的数据类型缩写来作为变量名的前缀,这种命名方法在某种程度上确实为我们带来了一些便利如使用得当可以带来更好的可读性,但同时也增加了维护成本,及因维护不当而引起的混淆。因为它需要对各种类型在前期作大量的设计保证不被混淆,这样会大大增加开发维护成本,所以不太推荐使用匈牙利命名方法。
尽量不要使用自己没把握的单词缩写来使命名简介,如:使用ShowWindow要比ShowWin要更易于理解。
尽量使用常用的名称如:item、length、count、value等,因为这种命名有时一个单词已经表述出50%的用途。
最后在C#中有int类型,但大家都知道其实int是System.Int32的别名,还有stirng是String的别名,在我们自己做程序设计时尽量避免使用别名因为别名有可能造成代码混淆,不易于阅读。
以及如何使用某些特定的术语?
避免使用编程语言特用的名字,如:char、float、double、object……..
具体的语言特用 的类型名称在这里就不再列举。
以上是个人对命名规范的理解,也许讨论的比较浅不是很完全,欢迎大家讨论,提出您的意见或者建议。
该文章参考文献——《.net设计规范约定、惯用法与模式》
——小弟不才,欢迎大家转载
转载于:https://www.cnblogs.com/zhangyue2011/archive/2011/10/11/2208016.html
聊聊.net 程序设计——命名规范(上)相关推荐
- 数据库设计中的命名规范
1.引言 数据库设计过程中表.字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理性.为了项目最终的协调稳定性,而命名规范则更多的是为了确保设计的正式和统一.公正的讲, ...
- 命名参数_告别编码5分钟,命名2小时!史上最全的Java命名规范参考!
简洁清爽的代码风格应该是大多数工程师所期待的.在工作中笔者常常因为起名字而纠结,命名已经成为我工作中的拦路虎,夸张点可以说是编程5分钟,命名两小时! 每个公司都有不同的标准,目的是为了保持统一,减少沟 ...
- python语言在命名上是什么敏感的_一文轻松掌握python语言命名规范规则
和C/C++.Java等语言一样,python在命名上也有一套约定俗成的规则,符合规范的命名可以让程序的可读性大大增加,从而使得代码的逻辑性增强,易于自己和其他协作者在以后的拓展中理解代码的意义,从而 ...
- java包名命名规则_告别编码5分钟,命名2小时!史上最全的Java命名规范参考!
简洁清爽的代码风格应该是大多数工程师所期待的.在工作中笔者常常因为起名字而纠结,命名已经成为我工作中的拦路虎,夸张点可以说是编程5分钟,命名两小时! 每个公司都有不同的标准,目的是为了保持统一,减少沟 ...
- 史上最全的Java命名规范[转]
每个公司都有不同的标准,目的是为了保持统一,减少沟通成本,提升团队研发效能.所以本文中是笔者结合阿里巴巴开发规范,以及工作中的见闻针对Java领域相关命名进行整理和总结,仅供参考. 一.Java中的命 ...
- 告别编码5分钟,命名2小时!史上最全的Java命名规范参考!
简洁清爽的代码风格应该是大多数工程师所期待的.在工作中笔者常常因为起名字而纠结,夸张点可以说是编程5分钟,命名两小时!究竟为什么命名成为了工作中的拦路虎. 每个公司都有不同的标准,目的是为了保持统一, ...
- 10分钟了解代码命名规范(Java、Python)
前言 关于代码命名,我相信是经常困扰很多小伙伴的一个问题,尤其是对于强迫症晚期患者.怎么说呢,每次小编在写代码之前,总会在想啊想啊,用什么命名法好呢?对于经常在C++.Java.Python等主流语言 ...
- day01--java基础编程:计算机基础知识 ,java语言概述,java开发环境搭建,eclipse概述,创建简单java项目,JDK JRE JVM的关系,java开发中的命名规范,编程风格
1 Day01–Java开发环境+HelloWorld 1.1 计算机基础知识 资料下载网址:刘沛霞 18600949004 code.tarena.com.cn tarenacode code_20 ...
- html语言书写注意事项,CSS命名规范参考及书写注意事项
CSS书写顺序 *{ /*显示属性*/ display position float clear cursor - /*盒模型*/ margin padding width height /*排版*/ ...
最新文章
- 2. Web Dynpro for ABAP :Component Controller
- mysql最早出现的数据模型_在数据库发展史中出现的数据模型有哪些
- 农作物分布数据、作物类型分布、农田分布数据、土地利用数据、植被类型数据、物候数据、NDVI数据
- 黑客之门脆弱的网络传输加密【ALLyeSNO】
- 如何在Linux上安装和使用TeamViewer
- (转)python基础之迭代器协议和生成器(一)
- c++ hash函数
- 同建金融IT新生态——令克软件富途证券达成战略合作
- SpringBoot + Spring Cloud +Vue 管理系统前端搭建(六、完善登录流程)
- 基于linux的操作系统没有前途
- 黄复贵:从北京理工到今日头条
- 蚂蚁估值之惑:金融科技公司可以约等于科技公司吗?
- [渝粤教育] 南京邮电大学 市场调查与研究 参考 资料
- html制作模拟考试试卷,网页设计与制作模拟试题
- 2019全国数学建模总结
- 微信小程序wx:for 的使用以及wx:key绑定
- 公安大学c语言真题,2016年中国人民公安大学网络安全与执法C语言程序设计(同等学力加试)复试笔试仿真模拟题...
- 莱宝真空泵品牌中国华东区一级授权
- 上海计算机应用能力大赛获奖作品,_上海市大学生计算机应用能力大赛2009年参赛作品集锦.pdf...
- 阿里云MQTT + STM32 + MQTT + ESP8266 01S WIFI 实现远程继电器控制开关和采集温湿度 登录阿里云网站,进入物联网云平台