Tôi có một số kinh nghiệm với scala. Tôi muốn giới thiệu nó vào dự án mới với 10 thành viên. Nhưng mặc dù tất cả sự biểu cảm của scala, tôi rất không chắc chắn về cách đơn giản mã có thể được duy trì và chuyển giao cho các thành viên trong nhóm mới. Tại thời điểm này tôi đã nghiên cứu chỉ có một dự án lớn trên một scala http://code.google.com/p/factorie/ và một số scala DSL (apache lạc đà). Vì vậy, câu hỏi của tôi là bao nhiêu scala duy trì/hỗ trợ so với java, python và groovy cho đội ngũ các nhà phát triển cấp trung?Mã scala có thể duy trì được không?
Trả lời
Nói chung: khả năng bảo trì của codebase phụ thuộc vào (đến tên một vài)
- Ý chí của các nhà phát triển để thiết kế cho khả năng bảo trì
- Các kỹ năng của các nhà phát triển để thực hiện ý định của họ
- Mức độ và độ chính xác của tài liệu (độ chính xác liên quan đến cách tài liệu hướng dẫn chân thực hệ thống thực tế không liên quan đến chi tiết tài liệu)
- Kỹ năng của nhà phát triển chăm sóc bảo trì
Bạn có thể tạo một mớ hỗn độn bằng bất kỳ ngôn ngữ nào có sẵn. Có thể cho rằng bạn có thể tạo ra một dự án sạch sẽ và có thể duy trì ở bất kỳ kích thước nào bằng cách sử dụng bất kỳ ngôn ngữ lập trình nào được thiết kế để sử dụng cho sản xuất.
Điều đó có nghĩa là - scala không được ít bảo trì hơn java, python hoặc groovy. Kết quả của dự án đầu tiên có thể ít được bảo trì hơn.
Câu trả lời ngắn: Có
Câu trả lời dài: So với Java, rất nhiều.
Đặc điểm, kiểu chữ, kiểu mẫu, loại cao cấp, đóng cửa, vv tất cả âm mưu loại bỏ boilerplate và giúp bạn thực thi nguyên tắc DRY dễ dàng hơn. Codebase của bạn sẽ có kích thước khoảng 1/3, và dễ dàng hơn nhiều khi cô lập các abstractions chính thay vì sao chép logic.
Các khuôn khổ kiểm tra độc đáo cũng giúp dễ dàng hơn trong việc giữ một bộ thử nghiệm hiệu quả tại chỗ.
Tất nhiên ... Tất cả điều này xuất phát sau điểm của Aleksi về ý chí/kỹ năng của các nhà phát triển cá nhân có liên quan. Nếu nhóm không chủ động hướng tới khả năng bảo trì, ngôn ngữ duy trì nhất trên thế giới sẽ không giúp bạn!
- 1. Django-Tagging có được duy trì không?
- 2. HTML có nên được mã hóa trước khi được duy trì không?
- 3. Git - Duy trì công việc không có cam kết
- 4. không thể duy trì khoảng cách giữa chạy
- 5. Git: làm thế nào có thể git/linux bảo trì duy trì rất nhiều chi nhánh
- 6. Có thể duy trì các thực thể mới trong Trình nghe @ Pre/PostPersist không?
- 7. Có cách nào để duy trì dữ liệu HSQLDB không?
- 8. Không duy trì tải lên Hackage
- 9. Python: Duy trì mã trong các mô-đun
- 10. Do dicts có duy trì thứ tự lặp lại nếu chúng không được sửa đổi không?
- 11. Duy trì cookie jQuery
- 12. duy trì các tệp web.config
- 13. Có thể renderInContext: duy trì bán kính góc và bóng tối không?
- 14. Cách duy trì cột GEOMETRY hoặc GEOGRAPHY được tính toán
- 15. Tôi có thể duy trì một phiên Oracle từ hai máy khách oci không?
- 16. Attributes Duy trì trên Vectors
- 17. java có thể chạy mã scala đã biên dịch không?
- 18. Thư viện LINQ có thể ràng buộc hoặc "tại sao Obtics không được duy trì tích cực nữa"
- 19. Duy trì nếu hộp kiểm được nhấp qua postback
- 20. Thư viện SOAP trăn nào vẫn được duy trì?
- 21. Proxy máy khách CXF JAX-RS không duy trì cookie
- 22. Cách từ điển được duy trì nội bộ?
- 23. Doxygen, quá nặng để duy trì?
- 24. Tính duy trì của chú thích Java?
- 25. Tập lệnh Scala có thể tham khảo mã scala chưa được biên dịch khác trong cùng một thư mục không?
- 26. Tải tệp .rtf vào RichTextBox và duy trì/duy trì định dạng
- 27. Ngôn ngữ Java có duy trì tính tương thích ngược mã nguồn trong suốt lịch sử của nó không?
- 28. Bạn sẽ làm gì khi thư viện bạn sử dụng không còn được duy trì?
- 29. Ruby duy trì thứ tự chèn Hash
- 30. CListCtrl: Cách duy trì vị trí cuộn?
Có lẽ sẽ nhận được một số sự chú ý trên Programmers.SE, nhưng không phải ở đây. –