笔者菜鸟里最不会飞的那个,所以这些基础的习惯都没养成,正好抽时间特意做个笔记以方便自己规范代码, 有兴趣的大佬多多指点.

养成好的编码习惯收益良多, 总结下编码时应注意的细节《借鉴高程里代码约束》,对了默默吐槽下,说是前端不需要英语基础的那些机构们真的是为了钱失了智;

a .命名约束:匈牙利命名/驼峰命名/帕斯卡命名法

匈牙利命名:此命名方法可细分为系统匈牙利命名法和匈牙利应用命名法。

  -> 语法:变量名 = 类型 + 描述

  ->约定类型:

    a --- array

    o --- object

    s --- string

    l --- float

    fn --- function

    i --- int

    r --- regular

    b --- boolean

驼峰命名(小驼峰命名法):第一个单词以小写字母开始,后面的所有单词的首字母都采用大写字母;

帕斯卡命名(大驼峰命名法):每一个单字的首字母都大写;

1.变量命名: 名词

2.方法命名: 动词

->常见动词约定:

  can ---  判断是否可执行某个动作

  has --- 判断是否有某个值

  is ---  判断是否为某个值

  get --- 获取某个值

  set --- 设置某个值

  load --- 加载一些数据

3.特殊函数/变量非硬性约定命名:

  1): 常量:全部大写单词之间用"_"划分;

  2): 构造函数: 大驼峰命名;

  3): 私有成员(属性/方法): 以"_"为前缀;

b. 编码非硬性原则:

1.事件Event对象不传递, 如有需要只传需要的数据即可;

2.应用层逻辑可以不依赖任何行为进行;

3.事件层只处理事件;

4.代码职责单一 ;

5.尊重对象所有权即只修改自己创建的对象;

6.避免全局变量;

c. 代码性能

0.避免全局查找与尽量减少查找作用域链长度;

1.不直接使用eval而是间接使用;.

2.with,setTimeout第一个参数字符形式,Function 避免使用;

3.循环优化

  ->减值迭代

  ->简化终止条件

  ->简化循环体

  ->尽量使用后测试循环即 do-while

4.最小化语句数;

5.对数值操作位运算更快;

6.优化dom操作(这块有很多东西需要研究一时半会也就不分享了);

7.避免使用混合比较"==”;

8.js分号的自动插入规则:

  1.在一行/一个代码块/一段程序结束

  2.在随后的输入标记不能解析时

  3.for循环中的分号不会自动补全

9.永远不去修改arguments对象

10、不对函数使用toString()方法获取源码;

    function(y){
      return x+y;
    }.bind(16).toString();

    //function () { [native code] }

  因为bind由宿主环境提供的,在宿主环境下是没有js源代码可以显示, 而ecma标准是允许js引擎改变toString()的输出;

11.不使用__proto__的修改任何属性

12. 循环中避免修改值

13.迭代优于循环;

14.有序集合优先用数组

15.不在prototype对象上增加可枚举属性;

16.不过度使用强制类型转换

17.不在同步方法中调用异步回调;

d:代码注释常用标识符:

1.@author 程序的作者说明

2.@version 源文件的版本说明

3.@param 方法的参数说明

4.@deprecated 不建议的使用方法

5.@return 方法的返回值的说明信息

6.@see 参见,用于指定参考内容

7.@exception 抛出的异常类型

8.@throws 抛出的异常

9.@example 示例代码

笔记这么多.慢慢培养了;

web开发之菜鸟的代码规范的更多相关文章

  1. 团队开发前端VUE项目代码规范

    团队开发前端VUE项目代码规范 2018年09月22日 20:18:11 我的小英短 阅读数 1658   一.规范目的: 统一编码风格,命名规范,注释要求,在团队协作中输出可读性强,易维护,风格一致 ...

  2. 【Android 应用开发】 Android 相关代码规范 更新中 ...

    . 简介 : Android 常用的代码结构, 包括包的规范, 测试用例规范, 数据库模块常用编写规范; 参考 : 之前写的一篇博客 [Android 应用开发] Application 使用分析 ; ...

  3. React Native开发的一种代码规范:Eslint + FlowType

    [这篇随笔记录的很简单,没有涉及具体的Eslint规则解释以及FlowType的类型说明和使用等,只是链接了所需的若干文档] js开发很舒服,但是代码一多起来就参差不齐,难以阅读了.所以加上一些代码规 ...

  4. 移动Web开发,4行代码检测浏览器是否支持position:fixed

    不废话,直接上代码 var div = document.createElement('div'); div.style.cssText = 'display:none;position:fixed; ...

  5. iPhone开发:Objective C 代码规范-iOS总结版

    一,关于空行 A:.h中的空行 1,文件说明与头文件包涵(#import)之间空1行 2,头文件包涵(#import)之间,如果需要分类区别,各类别之间空1行 3,头文件包涵(#import)与@cl ...

  6. JavaScript开发中常用的代码规范配置文件

    一.jsconfig.json { compilerOptions: { target: 'es6', experimentalDecorators: true, allowSyntheticDefa ...

  7. 几款web开发常用jquery特效代码

    特效网:http://www.xwcms.net  1.图片拖动特效http://www.xwcms.net/js/tpdm/32946.html2.弹出层焦点图特效:http://www.xwcms ...

  8. C# Web开发打开下载对话框代码

    一个按钮的事件中写: string filename = Sever.UrlEncode("词库.txt"); Response.AddHeader("Content-D ...

  9. 开发一个项目之代码规范ESLint

    ESLint{ "rules": { "semi": ["error", "always"], } }error lev ...

随机推荐

  1. 深度学习原理与框架-递归神经网络-RNN_exmaple(代码) 1.rnn.BasicLSTMCell(构造基本网络) 2.tf.nn.dynamic_rnn(执行rnn网络) 3.tf.expand_dim(增加输入数据的维度) 4.tf.tile(在某个维度上按照倍数进行平铺迭代) 5.tf.squeeze(去除维度上为1的维度)

    1. rnn.BasicLSTMCell(num_hidden) #  构造单层的lstm网络结构 参数说明:num_hidden表示隐藏层的个数 2.tf.nn.dynamic_rnn(cell, ...

  2. 富文本编辑器summerNote

    载入富文本: $('.summernote').summernote({ height: 220, tabsize: 2, lang: 'zh-CN' }); 富文本获取内容: $('.summern ...

  3. 如何将R中的data frame对象的数据导入到DB

    在使用ARIMA模型来预测我们的销量的时候,如果保存预测版本进DB,以供后续分析呢 1. 在定义变量阶段我们定义了dfResult      <- data.frame() 这是一个data f ...

  4. # 20175213 2018-2019-2 《Java程序设计》第2周学习总结

    ## 教材学习内容总结 在第二周的学习过程中,我学习了第二章和第三章的内容.第二章中,我学习了基本数据类型和类型转换运算以及与C语言有着相同和不同的数组.标识符由字母,下划线,美元符号和数字组成,并且 ...

  5. MFC笔记4

    1.添加图片 1)静态加载图片,直接在resourceView中控件设置就可以以实现 2)动态加载时,按照鸡啄米的教程http://www.jizhuomi.com/software/193.html ...

  6. 微探eventlet.monkey_patch

    e ventlet.monkey_patch在运行时动态修改已有的代码,而不需要修改原始代码 在eventlet.monkey_patch中支持以下几种python原生库修改 eventlet.mon ...

  7. 二叉搜索树与双向链表(python)

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. # -*- coding:utf-8 -*- # class TreeNo ...

  8. Linux磁盘配额

    Step1:修改fstab文件,增加磁盘限额用户和用户组信息 # /etc/fstab# Created by anaconda on Sat Dec 29 04:48:18 2018## Acces ...

  9. FortiGate高校图书馆SSLvpn配置案例

    1.组网及需求 某高校有一台FGT系列防火墙放置于互联网出口,拓扑如下图: 现需求通过组建sslvpn web代理模式和隧道模式以实现: 1.web代理模式:能访问 http://lib.xxxx.e ...

  10. 498. Diagonal Traverse对角线z型traverse

    [抄题]: Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in dia ...