格式化

格式化是主观的。 就像其它规则一样, 没有必须让你遵守的硬性规则。 重点是不要因为格式去争论, 这
里有大量的工具来自动格式化, 使用其中的一个即可! 因
为做为工程师去争论格式化就是在浪费时间和金钱。

针对自动格式化工具不能涵盖的问题(缩进、 制表符还是空格、 双引号还是单引号等), 这里有一些指南。

使用一致的大小写

JavaScript 是无类型的, 所以大小写告诉你关于你的变量、 函数等的很多事情。 这些规则是主观的,
所以你的团队可以选择他们想要的。 重点是, 不管你们选择了什么, 要保持一致。

不好的:

  1. const DAYS_IN_WEEK = 7;
  2. const daysInMonth = 30;
  3. const songs = ['Back In Black', 'Stairway to Heaven', 'Hey Jude'];
  4. const Artists = ['ACDC', 'Led Zeppelin', 'The Beatles'];
  5. function eraseDatabase() {}
  6. function restore_database() {}
  7. class animal {}
  8. class Alpaca {}

好的:

  1. const DAYS_IN_WEEK = 7;
  2. const DAYS_IN_MONTH = 30;
  3. const songs = ['Back In Black', 'Stairway to Heaven', 'Hey Jude'];
  4. const artists = ['ACDC', 'Led Zeppelin', 'The Beatles'];
  5. function eraseDatabase() {}
  6. function restoreDatabase() {}
  7. class Animal {}
  8. class Alpaca {}

函数的调用方与被调用方应该靠近

如果一个函数调用另一个, 则在代码中这两个函数的竖直位置应该靠近。 理想情况下,保持被调用函数在被
调用函数的正上方。 我们倾向于从上到下阅读代码, 就像读一章报纸。 由于这个原因, 保持你的代码可
以按照这种方式阅读。

不好的:

  1. class PerformanceReview {
  2. constructor(employee) {
  3. this.employee = employee;
  4. }
  5. lookupPeers() {
  6. return db.lookup(this.employee, 'peers');
  7. }
  8. lookupManager() {
  9. return db.lookup(this.employee, 'manager');
  10. }
  11. getPeerReviews() {
  12. const peers = this.lookupPeers();
  13. // ...
  14. }
  15. perfReview() {
  16. this.getPeerReviews();
  17. this.getManagerReview();
  18. this.getSelfReview();
  19. }
  20. getManagerReview() {
  21. const manager = this.lookupManager();
  22. }
  23. getSelfReview() {
  24. // ...
  25. }
  26. }
  27. const review = new PerformanceReview(user);
  28. review.perfReview();

好的:

  1. class PerformanceReview {
  2. constructor(employee) {
  3. this.employee = employee;
  4. }
  5. perfReview() {
  6. this.getPeerReviews();
  7. this.getManagerReview();
  8. this.getSelfReview();
  9. }
  10. getPeerReviews() {
  11. const peers = this.lookupPeers();
  12. // ...
  13. }
  14. lookupPeers() {
  15. return db.lookup(this.employee, 'peers');
  16. }
  17. getManagerReview() {
  18. const manager = this.lookupManager();
  19. }
  20. lookupManager() {
  21. return db.lookup(this.employee, 'manager');
  22. }
  23. getSelfReview() {
  24. // ...
  25. }
  26. }
  27. const review = new PerformanceReview(employee);
  28. review.perfReview();