2009-11-30 11 views
7

Chúng tôi có một CMS được xây dựng trên Java và nó có Mozilla Rhino cho JS phía máy chủ. Hiện tại cơ sở mã JS nhỏ nhưng đang phát triển. Trước khi quá muộn và mã đã trở thành một mớ hỗn độn kinh khủng, tôi muốn giới thiệu một số thực hành tốt nhất và phong cách mã hóa.Thực tiễn tốt nhất về phía máy chủ Javascript?

Rõ ràng việc kiểm soát không gian tên là khá quan trọng. Nhưng làm thế nào về thực hành tốt nhất khác - đặc biệt là cho các lập trình viên Java?

+2

Có quá muộn để cổng nó để Node.js? – Nosredna

+0

Lợi ích của việc sử dụng node.js là gì? –

+0

Tôi mới bắt đầu sử dụng nút ngày hôm nay và đã viết máy chủ tài liệu mini đầu tiên của mình (cần thiết cho các tác vụ tích hợp liên tục khác nhau mà tôi làm việc). Nhìn vào tê giác trước đây, tôi rất thích sự đơn giản, IMHO, của nodejs. – jeremyosborne

Trả lời

20

Dưới đây là một số lời khuyên từ các đường phía trước:

  • Giống như Java, docblocks sử dụng trong Doxygen phong cách/JsDoc cho các chức năng
  • kiểm tra đơn vị. Cá nhân như JsTestDriver, vì nó có thể được thực hiện tự động từ máy chủ CI quá.
  • Sử dụng JSLint. Nó sẽ nitpick về mã xấu
  • Cân nhắc sử dụng Trình biên dịch đóng cửa của Google. Nó sẽ nitpick về mã như JSLint, nhưng nó có thể hữu ích cho đốm khối tài liệu nghèo vv.
  • Hãy chắc chắn rằng tất cả mọi người trong nhóm của bạn hiểu cách đóng cửa hoạt động.Nếu không nó sẽ dẫn đến đau đầu
  • Như bạn đề cập đến, không gian tên rất quan trọng đặc biệt là nếu bạn muốn mã của bạn để làm việc thoải mái với các thư viện JS khác (var myns = myns || {};)
  • Cá nhân tôi tìm cách sử dụng một thư viện cung cấp OOP giúp đỡ như lớp học vv Hữu ích. Bạn có thể sử dụng thừa kế prototypal nhưng nó thường phức tạp hơn một chút theo cách đó.
+1

+1 cho bạn. Tôi sẽ viết ra câu trả lời của riêng tôi, nhưng sự thật đơn giản là bạn đánh hầu hết các điểm chung, đơn giản như họ, không ai thực sự làm. Tôi có thể nhắc lại bullet # 1 và # 2, tôi không biết những gì được đưa vào đầu của các nhà phát triển JS, nó giống như họ nghĩ bởi vì họ viết JavaScript họ bị loại bỏ khỏi các thực hành lập trình tốt. – jeremyosborne

+0

Tôi có thể nhắc lại đề xuất JSLINT và thêm rằng điều này sẽ thay thế bước biên dịch trong bất kỳ thiết lập tích hợp liên tục nào mà bạn có. Nếu mã không JSLINT, nó không nên được kiểm tra vào kho lưu trữ. Một số người không đồng ý với một số kiểm tra mà JSLINT làm, nhưng tôi phải nhấn mạnh rằng việc tích hợp JSLINT theo cách này sẽ ngăn chặn các lỗi SYNTAX, phá vỡ các mã hoạt động khác, không được tích hợp vào một sản phẩm. – Breton

+0

Và hãy chắc chắn sử dụng JSLint chứ không phải Javascript lint. Họ là hai sản phẩm riêng biệt. Nó không phải là lint javascript là xấu, nhưng nó không bắt globals ngầm, và JSLINT nào. Mã của bạn không nên có bất kỳ hình cầu ngụ ý nào mà bạn không biết. JSLint cũng cung cấp một cách để bạn khai báo tất cả các hình cầu mà bạn biết trong một nhận xét được định dạng đặc biệt. Có nhận xét này ở phần đầu của mọi tệp .js là cực kỳ hữu ích, dù sao, hay không. – Breton

1

Vì bạn có một công cụ JS trong Java, hãy tạo thói quen viết các bài kiểm tra đơn vị cho mã JS của bạn. Chọn một kiểu mã hóa và áp dụng nó một cách mạnh mẽ. Nếu có thể, hãy sử dụng các công cụ để kiểm tra xem mã có gửi đến kiểu mã hóa hay không.

3

Tôi sẽ xem CommonJS (trước đây là ServerJS). Đó là một công việc đang được tiến hành, nhưng họ có một hệ thống mô-đun tiêu chuẩn hóa với một số triển khai. Đã có một số thư viện hữu ích được viết cho thông số CommonJS, như Narwhal.

2

Như Douglas Crockford thích nói, JavaScript là ngôn ngữ lập trình bị hiểu lầm nhiều nhất trên thế giới. Mặc dù nhiều người không biết, có một cách phải cách để mã bằng JavaScript. Tôi không có nghi ngờ rằng nếu bạn để các nhà phát triển Java bắt đầu viết mã trước khi hiểu cách viết JavaScript tốt, bạn sẽ gặp rắc rối nghiêm trọng.

Điều đầu tiên cần làm là nên để đảm bảo tất cả mọi người đã đọc bài viết tuyệt vời của Mozilla, A tái giới thiệu về JavaScript (https://developer.mozilla.org/en/a_re-introduction_to_javascript). Một trong những vấn đề lớn nhất với JavaScript là có nhiều cách để thực hiện các tác vụ phổ biến nhất và bài viết này sẽ đưa mọi người vào cùng một trang. Một tài liệu tham khảo cần thiết khác là công việc của Douglas Crockford, bao gồm JavaScript: The Good Parts.

Một điều khác nhận được rất nhiều lập trình viên Java/C++ là JavaScript sử dụng chức năng phạm vi KHÔNG chặn phạm vi. Điều này có thể gây ra một số vấn đề rất phức tạp. Có một bài viết tuyệt vời về vấn đề này tại A List Apart được gọi là Binding in JavaScript.


Để tóm tắt các vấn đề chính được nói đến trong các nguồn lực trên, sự khác biệt quan trọng nhất để tìm hiểu là

  • làm thế nào để viết mã hướng đối tượng sử dụng thừa kế nguyên chủng (vs.class dựa thừa kế)
  • cách sử dụng bao đóng và lambdas
  • cách tận dụng sức mạnh của các đối tượng động
  • cách viết mã có chức năng