浅谈JavaScript 代码整洁之道(15)

格式

格式是个很主观的东西,像这里提到的许多规则一,你不必完全遵循。要点不在于争论格式。大量工具 可以自动处理优化格式。用一个!让工程师争论格式问题简直就是在浪费时间和金钱。

对于那些不能自动处理的格式(可以自动处理的包括缩进、Tab或空格、双引号或单引用等),就看看这里的指导。

使用一致的大小写

JavaScript 是无类型的,所以大小写可以帮助你了解变量、函数等。这些规则具有较强的主观性,所以你的团队应该选择需要的。重点不在于你选择了什么,而在于要始终保持一致。

不好:

var DAYS_IN_WEEK = 7;
var daysInMonth = 30;

var songs = ['Back In Black', 'Stairway to Heaven', 'Hey Jude'];
var Artists = ['ACDC', 'Led Zeppelin', 'The Beatles'];

function eraseDatabase() {}
function restore_database() {}

class animal {}
class Alpaca {}

好:

var DAYS_IN_WEEK = 7;
var DAYS_IN_MONTH = 30;

var songs = ['Back In Black', 'Stairway to Heaven', 'Hey Jude'];
var artists = ['ACDC', 'Led Zeppelin', 'The Beatles'];

function eraseDatabase() {}
function restoreDatabase() {}

class Animal {}
class Alpaca {}

函数调用者和被调用者应该尽可能放在一起

如果一个函数调用另一个函数,那应该让他们在源文件中的位置非常接近。理想情况下应该把调用者放在被调用者的正上方,这会让你的代码更易读,因为我们都习惯从上往下读代码,就像读报纸那样。

不好:

class PerformanceReview {
 constructor(employee) {
  this.employee = employee;
 }

 lookupPeers() {
  return db.lookup(this.employee, 'peers');
 }

 lookupMananger() {
  return db.lookup(this.employee, 'manager');
 }

 getPeerReviews() {
  let peers = this.lookupPeers();
  // ...
 }

 perfReview() {
   getPeerReviews();
   getManagerReview();
   getSelfReview();
 }

 getManagerReview() {
  let manager = this.lookupManager();
 }

 getSelfReview() {
  // ...
 }
}

let review = new PerformanceReview(user);
review.perfReview();

好:

class PerformanceReview {
 constructor(employee) {
  this.employee = employee;
 }

 perfReview() {
   getPeerReviews();
   getManagerReview();
   getSelfReview();
 }

 getPeerReviews() {
  let peers = this.lookupPeers();
  // ...
 }

 lookupPeers() {
  return db.lookup(this.employee, 'peers');
 }

 getManagerReview() {
  let manager = this.lookupManager();
 }

 lookupMananger() {
  return db.lookup(this.employee, 'manager');
 }

 getSelfReview() {
  // ...
 }
}

let review = new PerformanceReview(employee);
review.perfReview();