编写可维护的javascript代码-读书心得

开文抄袭一段原文: 编程风格和编码规范是什么?编程风格是编码规范的一种,用来规约单文件中代码的规划。编码规范还包含编程最佳实践、文件和目录的规范及注释等方面。

下面按照书的目录进行整理一些心得

1. 基本格式化

缩进层级
分为两种,使用制表符和空格符进行缩进,缩进也有两个和四个符号的区别,个人觉得2个空格
符用的来比较舒服,但是也能接受其他的缩进要求,毕竟不可能每一个项目都是由你一个人去
开发。
语句结尾加分号,注意行的长度,换行,空行等格式用法。。。
命名
对于变量
    1. 驼峰式大小写
    2. 命名前缀是名词
对于函数
    1、函数名前缀应当是动词,函数一般是描述做什么的过程或者怎么实现的过程。
    2、构造函数,首字母大写
常量:大写字母和下划线来命名,下划线作为分割单词的分割符
直接量
字符串、数字、null、undefined、对象直接量、数组直接量的一些写法

2.注释

注释分为单行注释、多行注释、文档注释。需要注释的通行的指导原则是,当代码不够清晰时
添加注释,而当代码很明了时不应当添加注释。难于理解的代码、可能被误认为错误的代码
、浏览器特性hack都应当添加注释。

3.语句和表达式

花括号的对齐方式
1、将左花括号放置在块语句的第一句代码的末尾
2、将左花括号放置在块语句的首行的下一行
块语句的间隔
1、在语句名、圆括号和左花括号直接没有空格间隔
2、在左括号之前和右括号之后各添加一个空格
3、在左圆括号后和右圆括号前各添加一个空格
switch 语句,case语句的连续执行,with语句for循环,for-in循环

4.变量、函数和运算符

变量声明、函数声明:先声明后使用
函数调用间隔
在函数名和左括号直接没有空格。
立即执行的函数
var value = (function() {
    //函数体
    return {
        message: "hello world!"
    }
}())

严格模式

不推荐全局使用严格模式,在一些工具打包js文件时,有些会默认在全局加上"use strict"
相等
推荐使用 === 
== 的强制类型转换机制
1. 数字和字符串比较,字符串会首先转换为数字
2. 布尔值和数字进行比较,布尔值会先转换为数字
3. 如果一个值是对象另一个不是,则会先调用这个对象的valueOf方法,得到原始值再
进行比较,如果没有定义valueOf,则调用toString()方法。
eval 不推荐使用

5.UI层松耦合

1、什么是松耦合?
修改一个组件而不需要更改其他的组件,就叫松耦合。
2、将javascript从css中抽离、将css从javascript中抽离、将javascript从HTML中抽离、将HTML从javascript中抽离, 这里就不细说了,总之,记住三个原则就行
HTML是用来定义页面的数据和语义
CSS用来给页面添加样式,创建视觉特性。
JavaScript用来添加行为。

6.避免使用全局变量

全局变量带来的问题有:
    1、命名冲突
    2、代码的脆弱性
    3、难以测试、
2.避免意外的全局变量
3.单全局变量方式

7. 事件处理

在所有javascript应用中事件都是非常重要的。
1、隔离应用逻辑
2、不要分发事件对象

8.避免空比较

1、使用typeof检测原始值
2、使用instanceof 检测引用值
3、检测对象是否存在属性用 in 

9.将配置数据从代码中分离出来

1.配置数据,example: URL、需要展现给用户的字符串、重复的值、设置、任何可能发生变
更的值等。
2.抽离保存配置数据

10. 抛出自定义错误

1. 错误的本质
    当某些非期望的事情发生时程序就引发一个错误。
2. 在javascript中抛出错误
    使用throw语句,任何类型的对象都可以作为错误抛出,而Error对象是最常用的。
3. 抛出错误的好处
    抛出自己的错误可以使用确切的文本供浏览器显示。除了行和列的号码,还可以包含
任何你需要的有助于调试问题的信息。
4.何时抛出错误
(1) 一旦修复一个很难调试的错误,尝试增加一两个自定义错误。当再次发生错误时,
这将有助于更容易解决问题
(2)如果正在编写代码,思考一个:我希望[某些事情]不会发生,如果发生我的代码会一团
糟糕,这时,如果"某些事情"发生,就抛出一个错误。
(3)如果正在编写的代码的其他人也会使用,思考一个他们的使用方式,在特定的情况下
抛出错误。
tip: 我们的目的不是防止错误,而是在错误发生时能更加容易地调试。
5.try-catch语句
6.错误类型 (https://blog.csdn.net/wangweiren_get/article/details/80779509)

持续更新中。。。

猜你喜欢

转载自blog.csdn.net/wangweiren_get/article/details/80834251
今日推荐