首页 web前端 js教程 让你的JavaScript编码更加规范

让你的JavaScript编码更加规范

Mar 24, 2017 pm 02:59 PM
javascript

在实际工作中,我们应该经常会看到一些功能上没有问题,但编码风格和规范却十分糟糕的代码,这往往会让人不敢再往下阅读,甚至会影响阅读者一天的心情。本文的目的在于帮助那些没有养成良好的编码风格,缺乏相应编码规范意识的JavaScript学习者们改善他们的编码形象。

前言

在实际工作中,我们应该经常会看到一些功能上没有问题,但编码风格和规范却十分糟糕的代码,这往往会让人不敢再往下阅读,甚至会影响阅读者一天的心情。这些代码不仅不易阅读,而且难以维护,它们一般会出自刚入门的编程新手,也会出自工作了好几年的老程序员手下。因此本文的目的在于帮助那些没有养成良好的编码风格,缺乏相应编码规范意识的JavaScript学习者们改善他们的编码形象。

编码形象

以上我提出了编码形象的概念,我个人认为:

编码形象 = 编码风格 + 编码规范

一个良好的编码形象就等于一个穿着得体的青年,对于程序员来说这是同行了解你优秀能力的最直接最简单的方式。

我们来看一下一段糟糕的编码形象:

//打个招呼
function func(){
 var age=18,sex='man';
 var greeting='hello';
 if(age<=18&&sex==&#39;man&#39;){
 console.log(greeting+&#39;little boy&#39;)
 }
 ...
}
func()
登录后复制

上方代码整体缩在了一起,缺乏规范意识,阅读体验很差,不忍直视。

再来看一段良好的代码形象:

// 打个招呼
function greetFn() {
 var age = 18,
 sex = &#39;man&#39;,
 greeting = &#39;hello&#39;;
 if (age <= 18 && sex === &#39;man&#39;) {
 console.log(greeting + &#39;little boy&#39;);
 }
 ...
};
greetFn();
登录后复制

上方的代码是不是感觉舒服多了?

由此可见养成一个良好的编码形象是至关重要的,而本文主要讲解的是基于JavaScript的编码形象,即基于JavaScript的编码风格和编码规范。

那么什么是编码风格,什么是编码规范,两者的区别又是什么?

编码风格

首先编码风格既然是风格,就没有对错之分。就好比每个人的穿着打扮不同,有的人穿的比较得体,有的人穿的比较随意而已。

而在JavaScript编码风格中,也有一套比较得体的风格,尤其在团队开发中,我们不能随意的书写属于自己的风格。

下面就列举几种随意的编码风格,并将其与良好的编码风格进行对比。

1.合理注释

// 不推荐的写法
var name = &#39;劳卜&#39;;//代码和注释之间没有间隔

if (name) {
 /*
 *注释之前无空行
 *星号后面无空格
 */
}
登录后复制
// 推荐的写法
var name = &#39;劳卜&#39;; // 代码和注释之间有间隔

if (name) {
 /*
 * 注释之前有空行
 * 星号后面有空格
 */
}
登录后复制

2.合理间隔

// 不推荐的写法
var name=&#39;劳卜&#39;; // 等号和两侧之间没有间隔

// if块级语句间没有间隔
if(name){
 console.log(&#39;hello&#39;);
}
登录后复制
// 推荐的写法
var name = &#39;劳卜&#39;; // 等号和两侧之间有间隔

// if块级语句间有间隔
if (name) {
 console.log(&#39;hello&#39;);
}
登录后复制

3.合理缩进

// 不推荐的写法:没有合理缩进
function getName() {
console.log(&#39;劳卜&#39;); 
}
登录后复制
// 推荐的写法:合理缩进
function getName() {
 console.log(&#39;劳卜&#39;);
}
登录后复制

4.合理空行

// 不推荐的写法: 代码功能块之间没有空行
function getName() {
 var name = &#39;劳卜&#39;;
 if (name) {
 console.log(&#39;hello&#39;);
 }
}
登录后复制
// 推荐的写法:代码功能块之间有空行
function getName() {
 var name = &#39;劳卜&#39;;

 if (name) {
 console.log(&#39;hello&#39;);
 }
}
登录后复制

5.合理命名

// 不推荐的写法
var getName = &#39;劳卜&#39;; // 变量命名前缀为动词

// 函数命名前缀为名词
function name() {
 console.log(&#39;hello&#39;);
}
登录后复制
// 推荐的写法
var name = &#39;劳卜&#39;; // 变量命名前缀为名词

// 函数命名前缀为动词
function getName() {
 console.log(&#39;hello&#39;);
}
登录后复制

6.合理声明

// 不推荐的写法:函数在声明之前使用
getName(); 

function getName() {
 console.log(&#39;hello&#39;);
}
登录后复制
// 推荐的写法:函数在声明之后使用
function getName() {
 console.log(&#39;hello&#39;);
}

getName();
登录后复制

7.合理结尾

// 不推荐的写法:没有使用分号结尾
var name = &#39;劳卜&#39; 

var getName = function() {
 console.log(&#39;hello&#39;)
}
登录后复制
// 推荐的写法:使用分号结尾
var name = &#39;劳卜&#39;; 

var getName = function() {
 console.log(&#39;hello&#39;);
};
登录后复制

以上主要列举了7个比较常见的编码风格的例子进行了比较,在推荐的写法和不推荐的写法中两者并没有对错之分,只是推荐的写法相比较而言更容易阅读和维护,更适用于团队开发,也是良好编码形象的体现。

编码规范

对于编码规范,既然是规范,那我们就应该按照一定的规则来编写。随意编写违反编码规范的代码,可能会导致程序的出错和潜在的bug,因此其相对于编码风格来说应该更加严谨,也有人会把编码风格包含在编码规范之中。

下面就列举几个常见的实例代码:

1.比较参数

// 不推荐的写法:==和!=比较时会进行类型转换,应尽量避免使用
var num = 123;

if (num == &#39;123&#39;) {
 console.log(num);
} else if (num != &#39;321&#39;) {
 console.log(&#39;321&#39;);
}
登录后复制
// 推荐的写法:使用===和!==来进行比较
var num = 123;

if (num === &#39;123&#39;) {
 console.log(num);
} else if (num !== &#39;321&#39;) {
 console.log(&#39;321&#39;);
}
登录后复制

2.包裹if语句

// 不推荐的写法:if语句不用大话号包裹会出现潜在bug
var num = 123;
if (num === &#39;123&#39;)
 console.log(num);
登录后复制
// 推荐的写法:if语句用大话号包裹
var num = 123;
if (num === &#39;123&#39;) {
 console.log(num);
}
登录后复制

3.慎用eval

// 不推荐的写法:应避免使用eval,不安全,非常耗性能(一次解析成js语句,一次执行)
var json = &#39;{"name": "劳卜", "func": alert("hello")}&#39;;
eval(&#39;(&#39; + json + &#39;)&#39;); // 弹出“hello”
登录后复制
// 推荐的写法
var json = &#39;{"name": "劳卜", "func": alert("hello")}&#39;;
JSON.parse(json); // 校验报错
登录后复制

4.判断类型

// 不推荐的写法:用typeof来判断构造函数创建的对象
var str = new String(&#39;劳卜&#39;); 
console.log(typeof str); // &#39;object&#39;
登录后复制
// 推荐的写法:用instanceof来判断构造函数创建的对象
var str = new String(&#39;劳卜&#39;); 
console.log(str instanceof String); // true
登录后复制

5.检测属性

// 不推荐的写法:使用undefined和null来检测一个属性是否存在
if (obj[&#39;name&#39;] !== undefined) {
 console.log(&#39;name属性存在&#39;); // 若obj.name为undefined时则会导致判断出错
}
if (obj[&#39;name&#39;] !== null) {
 console.log(&#39;name属性存在&#39;); // 若obj.name为null时则会导致判断出错
}
登录后复制
// 推荐的写法:使用in运算符来检测对象属性是否存在,使用hasOwnProperty方法来检测不包含原型链上的对象属性是否存在
if (&#39;name&#39; in obj) {
 console.log(&#39;name属性存在&#39;);
}
if (obj.hasOwnProperty(&#39;name&#39;)) {
 console.log(&#39;name属性存在&#39;);
}
登录后复制

以上主要列举了5个常见的编码规范的例子,合理地规范自己的代码能够很大程度上减少不必要的维护成本和潜在的bug风险,对于JavaScript学习者来说应该铭记于心。

结语

“程序是写给人读的,只是偶尔让计算机执行一下。”我们不能为了贪图一时的方便而亲手毁了自己的代码形象,这会给他人和整个项目带来不必要的麻烦。

以上是让你的JavaScript编码更加规范的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用WebSocket和JavaScript实现在线语音识别系统 如何使用WebSocket和JavaScript实现在线语音识别系统 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

WebSocket与JavaScript:实现实时监控系统的关键技术 WebSocket与JavaScript:实现实时监控系统的关键技术 Dec 17, 2023 pm 05:30 PM

WebSocket与JavaScript:实现实时监控系统的关键技术引言:随着互联网技术的快速发展,实时监控系统在各个领域中得到了广泛的应用。而实现实时监控的关键技术之一就是WebSocket与JavaScript的结合使用。本文将介绍WebSocket与JavaScript在实时监控系统中的应用,并给出代码示例,详细解释其实现原理。一、WebSocket技

如何利用JavaScript和WebSocket实现实时在线点餐系统 如何利用JavaScript和WebSocket实现实时在线点餐系统 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket实现实时在线点餐系统介绍:随着互联网的普及和技术的进步,越来越多的餐厅开始提供在线点餐服务。为了实现实时在线点餐系统,我们可以利用JavaScript和WebSocket技术。WebSocket是一种基于TCP协议的全双工通信协议,可以实现客户端与服务器的实时双向通信。在实时在线点餐系统中,当用户选择菜品并下单

如何使用WebSocket和JavaScript实现在线预约系统 如何使用WebSocket和JavaScript实现在线预约系统 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript实现在线预约系统在当今数字化的时代,越来越多的业务和服务都需要提供在线预约功能。而实现一个高效、实时的在线预约系统是至关重要的。本文将介绍如何使用WebSocket和JavaScript来实现一个在线预约系统,并提供具体的代码示例。一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工

JavaScript和WebSocket:打造高效的实时天气预报系统 JavaScript和WebSocket:打造高效的实时天气预报系统 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的实时天气预报系统引言:如今,天气预报的准确性对于日常生活以及决策制定具有重要意义。随着技术的发展,我们可以通过实时获取天气数据来提供更准确可靠的天气预报。在本文中,我们将学习如何使用JavaScript和WebSocket技术,来构建一个高效的实时天气预报系统。本文将通过具体的代码示例来展示实现的过程。We

简易JavaScript教程:获取HTTP状态码的方法 简易JavaScript教程:获取HTTP状态码的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

javascript中如何使用insertBefore javascript中如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用于在DOM树中插入一个新的节点。这个方法需要两个参数:要插入的新节点和参考节点(即新节点将要被插入的位置的节点)。

JavaScript和WebSocket:打造高效的实时图像处理系统 JavaScript和WebSocket:打造高效的实时图像处理系统 Dec 17, 2023 am 08:41 AM

JavaScript是一种广泛应用于Web开发的编程语言,而WebSocket则是一种用于实时通信的网络协议。结合二者的强大功能,我们可以打造一个高效的实时图像处理系统。本文将介绍如何利用JavaScript和WebSocket来实现这个系统,并提供具体的代码示例。首先,我们需要明确实时图像处理系统的需求和目标。假设我们有一个摄像头设备,可以采集实时的图像数

See all articles