命名的艺术

简介:

“计算机科学只存在两个难题:缓存失效和命名。” ——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



本文转自 海角在眼前 博客园博客,原文链接:   http://www.cnblogs.com/lovesong/p/5423425.html,如需转载请自行联系原作者

相关文章
|
JSON 前端开发 JavaScript
微前端项目难点解决(二)
微前端项目难点解决
1171 0
|
传感器 编解码 知识图谱
Google Earth Engine ——MOD17A2H V6总初级生产力(GPP)产品是一个具有500米分辨率的8天累积综合数据产品
Google Earth Engine ——MOD17A2H V6总初级生产力(GPP)产品是一个具有500米分辨率的8天累积综合数据产品
1599 0
Google Earth Engine ——MOD17A2H V6总初级生产力(GPP)产品是一个具有500米分辨率的8天累积综合数据产品
|
机器学习/深度学习 传感器 算法
【信号去噪】基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附matlab代码
【信号去噪】基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附matlab代码
【信号去噪】基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附matlab代码
|
10月前
|
安全 网络安全 数据安全/隐私保护
深度剖析影响HTTP代理带宽的各类因素
随着数字化发展,网络安全和隐私保护成为核心需求。HTTP代理的带宽受以下因素影响:1. 代理服务器硬件与安全机制;2. 使用人数,过多会导致带宽分担;3. IP质量,包括可用率、纯净度等;4. 并发数,高并发会分担带宽。选择HTTP代理时,需综合考虑服务商的性价比、IP质量和稳定性,以提升请求速度和安全性。
190 6
|
11月前
|
人工智能 自然语言处理 搜索推荐
《解锁鸿蒙Next系统人工智能语音助手开发的关键步骤》
在鸿蒙Next系统上开发人工智能语音助手应用,需经历环境搭建、权限申请、集成语音识别、自然语言处理、语音合成及智能交互逻辑设计等关键步骤。开发者使用DevEcoStudio工具,引入Core Speech Kit和NLP服务,实现从语音输入到文本理解再到语音输出的全流程开发。通过多轮对话、个性化功能和全面测试优化,打造稳定可靠的语音助手应用,提供智能便捷的用户体验。
587 22
|
SQL 缓存 关系型数据库
MySQL 查询索引失效及如何进行索引优化
MySQL 查询索引失效及如何进行索引优化
452 1
|
存储 人工智能 自然语言处理
人工智能与未来工作:机遇与挑战
【10月更文挑战第27天】 本文探讨了人工智能(AI)对未来工作的影响,重点分析了AI技术带来的机遇与挑战。通过具体案例和数据,展示了AI如何改变传统行业,创造新的就业机会,同时也提出了应对策略,帮助读者理解并准备迎接这一变革。
|
Java 应用服务中间件 Apache
浅谈Tomcat和其他WEB容器的区别
Tomcat是一款轻量级的免费开源Web应用服务器,常用于中小型系统及并发访问量适中的场景,尤其适合开发和调试JSP程序。它不仅能处理HTML页面,还充当Servlet和JSP容器。相比之下,物理服务器是指具备处理器、硬盘等硬件设施的服务器,如云服务器,其设计目标是在处理能力、稳定性和安全性等方面提供高标准服务。简言之,Tomcat专注于运行Java应用,而物理服务器则提供基础计算资源。
|
负载均衡 监控 Java
Eureka介绍与使用
Eureka介绍与使用
|
搜索推荐 C# Windows
一款.NET开源、免费、实用的多功能原神工具箱(改善桌面端玩家的游戏体验)
一款.NET开源、免费、实用的多功能原神工具箱(改善桌面端玩家的游戏体验)
443 0