js code standard - sibbay-ai/public GitHub Wiki

javascript 代码编写规范

2017-10-04

不符合规范的旧代码处理

  • 旧代码包含的不符合以下规范的代码,不统一处理,但进行 bugfix 和重构时,修改后的代码需要遵循代码规范。

变量命名方式

  • 根据 javascript 普遍的社区规范,变量与方法命名建议采用首字母小写的骆驼式,而不建议采用火车式

  • 示例:

    var first_item // 火车式,不建议
    var firstItem // 骆驼式,建议
    
    function get_name() {} // 火车式,不建议
    function getName() {} // 骆驼式,建议
  • 例外情况: 部分 API 请求返回的后端封装的数据对象中,一些属性的命名为火车式,此时相关的 js 代码可以灵活处理:

    getApp().api.user.get_family_member()
      .success((res)=> {
        let family_id = res.family_id
      })

代码注释

  • 所有自定义方法(即除去框架规定的方法,或一些生命周期方法如 onLoad)需要以 JSDoc 的方式进行方法注释,具体参考 JSDoc 文档:http://www.css88.com/doc/jsdoc/index.html

    /**
     * 我是一个示例方法
     * @param {string} x - 示例参数
     */
     exampleMethod: function(x) {}
  • 微信小程序的 page({}) 里定义的方法(除生命周期方法)需要按以上方式添加方法注释

  • 所有内在逻辑比较复杂的方法,需要酌情在方法体内添加注释,便于其他阅读代码的人理解

  • js 文件头部需要添加注释以说明该文件用途,编写人,修改人,例如:

    /**
     * utils.js
     * @usage 放置一些全局通用方法
     * @author @ben7th, ...
     */

代码缩进

  • 代码采用两格缩进
  • 采用两个空格缩进,而不是采用制表符缩进(注意调整编辑器的设置)
    function foo() {
      if (bar) {
        do.sth()
      }
    }

运算符两侧空格

  • 运算符两侧要求用空格隔开,例如:

    var a = b + c
    for (let i = 0; i <= 100; i++) { .. }
  • ++, 负号 等运算符不作此要求

  • 单行花括弧内部要用空格隔开,例如:

    setState({ visible: visible })
  • wxml, html, xml 等模板文档内,如果有花括弧,内部也要用空格隔开,例如:

    <view class="{{ view_class }}">{{ view_text }}</view>

es6 的方法定义

  • 使用 es6 风格定义方法时,需要给参数加上括弧,即使是单参数的方法也是如此,例如:
    const foo = ()=> {}
    const bar = (x)=> {}
    const fee = (x, y)=> {}

require 的位置

  • 所有 require 需要写在文件的顶层命名空间,而不能写在方法体或对象体里,例如:
    const foo = require('aaa/foo') // 可以
    
    const bar = function() {
      let foo = require('fee') // 不行
    }

if else 的写法

  • 采用这样的写法,else 部分不要额外换行:
    if (foo === bar) {
      // ..
    } else {
      // ..
    }

===

  • 所有判断变量是否相等的运算符,都要求写 === 而不写 ==
⚠️ **GitHub.com Fallback** ⚠️