2009-04-20 21 views
11

Tôi đã đọc câu hỏi sau - How safe would it be to use functional-java to add closures to a Java production project? và tôi cũng đã nghĩ đến việc sử dụng Functional Java project cũng như trong dự án hiện tại của tôi. Tôi đã tự hỏi những trải nghiệm của người dùng Stack Overflow với việc sử dụng dự án Java chức năng là gì? Đặc biệt, tôi tò mò về một số chi tiết cụ thể sau:Kinh nghiệm của bạn khi sử dụng dự án java chức năng là gì?

  • Sản phẩm có làm tăng chất lượng hoặc độ rõ của mã không?
  • Cải thiện năng suất?
  • Giảm điểm thất bại tiềm năng?
  • Hiệu suất tác động?

Trả lời

9

Tôi đã tham gia một nhóm sử dụng thư viện FJ và tôi biết những người khác. Trên một nhóm, nó đã được sử dụng như một sự thay thế cho một thư viện được phát triển tại nhà mà ít được đánh bóng, trên một thư viện khác nó đã thay thế Bộ sưu tập của Google. Tôi cũng biết một số folks rằng copycat mã nguồn từ FJ để cuộn thực hiện riêng của họ.

Theo ý kiến ​​của tôi, nếu bạn phải sử dụng Java, bạn nên sử dụng một cái gì đó như Functional Java để làm cho cuộc sống của bạn dễ dàng hơn.

Nó có làm tăng chất lượng hoặc độ rõ của mã không?

Mã được viết theo kiểu chức năng ngắn gọn hơn, do đó rõ ràng hơn. Thư viện đi kèm với, và khuyến khích việc sử dụng, cấu trúc dữ liệu bất biến, giúp cải thiện chất lượng. Thư viện cũng khuyến khích thành phần thừa kế, giúp cải thiện khả năng sử dụng lại mã của bạn.

Cải thiện năng suất?

Chắc chắn. Các nhà phát triển có nhiều công cụ mạnh hơn sẽ hiệu quả hơn. Trong kinh nghiệm của tôi, các nhà phát triển cảm thấy rằng các hàm hạng nhất giúp lập trình dễ dàng hơn và thú vị hơn. Lập trình viên hạnh phúc là lập trình viên hiệu quả.

Giảm điểm thất bại tiềm năng?

Một kiểu chức năng khác của chương trình ngăn cản trạng thái có thể thay đổi, loại bỏ một loại lỗi lớn. Ngoài ra, trừu tượng mạnh mẽ hơn dẫn đến sự lặp lại ít hơn, làm giảm số lượng những nơi mà một cái gì đó là sai.

Hiệu suất tác động?

Không có lý do gì để tin rằng hiệu suất sẽ bị ảnh hưởng theo cách này hay cách khác. Các datastructures được cung cấp được thiết kế để dễ sử dụng và biểu cảm hơn là hiệu suất, nhưng chúng được viết một cách tối ưu cho chúng là gì. Như với bất cứ điều gì khác, làm thế nào bạn lái xe là quan trọng hơn những gì bạn đang lái xe. Ví dụ, fj.data.List là một danh sách liên kết, vì vậy nó có O (n) truy cập ngẫu nhiên và nối, do đó bạn tránh nó cho những mục đích đó. fj.data.Stream có O (1) nối, bằng cách so sánh.

Các vấn đề liên quan