`

Arch-04-04-JavaScript代码规范

阅读更多

JavascriptCodingStandard  

Javascript 代码规范

规范理念

Any violation to this guide is allowed if it enhances readability.

所有的代码都要变成可供他人容易阅读的。

--引用自Dojo Javascript 语法规范

规范详解

命名规范

  1. 必须使用 Tab 键进行代码缩进,以节约代码大小(建议设置编辑器的tab为4个空格的宽度)
  2. 接口风格

 

结构 规则 例如
驼峰式 ModuleClass()
公有方法 混合式 getPosition()
公有变量 混合式 frameStyle
常量 大写式 DEFAULT_FRAME_LAYOUT

 

  1. 其他建议风格,非必要

 

结构 规则
私有方法 混合,例子:mixedCase
私有变量 混合,例子:mixedCase
方法(method)参数 混合,例子:mixedCase, mixedCase
本地(local)变量 混合,例子:mixedCase, mixedCase

 

  1. 所有语句结束后,必须使用 ; 号结束
  2. 所有变量必须是有意义的英文,严厉禁止拼音
  3. 变量允许使用公认英文缩写
  4. 类命名必须是驼峰式
  5. 常量必须所有单词大写,并且每个单词间加下划线
  6. 枚举类型时,枚举的命名必须有意义,枚举与枚举成员必须以驼峰式
  7. 常量和枚举必须在最前端定义,merge 时注意,必须把常量与枚举定义的文件放在文件列表的第一位
  8. 变量内的简写单词不能全大写XmlDocument strHtml
  9. "on"只能用作事件的命名
  10. 函数开头必须是有意义的动词或动词短语
  11. 私有类的变量属性成员 建议 使用混合式命名,并前面下下划线
  12. 临时的全局变量放到一个全局的哈希表里,方便变量回收
  13. 所有全局变量必须初始化,尽量少用全局变量
  14. 大括号前面不能有换行符
  15. 保留字以及特有的dom属性不能作为变量名

特殊命名约定

  1. 前面加 “is” 的变量名应该为布尔值,亦可使用 “can” “has” “should”
  2. 前面加 ”str” 的变量名应该为字符串
  3. 前面加 “arr” 的变量名应该为数组
  4. 前面加 “num” 或 “count” 的变量名应该为数字
  5. “o” 作为局部变量或参数,表示为Object
  6. “e” 作为局部变量或参数,表示为Element
  7. “evt” 作为局部变量或参数,表示为event
  8. “err” 作为局部变量或参数,表示为error
  9. 重复变量建议使用 "i", "j", "k" (依次类推)等名称的变量(全世界公认)
  10. 能缩写的单词尽量缩写
  11. 避免产生令人误解的布尔值 isNotNumber isNan
  12. 处理错误的变量,必须在后面跟着 “Error”
  13. 初始化用的函数 必须使用 “init” 开头,如果一个页面只有初始化可以单独使用 init()
  14. 尽量做有意义的代码折行,不要让一行代码过长。(HTML 字符串除外)
  15. 操作符 建议 使用空格隔开
  16. 函数调用和方法 避免 使用空白
  17. 逗号(,) 建议 使用空白隔开。
  18. 不允许频繁使用 previousSibling 和 nextSibling

词法结构

  1. 普通代码段应该看起来如下:
  2. while(!isDone){
          doSomething();
          isDone = moreToDo();
    }
  3. if 语句应该看起来像这样:
  4. if(someCondition){
            statements;
    }elseif(someOtherCondition){
        statements;
    }else{
        statements;
    }
  5. for 语句应该看起来像这样:
  6. for(initialization; condition; update){
            statements;
    }
  7. while 语句应该看起来像这样:
  8. while(!isDone){
            doSomething();
        isDone = moreToDo();
    }
  9. do ... while 语句应该看起来像这样:
  10. do{
            statements;
    }while(condition);
  11. switch 语句应该看起来像这样:
  12. switch(condition){
    case ABC:
        statements;
        //  fallthrough
    case DEF:
        statements;
        break;
    default:
            statements;
        break;
    }
  13. try ... catch 语句应该看起来像这样:
  14. try{
        statements;
    }catch(ex){
        statements;
    }finally{
        statements;
    }
  15. 单行的 if - else,while 或者 for 语句也必须加入括号:
  16. if(condition){ statement;}
    while(condition){ statement;}
    for(intialization; condition; update){ statement;}

注释规范

  1. 一些你不打算给其他人使用的函数,建议添加 @ignore 让文档输出时可以忽略这段注释
  2. 一些相关的功能相关的函数,建议加上@see Function 来对上下文做索引
  3. 对于一些函数不建议或则需要注意的使用方法,必须加上 @deprecated作为提醒
  4. 每个js文件的文件头都必须包含 @fileoverview @author, 建议加上@version
  5. 每个函数都必须使用JsDoc 来注释他的用意
  6. 每个带参数的函数必须包含 @param
  7. 每个有返回值的函数必须包含 @return
  8. 构造函数必须加上 @constructor
  9. 继承函数建议加上 @base 表示其继承于哪个类
  10. 常用全局变量建议使用 JsDoc 的注释方式
  11. 一般的变量及局部变量才用 // 方式进行注释,建议在需要做注释的语句的上一行
  12. 其他详情请参考 JsDoc 注释方法

其他

  1. String 优化
  2. 循环体内的字符串累加使用join方式。 例如:
            var r = [];
            for (var i=0;i<100;i++){
                    r.push("hello");
            }
            var k = r.join("");
  3. Switch 建议采用hash-table
  4. switch 可以才用 Object代替 例如:
            var a = {
                    "1":doAction1,
                    "2":doAction2,
            }
            
            function doAction1(){
     
            }
     
            function doAction2(){
     
            }
     
            a[1]();
  5. 不建议使用eval
  6. 不推荐使用eval来执行脚本。除非用来解释json数据。
  7. 注意 IE 的内存泄露问题

分享到:
评论

相关推荐

    apw:APW(Arch-Plan-Workers)——是`bem makeserver`命令构建系统的核心

    在JavaScript开发领域,APW扮演着一个至关重要的角色,它负责协调构建过程中的各个步骤,确保代码质量、可维护性和性能。 APW的核心概念围绕着“架构”(Arch)、“计划”(Plans)和“工作者”(Workers)这三个...

    ARCH4系统开发指南

    ARCH4系统开发指南 1 ARCH4开发小组 1 1 前言 7 1.1 文档编写目的 7 1.2 文档适用范围 7 1.3 修订历史 8 1.4 参考资料 8 2 常用功能处理方式 9 2.1 如何执行条件查询 9 2.1.1 查询示例 9 2.1.2 查询限制 9 2.1.2.1 ...

    .arch网页设计与制作考核方案.docx

    网页设计与制作是IT行业中的一项基础技能,主要涉及HTML、CSS和JavaScript等技术。这个考核方案专注于使用CSS来实现网页的布局...同时,良好的代码组织和注释也是评估的一部分,因为它们影响到代码的可读性和可维护性。

    social-arch:本文档对正在开发的所有社交技术和规范进行了广泛的研究,包括总结它们的贡献并跟踪它们的采用情况。 然后,该文档将演示如何将其中的一个子集用作统一架构

    本文档《social-arch》深度剖析了当前社交网络领域的技术和规范,旨在总结它们的核心贡献,并跟踪其在实际应用中的采纳状况。同时,它还提供了一个独特的视角,展示如何选取这些技术的一个子集,构建一个统一的社交...

    STM32+OLED_净水器水流量计源码.rar

    STM32+OLED_净水器水流量计源码.rar

    【机会约束】机会约束优化研究 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    ,,基于EKF的三相PMSM无传感器矢量控制,基于卡尔曼滤波器的无速度传感器 ,核心关键词:基于EKF的三相PMSM无传感器矢量控制; 基于卡尔曼滤波器的无速度传感器 ,基于EKF与卡尔曼滤波器的三相

    ,,基于EKF的三相PMSM无传感器矢量控制,基于卡尔曼滤波器的无速度传感器 ,核心关键词:基于EKF的三相PMSM无传感器矢量控制; 基于卡尔曼滤波器的无速度传感器。,基于EKF与卡尔曼滤波器的三相PMSM无传感器矢量控制研究

    56页-智慧双碳园区建设方案.pdf

    在智慧城市建设的大潮中,智慧园区作为其中的璀璨明珠,正以其独特的魅力引领着产业园区的新一轮变革。想象一下,一个集绿色、高端、智能、创新于一体的未来园区,它不仅融合了科技研发、商业居住、办公文创等多种功能,更通过深度应用信息技术,实现了从传统到智慧的华丽转身。 智慧园区通过“四化”建设——即园区运营精细化、园区体验智能化、园区服务专业化和园区设施信息化,彻底颠覆了传统园区的管理模式。在这里,基础设施的数据收集与分析让管理变得更加主动和高效,从温湿度监控到烟雾报警,从消防水箱液位监测到消防栓防盗水装置,每一处细节都彰显着智能的力量。而远程抄表、空调和变配电的智能化管控,更是在节能降耗的同时,极大地提升了园区的运维效率。更令人兴奋的是,通过智慧监控、人流统计和自动访客系统等高科技手段,园区的安全防范能力得到了质的飞跃,让每一位入驻企业和个人都能享受到“拎包入住”般的便捷与安心。 更令人瞩目的是,智慧园区还构建了集信息服务、企业服务、物业服务于一体的综合服务体系。无论是通过园区门户进行信息查询、投诉反馈,还是享受便捷的电商服务、法律咨询和融资支持,亦或是利用云ERP和云OA系统提升企业的管理水平和运营效率,智慧园区都以其全面、专业、高效的服务,为企业的发展插上了腾飞的翅膀。而这一切的背后,是大数据、云计算、人工智能等前沿技术的深度融合与应用,它们如同智慧的大脑,让园区的管理和服务变得更加聪明、更加贴心。走进智慧园区,就像踏入了一个充满无限可能的未来世界,这里不仅有科技的魅力,更有生活的温度,让人不禁对未来充满了无限的憧憬与期待。

    BST的S变换的批处理研究 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    书房中如何利用镜面增加空间感与光线.doc

    书房中如何利用镜面增加空间感与光线

    电动汽车充电站的最优选址和定容【两种方法】 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    ,,pmsm电阻电感磁链常数辨识源码 电阻,电感,磁链常数辨识 程序在ti dsp实现 在ti开源foc框架基础上开发 能够辨识电机电阻,电感,磁链常数 精度较高,能够满足foc控制需要

    ,,pmsm电阻电感磁链常数辨识源码 电阻,电感,磁链常数辨识。 程序在ti dsp实现。 在ti开源foc框架基础上开发。 能够辨识电机电阻,电感,磁链常数。 精度较高,能够满足foc控制需要。 辨识时间短,大约两秒完成电阻电感辨识。 磁链辨识需要电机旋转。 多次辨识,结果一致性好。 辨识部分代码不包含寄存器操作,易于跨平台移植。 辨识大致原理: 电阻辨识发一个固定的电压矢量,检测电流 电感辨识发一个高频旋转的电压矢量,检测电流,计算感抗。 磁链辨识通过if控制让电机旋转,通过电压电流模型计算转子磁链分量。 ,PMSM; 电阻电感磁链常数辨识; TI DSP实现; TI开源FOC框架; 电机参数辨识; 高精度; 短辨识时间; 跨平台移植; 电阻辨识原理; 电感辨识原理; 磁链辨识原理。,基于TI DSP的PMSM电阻电感磁链常数快速高精度辨识源码

    ,,三菱,FX3U,plc程序模板和触摸屏程序模板,适用于运动轴控制,程序可以在自动的时候暂停进行手动控制,适用于一些中大型设备,可以防止某个气缸超时时,处于自动模式,能够轻松处理,处理完成后,恢复原

    ,,三菱,FX3U,plc程序模板和触摸屏程序模板,适用于运动轴控制,程序可以在自动的时候暂停进行手动控制,适用于一些中大型设备,可以防止某个气缸超时时,处于自动模式,能够轻松处理,处理完成后,恢复原来的气缸,解除暂停即可,思路清晰,编程效率大大提高,程序里附带和仪表的无协议通讯,并且附带最常用的手册。 ,关键词:三菱;FX3U;PLC程序模板;触摸屏程序模板;运动轴控制;自动/手动控制;气缸超时处理;无协议通讯;编程效率;最常用手册。,三菱FX3U PLC程序模板:中大型设备运动轴控制与气缸超时保护

    Matlab实现基于BO贝叶斯优化Transformer结合GRU门控循环单元时间序列预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文介绍了使用 Matlab 实现基于 BO(贝叶斯优化)的 Transformer 结合 GRU 门控循环单元时间序列预测的具体项目案例。文章首先介绍了时间序列预测的重要性及其现有方法存在的限制,随后深入阐述了该项目的目标、挑战与特色。重点描述了项目中采用的技术手段——结合 Transformer 和 GRU 模型的优点,通过贝叶斯优化进行超参数调整。文中给出了模型的具体实现步骤、代码示例以及完整的项目流程。同时强调了数据预处理、特征提取、窗口化分割、超参数搜索等关键技术点,并讨论了系统的设计部署细节、可视化界面制作等内容。 适合人群:具有一定机器学习基础,尤其是熟悉时间序列预测与深度学习的科研工作者或从业者。 使用场景及目标:适用于金融、医疗、能源等多个行业的高精度时间序列预测。该模型可通过捕捉长时间跨度下的复杂模式,提供更为精准的趋势预判,辅助相关机构作出合理的前瞻规划。 其他说明:此项目还涵盖了从数据采集到模型发布的全流程讲解,以及GUI图形用户界面的设计实现,有助于用户友好性提升和技术应用落地。此外,文档包含了详尽的操作指南和丰富的附录资料,包括完整的程序清单、性能评价指标等,便于读者动手实践。

    分布式光伏储能系统的优化配置方法 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    UQP 启发式方法研究 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    自驾游中的导航技巧提升.doc

    自驾游中的导航技巧提升

    各个操作系统版本的gdal2.4库(包括win32、win64、centos7、centosAarch64、c#、linux32、ubuntu64)

    各个操作系统版本的gdal2.4库(包括win32、win64、centos7、centosAarch64、c#、linux32、ubuntu64)。 GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。以下是对GDAL库的详细介绍: 全称:Geospatial Data Abstraction Library 性质:开源栅格空间数据转换库 用途:进行数据转换和处理 开发语言:C/C++ 数据格式支持:GDAL支持大量的栅格和矢量数据格式,包括常见的地理空间数据格式如GeoTIFF、ESRI Shapefile、GeoJSON、NetCDF、GML等,以及一些专用格式。 数据读取和写入:GDAL可以从不同的数据源中读取地理空间数据,例如文件、数据库、网络服务等,并且可以将数据写入到不同的输出格式。 数据转换和处理:GDAL可以进行各种数据转换和处理操作,包括坐标系转换、重采样、镶嵌、裁剪、投影变换等。此外,它还提供了图像处理和分析功能,如颜色空间转换、直方图均衡化、图像融合、图像代数等。

    漫画作品与人工智能想象.doc

    漫画作品与人工智能想象

Global site tag (gtag.js) - Google Analytics