`
love19820823
  • 浏览: 935219 次
文章分类
社区版块
存档分类
最新评论

浅谈命名规范[纯属强辩]

 
阅读更多
看到有网友留言,指出了我的命名规范错误,甚感欣慰。确实有部分代码没有按照统一的命名规范书写,实在有碍观瞻,一定注意改正。但是就[一看到上面的代码,第一想法就是c++]这点,因为我似乎也当归结为“严于律人,疏于律己”那类型人,还是要强辩几句(高尔基他们家木匠说过:让板砖来得更猛烈些吧)……

首先,就现实情况来讲,在通常状况下命名规范其实应归属于[规范性建议]那类范畴,而非属于强制范畴。只要不是你所在公司或组织的命名规范,那么命名规范便只是推荐你怎么做,而没有要求要你必须怎么做。

再者,即使是公司的编码规范,也不尽相同,即有那种无所谓随意一页薄纸便打发的、也有那类从互联网上检索来随便什么,而后稍加润色的、也不乏自己洋洋洒洒数万字编码规范的公司存在。谁能强制IBM、微软、SUN都使用一种命名规范呢?

而且,就本质来说,命名规范的产生无外是归结于令别人以约定俗成的方式阅读和修改你开发的程序. 也就是说,是别人期望你如此来写,而非你意愿中的写法。如果别人的意愿发生了转变,那么你的写法也必然会随之发生变化。

进一步讲,命名规范这种事,就从来不是一成不变的,轻易便会被人有意无意间创造出来。


比如还在完善中的C#,它的命名方法,便是一种典型:

C#基本命名方法:

一。常量
带有访问修饰符的常量以骆驼命名法[1]
带有公有访问修饰符,受保护修饰符的常量以帕斯命名法[2]

二。数组
以骆驼命名法[1]。

三。结构
以帕斯卡命名法[2],用名词或短语作为名称。

四。枚举
以帕斯卡命名法[2],枚举中的选项也一样。

五,类
以帕斯卡命名方法[2],确保类的名称是一个名词。

六。成员变量命名。
给公有成员变量,受保护的成员变量或内部成员变量命名应以帕斯卡命名方法,给私有成员变量应使用骆驼命名法[1]并以下划线开头。

七。变量
内联变量(在方法内声明)应以骆驼命名法命名[1]。避免使用单个字符作为变量名称,但循环除外。


常用命名方法:
1,骆驼命名法(camelCasing),第一个字母小写,随后的每个单词的第一个字母大写。混合使用大小写字母来构成变量和函数的名字。
2,帕斯卡命名法(pascalCasing),与骆驼命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写。如:StudentName

下划线命名法,顾名思义就是在命名中加入了下划线的命名规则,用于标示类的私有成员。比如在Java编码中,能有效避免如:
class User
{
String name;
public setName(String name) //冲突
{
this.name = name;
}
}

匈牙利命名法(Charles Simonyi提出,因其出生地得名),变量名=属性+类型+对象描述

这么看的话,本身C#的命名规范,就是一个杂烩。

但我们却也都知道,早期的M$君(^^),事实上是力挺匈牙利命名法的。但是后期,由于匈牙利表示法的复杂性及IDE的广泛使用影响下,除了在控件命名上尚有优势外,就很少再被使用。微软转而以骆驼命名法和帕斯卡命名法外代下划线命名法为主体。

可见,命名规范的最主要意义,还是在于——如何能为最大多数人接受,而不是其他什么。

又比如,虽然同属Java体系,Eclipse的SWT包中同样存在着“反Java规范”的地方。

如在org.eclipse.swt.awt包下,SWT_AWT类就是全文大写,而且还用了下划线,这在以前其他的开源包中是不多见的。但是,却清晰体现了类的作用,应该说,是一种很好的写法,目前正开始流行中……

个人认为,既然命名规范是会不断改变的,那么也就是说,但凡不是为公司写程序或团队开发,完全可以按照自己的方式实现命名规范。(实际上,如果这一过程中你是主导者的话,也可以定义自己的命名规范。)这于人于己都没有太大坏处(注意,是没有“太大”,不是没有。我曾遇到某高人,就因他不希望改变自己加下划线的命名习惯而辞职不干的……结果受他影响,我自己也开始爱加下划线……),说不定,你一不小心创造出一种公认的命名表示法,反而成为X氏命名规范创始人也未可知呢。
分享到:
评论

相关推荐

    我把你背出来——真诚与强辩的区别.doc

    我把你背出来——真诚与强辩的区别.doc

    基于Matlab的车牌识别系统(模板匹配法,GUI界面交互,详细注释).zip

    采用模板匹配法完成的车牌识别系统,压缩包里包括对蓝底车牌和黄底车牌的识别,模板库和GUI界面交互设计,代码详细注释,以及车牌识别系统报告。根据RGB进行车牌定位,图像处理,字符切割,车牌识别等步骤,无需更改...

    node-v10.22.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于JAVA的物流管理系统的源码设计与实现.zip

    毕业设计物流管理系统的设计与实现(Java版本) 采用Struts2+hibernate+Oracle10g+Tomcat 涉及车辆管理,配送点管理,运输方式管理,订单管理,员工管理,用户管理,部门管理,权限管理,角色管理等基础管理功能。

    基于VB+access实现的成绩分析统计系统(论文+源代码).zip

    基于VB+access实现的成绩分析统计系统(论文+源代码) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。

    node-v10.14.2-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    ASP+ACCESS网上购物系统设计(源代码+设计说明书+调研报告).zip

    ASP+ACCESS网上购物系统设计(源代码+设计说明书+调研报告).zip

    AO工艺设计计算(全).xls

    污水处理计算书

    node-v7.3.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    ASP+ACCESS在线考试系统设计(源代码+设计说明书).zip

    ASP+ACCESS在线考试系统设计(源代码+设计说明书).zip

    node-v11.10.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip

    毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip 毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip 毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip

    2024年老人机行业分析报告.pptx

    行业报告

    基于matlab实现的导线网平差,主要是附和导线平差程序,用于计算各点坐标并评定其精度 .rar

    基于matlab实现的导线网平差,主要是附和导线平差程序,用于计算各点坐标并评定其精度。.rar

    基于VB+access实现的学生学籍管理系统(系统+论文).zip

    基于VB+access实现的学生学籍管理系统(系统+论文) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。

    ASP基于BS的工艺品展示系统的设计与实现(源代码+设计说明书).zip

    ASP基于BS的工艺品展示系统的设计与实现(源代码+设计说明书).zip

    经典SBR设计计算(全).xls

    污水处理计算书

    ASP+ACCESS网上花店毕业设计全套(设计说明书+源代码+说明).zip

    ASP+ACCESS网上花店毕业设计全套(设计说明书+源代码+说明).zip

    污水工艺设计计算书.xlsx

    污水处理计算书

    2024年速冻包子行业分析报告.pptx

    行业报告

Global site tag (gtag.js) - Google Analytics