浅谈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();