格式化

格式化是一件主观的事。如同这里的许多规则一样,这里并没有一定/立刻需要遵守的规则。可以在这里完成格式的自动化。

大小写一致

JS 是弱类型语言,合理的采用大小写可以告诉你关于变量/函数等的许多消息。

这些规则是主观定义的,团队可以根据喜欢进行选择。重点在于无论选择何种风格,都需要注意保持一致性。

反例:

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

正例:

  1. var DAYS_IN_WEEK = 7;
  2. var DAYS_IN_MONTH = 30;
  3. var songs = ['Back In Black', 'Stairway to Heaven', 'Hey Jude'];
  4. var 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. lookupMananger() {
  9. return db.lookup(this.employee, 'manager');
  10. }
  11. getPeerReviews() {
  12. let peers = this.lookupPeers();
  13. // ...
  14. }
  15. perfReview() {
  16. getPeerReviews();
  17. getManagerReview();
  18. getSelfReview();
  19. }
  20. getManagerReview() {
  21. let manager = this.lookupManager();
  22. }
  23. getSelfReview() {
  24. // ...
  25. }
  26. }
  27. let review = new PerformanceReview(user);
  28. review.perfReview();

正例:

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