浅谈JavaScript 代码简洁之道(12)
错误处理
不要忽略抛异常
Bad:
try { functionThatMightThrow(); } catch (error) { console.log(error); }
Good:
try { functionThatMightThrow(); } catch (error) { // 这一种选择,比起 console.log 更直观 console.error(error); // 也可以在界面上提醒用户 notifyUserOfError(error); // 也可以把异常传回服务器 reportErrorToService(error); // 其他的自定义方法 }
不要忘了在 Promises 抛异常
Bad:
getdata() .then((data) => { functionThatMightThrow(data); }) .catch((error) => { console.log(error); });
Good:
getdata() .then((data) => { functionThatMightThrow(data); }) .catch((error) => { // 这一种选择,比起 console.log 更直观 console.error(error); // 也可以在界面上提醒用户 notifyUserOfError(error); // 也可以把异常传回服务器 reportErrorToService(error); // 其他的自定义方法 });
代码风格
代码风格是主观的,争论哪种好哪种不好是在浪费生命。市面上有很多自动处理代码风格的工具,选一个喜欢就行了,我们来讨论几个非自动处理的部分。
常量大写
Bad:
const DAYS_IN_WEEK = 7; const daysInMonth = 30; const songs = ['Back In Black', 'Stairway to Heaven', 'Hey Jude']; const Artists = ['ACDC', 'Led Zeppelin', 'The Beatles']; function eraseDatabase() {} function restore_database() {} class animal {} class Alpaca {}
Good:
const DAYS_IN_WEEK = 7; const DAYS_IN_MONTH = 30; const SONGS = ['Back In Black', 'Stairway to Heaven', 'Hey Jude']; const ARTISTS = ['ACDC', 'Led Zeppelin', 'The Beatles']; function eraseDatabase() {} function restoreDatabase() {} class Animal {} class Alpaca {}
先声明后调用
就像我们看报纸文章一样,从上到下看,所以为了方便阅读把函数声明写在函数调用前面。
Bad:
class PerformanceReview { constructor(employee) { this.employee = employee; } lookupPeers() { return db.lookup(this.employee, 'peers'); } lookupManager() { return db.lookup(this.employee, 'manager'); } getPeerReviews() { const peers = this.lookupPeers(); // ... } perfReview() { this.getPeerReviews(); this.getManagerReview(); this.getSelfReview(); } getManagerReview() { const manager = this.lookupManager(); } getSelfReview() { // ... } } const review = new PerformanceReview(employee); review.perfReview();
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:http://www.heiqu.com/90.html