zoukankan      html  css  js  c++  java
  • 《编写可维护的JavaScript》——JavaScript编码规范(二)

    昨天是我偶像生日,现在整个人都还好兴奋啊O(∩_∩)O~  闲话少说,让我先发篇随笔留念一下^_^

    ////////////////////////////////正文分割线//////////////////////////////////////

    命名

    只要写代码,都会涉及变量和函数,因此变量和函数命名对增强代码可读性至关重要。JavaScript语言的核心ECMAScript,即是遵照了驼峰式大小写(Camel case)命名法。Camel case在这里被作者用来特指“小驼峰式大小写”(即首字母小写)命名法,Pascal case则特指“大驼峰式大小写”(即首字母大写)命名法。

    小驼峰式大小写命名法是由小写字母开始的,后续每个单词首字母大写,比如:var thisIsMyName;

    变量和函数

    变量名应当总是遵循驼峰大小写命名法,并且命名前缀应当是名词。

    而函数名前缀应当是动词,这样就可以让变量和函数区分开来。

    //好的写法
    var count = 10;
    var myName = "Nicholas";
    var found = true;
    
    //不好的写法:变量看起来像函数
    var getCount = 10;
    var isFound = true;
    
    //好的写法
    function getName(){
          return myName;
    }
    
    //不好的写法:函数看起来像变量
    function theName(){
          return myName;
    }
    

     通常来讲,命名长度应该尽可能短,并抓住要点。尽量在变量名中体现出值得数据类型。比如,命名count,length和size表明数据类型是数字,而命名name,title和message表明数据类型是字符串。但用单个字符命名的变量诸如i、j和k通常在循环中使用。使用这些能够体现出数据类型的命名,可以让你的代码容易被别人和自己读懂。

    要避免使用没有意义的命名。那些诸如foo,bar和tmp之类的命名也应当避免,当然开发者工具箱里还有很多这样可以随拿随用的名字,但不要让这些命名承载其他的附加含义。对于其他开发者来说,如果没有看过上下文,是无法理解这些变量的用处的。

    对于函数和方法命名来说,第一个单词应该是动词。这里有一些使用动词常见的约定。

    动  词 含  义
    can 函数返回一个布尔值
    has 函数返回一个布尔值
    is 函数返回一个布尔值
    get 函数返回一个非布尔值
    set 函数用来保存一个值

    尽管这些函数命名规则没有归纳入当下流行的编程风格中,但在很多流行的库中,JavaScript开发者会发现不少这种“伪标准”。

    jQuery显然并没有遵循这种函数命名约定,一部分原因在于jQuery中方法的使用方式,很多方法同时用作getter和setter。比如,$("body").attr("class")可以取到class属性的值。尽管如此,我们还是推荐使用动词作为函数名前缀。

    常量

    在ECMAScript 6 之前,JavaScript中并没有真正的常量的概念。然而,这并不能阻止开发者将变量用作常量。为了区分普通的变量和常量,一种通用的命名约定应运而生。这个约定源自于C语言,它使用大写字母和下划线来命名,下划线用以分隔单词,比如:

    var MAX_COUNT = 10;

    var URL = "http://www.nczonline.net/";

    需要注意的是,这里仅仅是应用了不同命名约定的变量而已。

    构造函数

    在JavaScript中,构造函数只不过是前面冠以new运算符的函数,用来创建对象。

    构造函数的命名遵循大驼峰命名法。这样做可以将构造函数从变量和普通函数中区分出来。构造函数的命名也常常是名词,因为它们是用来创建某个类型的实例的。

    <!--

    作者:纤锐
    出处:http://www.cnblogs.com/beginner2014
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。谢谢合作。

    -->

  • 相关阅读:
    bzoj2049 [Sdoi2008]Cave 洞穴勘测——LCT
    洛谷P2679 子串——DP
    bzoj3669 [Noi2014]魔法森林——LCT
    洛谷P3778 [APIO2017]商旅——01分数规划
    bzoj4196 [Noi2015]软件包管理器——树链剖分
    bzoj4881 线段游戏——上升序列方案数
    bzoj1426 (洛谷P4550) 收集邮票——期望
    bzoj1858 [Scoi2010]序列操作——线段树
    bzoj3626 [LNOI2014]LCA——树链剖分
    L The Digits String(没有写完,有空补)
  • 原文地址:https://www.cnblogs.com/beginner2014/p/5395265.html
Copyright © 2011-2022 走看看