命名的艺术

“计算机科学只存在两个难题:缓存失效和命名。” ——Phil KarIton

前言

命名一直是我编程过程中很头痛的事,有时为了一个恰当的名称是想了又想,还忍不住Google一下。命名真是一门艺术,好的命名那叫一个高大上。今天总结一些前端命名的规范,梳理一份自己的命名想法,从以下4种代码风格的命名规范部分获取灵感:

1. Google JavaScript代码风格指南

2. Crockford代码规范

3. Dojo Javascript 编程规范

4. jQuery核心风格指南

PS:未列出来的,代表没对此种命名做规范。

JavaScript

1. 变量

Google JavaScript代码风格指南 小驼峰命名规则
Dojo Javascript 编程规范 小驼峰命名规则
jQuery核心风格指南 小驼峰命名规则

这里有一点要澄清的事,网上很多Dojo Javascript 编程规范的资料说”变量名称必须为小写字母“,我半天不敢相信,直接找上Dojo官网文档,里面根本就没这么说,而是说是混合大小写(就是小驼峰)。

——所以结论是,变量用”小驼峰命名规则“。

2. 常量

Google JavaScript代码风格指南 大写字母,单词间加下划线,例:var SECONDS_IN_A_MINUTE = 60;
Dojo Javascript 编程规范 大写字母,单词间加下划线 或 大驼峰命名规则

好吧,其实Dojo Javascript 编程规范根本没说”大写字母,单词间加下划线“,只是说了大写字母,我看得不顺眼加的,我就喜欢这种。

——所以结论是,常量用”大写字母,单词间加下划线“。

3. 函数

Google JavaScript代码风格指南 小驼峰命名规则,例:functionNamesLikeThis
Dojo Javascript 编程规范 小驼峰命名规则,必须为动词或者是动词短语。例:obj.getSomeValue()
jQuery核心风格指南 小驼峰命名规则

这一次我非常赞同Dojo Javascript 编程规范命名方式,就必须要是动词或者是动词短语。函数也是方法,叫法不同而已。

——所以结论是,函数名用”小驼峰命名规则,必须为动词或者是动词短语“。

4. 类

Google JavaScript代码风格指南 大驼峰命名规则,例:ClassNamesLikeThis
Dojo Javascript 编程规范 大驼峰命名规则

JavaScript本身没有类这种东西,只不过是模拟出来的,本质还是个函数。不过命名的确是要不同, 另外构造函数命名跟类相同。

——所以结论是,类名用”大驼峰命名规则“。

5. 枚举变量

Google JavaScript代码风格指南 大驼峰命名规则,例:EnumNamesLikeThis
Dojo Javascript 编程规范 大驼峰命名规则

这个没什么争议。

——所以结论是,类名用”大驼峰命名规则“。

CSS

CSS的编写有几个准则:

1. 短ID或类命名,但确保他们不要太过隐晦,或直白(如#blue-button)。

2. 大型项目使用前缀,如#xyz-help, .xyz-column(分模块)。

3. 单词直接间隔使用”-“(NEC规范文档里面就是用”-“)。

即使是不用,使用其他驼峰式或下划线,那就必须统一风格,别一会用这用那。

自问自答

1. CSS,class或id的单词间隔是使用横杠或者下划线或驼峰式?

我觉得当中选择了一种,那么整个风格就统一成那种, 不要像风像云又像雨,什么都用。我建议是用横杠,看起来舒服一些。

2. 文件名要不要驼峰式,首字母要大写吗?

首先文件名必须简明扼要,别又臭又长。有很多方式:

1. 全部小写,单词间用下划线。例: photo_gallery.js

2. 全部小写,单词间用横杠。例: photo-gallery.js

3. 全部小写,单词间不使用任何字符分割。例: photogallery.js

4. 小驼峰式。例: photoGallery.js

这个我真没有确定要用哪一种,哪一种是最靠谱的,但应该是没有以大写字母开头的。

3. 私有变量、函数要用下划线前缀吗?

Dojo Javascript 编程规范 是规定必须要下划线前缀的,其他规范并没有要求。而我觉得使用下划线前缀是比较好的,它很大的优点是很明确区分了公共变量和私有变量,一目了然(还有一点淡淡的逼格)。

总结

Crockford代码规范并没有对命名规范的说明,兴许是我没找到。相反的,Dojo Javascript 编程规范对于命名规范这部分着实详尽,里面很多可借鉴地方,我取了一点东西。还有HTML的本身就不建议使用自定义标签,所以也没什么命名问题,至于属性,统一风格就行了。

我在文章里面最常说的是统一风格,现实团队协作时候,开始能先统一下规范,对整体代码风格非常有好处的,自己看起来也舒服。最后命名需慎重,尽量简明扼要、清晰易懂。

参考文献

1. 《翻译:谷歌HTML、CSS和JavaScript风格规范》 by 张鑫旭

2. 《Google JavaScript代码风格指南

3. 《Crockford 编程规范》 by 阮一峰

4. 《规范自己的JavaScript书写 – Dojo Javascript 编程规范》by 彬Go

本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。

本文地址 :http://www.cnblogs.com/lovesong/p/5423425.html

时间: 2024-10-13 00:52:59

命名的艺术的相关文章

计算机科学只存在两个难题:缓存失效和命名

计算机科学只存在两个难题:缓存失效和命名. 命名的艺术 “计算机科学只存在两个难题:缓存失效和命名.” ——Phil KarIton 前言 命名一直是我编程过程中很头痛的事,有时为了一个恰当的名称是想了又想,还忍不住Google一下.命名真是一门艺术,好的命名那叫一个高大上.今天总结一些前端命名的规范,梳理一份自己的命名想法,从以下4种代码风格的命名规范部分获取灵感: 1. Google JavaScript代码风格指南 2. Crockford代码规范 3. Dojo Javascript 编

Objective-C之优雅的命名

There are only two hard things in Computer Science: cache invalidation and naming things. 在计算机科学中只有两件难事:缓存失效和命名. — Phil Karlton 计算机语言是人和计算机之间通讯的媒介.好的代码应该是就像人对计算机说话那样,自然而优雅.命名看上去是一件很简单的事,而往往越是简单的事越难 做好,否则大师们也不会把命名看成是计算机界的难题了.如何把Objective-C这门计算机语言以优雅的方

Objective-C 之优雅的命名(转)

There are only two hard things in Computer Science: cache invalidation and naming things. 在计算机科学中只有两件难事:缓存失效和命名. — Phil Karlton 计算机语言是人和计算机之间通讯的媒介.好的代码应该是就像人对计算机说话那样,自然而优雅.命名看上去是一件很简单的事,而往往越是简单的事越难做好,否则大师们也不会把命名看成是计算机界的难题了.如何把Objective-C这门计算机语言以优雅的方式

资深程序员冒死揭开软件潜规则:无法维护的代码

原始博文发布于: Roedy Green's Mindproducts (http://mindprod.com/unmain.html ). 翻译链接: 点击打开链接 2014年11月25日 03:11 如何编写无法维护的代码 让自己稳拿铁饭碗 ;-) Roedy Green 简介 永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能. -- 拿破仑 为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍.这些大师写的代码极其难以维护,后继者就是想对

【搞笑】如何逼死维护人员

编写无法维护代码的技巧的重中之重是变量和方法命名的艺术.如何命名是和编译器无关的.这就让你有巨大的自由度去利用它们迷惑维护代码的程序员. 妙用 宝宝起名大全 买本宝宝起名大全,你就永远不缺变量名了.比如 Fred 就是个好名字,而且键盘输入它也省事.如果你就想找一些容易输入的变量名,可以试试 adsf 或者 aoeu之类. 单字母变量名 如果你给变量起名为a,b,c,用简单的文本编辑器就没法搜索它们的引用.而且,没人能猜到它们的含义. 创造性的拼写错误 如果你必须使用描述性的变量和函数名,那就把

视频直播编码,如何驾驭超复杂业务逻辑而不失漂亮的代码

折腾了一下午再加上晚上1小时,终于完成了总共6个视频,时长3小时48分的视频录制.这6个视频,完整演示了我们团队基于我们自己搭建的框架,进行编码的工作流程,即如何从原型图开始,一步一步分析需求,设计数据库,完成页面HTML,JS,CSS以至全部功能,现场直播,全程无删减. 我们的这个框架,就是为超复杂业务逻辑而生,同时不失漂亮的代码.通过这6个视频,你可以看到我们如何将复杂的业务逻辑,拆分成一个一个短小的业务单元,让每一个业务单元都那么简单.整个过程就像是庖丁解牛,每一行代码都那么理所当然,每一

资深程序猿冒死揭开软件潜规则:无法维护的代码

原始博文公布于: Roedy Green's Mindproducts (http://mindprod.com/unmain.html ). 翻译链接: 点击打开链接 2014年11月25日 03:11 怎样编写无法维护的代码 让自己稳拿铁饭碗 ;-) Roedy Green 简单介绍 永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能. -- 拿破仑 为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍.这些大师写的代码极其难以维护.后继者就是

如何编写无法维护的代码 让自己稳拿铁饭碗 ;-)

如何编写无法维护的代码 让自己稳拿铁饭碗 ;-) Roedy Green 简介 永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能.-- 拿破仑 为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍.这些大师写的代码极其难以维护,后继者就是想对它做最简单的修改都需要花上数年时间.而且,如果你能对照秘籍潜心修炼,你甚至可以给自己弄个铁饭碗,因为除了你之外,没人能维护你写的代码.再而且,如果你能练就秘籍中的 全部 招式,那么连你自己都无法维护你的代码了

如何编写无法维护的代码

如何编写无法维护的代码 让自己稳拿铁饭碗 ;-) Roedy Green 简介 永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能.-- 拿破仑 为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍.这些大师写的代码极其难以维护,后继者就是想对它做最简单的修改都需要花上数年时间.而且,如果你能对照秘籍潜心修炼,你甚至可以给自己弄个铁饭碗,因为除了你之外,没人能维护你写的代码.再而且,如果你能练就秘籍中的 全部 招式,那么连你自己都无法维护你的代码了