2009-04-20 31 views
11

मैं निम्नलिखित प्रश्न पढ़ रहा था - How safe would it be to use functional-java to add closures to a Java production project? और मैं Functional Java project का उपयोग करने के बारे में सोच रहा था और साथ ही साथ मेरी वर्तमान परियोजना में भी। मैं सोच रहा था कि स्टैक ओवरफ्लो के उपयोगकर्ताओं को कार्यात्मक जावा प्रोजेक्ट का उपयोग करने के साथ क्या अनुभव है? विशेष रूप से, मैं इनमें से कुछ विनिर्देशों के बारे में उत्सुक हूं:कार्यात्मक जावा प्रोजेक्ट का उपयोग करके आपके अनुभव क्या हैं?

  • क्या यह कोड गुणवत्ता या स्पष्टता बढ़ाता है?
  • उत्पादकता में सुधार?
  • विफलता के संभावित बिंदुओं को कम करें?
  • प्रभाव प्रदर्शन?

उत्तर

9

मैं एक टीम पर रहा हूं जो एफजे पुस्तकालय का उपयोग करता है, और मैं दूसरों के बारे में जानता हूं। एक टीम पर इसे घर से उगाए जाने वाले पुस्तकालय के प्रतिस्थापन के रूप में इस्तेमाल किया गया था जो कम पॉलिश था, दूसरी ओर यह Google संग्रहों को बदल दिया गया था। मैं कुछ लोगों को भी जानता हूं जो एफजे से स्रोत कोड को अपने स्वयं के कार्यान्वयन के लिए कॉपी करते हैं।

मेरी राय में, यदि आपको जावा का उपयोग करना होगा, तो आपको अपने जीवन को आसान बनाने के लिए फ़ंक्शनल जावा जैसे कुछ का उपयोग करना चाहिए।

क्या यह कोड गुणवत्ता या स्पष्टता बढ़ाता है?

एक कार्यात्मक शैली में लिखा कोड अधिक संक्षिप्त है, इसलिए अधिक स्पष्ट है। लाइब्रेरी के साथ आता है, और अपरिवर्तनीय डेटा संरचनाओं के उपयोग को प्रोत्साहित करता है, जो गुणवत्ता में सुधार करता है। लाइब्रेरी विरासत पर संरचना को भी प्रोत्साहित करती है, जो आपके कोड की पुन: प्रयोज्यता में सुधार करती है।

उत्पादकता में सुधार?

निश्चित रूप से। अधिक शक्तिशाली उपकरण वाले डेवलपर्स अधिक उत्पादक हैं। मेरे अनुभव में डेवलपर्स का मानना ​​है कि प्रथम श्रेणी के फ़ंक्शंस प्रोग्रामिंग को आसान और अधिक आनंददायक बनाते हैं। हैप्पी प्रोग्रामर उत्पादक प्रोग्रामर हैं।

विफलता के संभावित बिंदु कम करें?

प्रोग्रामिंग की एक और कार्यात्मक शैली परिवर्तनीय स्थिति को हतोत्साहित करती है, जो कि बड़ी संख्या में बग को समाप्त करती है। इसके अलावा, अधिक शक्तिशाली abstractions कम पुनरावृत्ति का कारण बनता है, जो कुछ जगह गलत जगहों की संख्या को कम कर देता है।

प्रभाव प्रदर्शन?

इस बात पर विश्वास करने का कोई कारण नहीं है कि प्रदर्शन एक तरफ या दूसरे पर असर डालेगा। प्रदान किए गए डेटास्ट्रक्चर प्रदर्शन के बजाए उपयोग और अभिव्यक्ति की आसानी के लिए डिज़ाइन किए गए हैं, लेकिन वे जो भी हैं उनके लिए वे बेहतरीन रूप से लिखे गए हैं। किसी और चीज के साथ, आप जो ड्राइव कर रहे हैं उससे ज्यादा महत्वपूर्ण है। उदाहरण के लिए, fj.data.List एक लिंक्ड सूची है, इसलिए इसमें ओ (एन) यादृच्छिक पहुंच और concatenation है, इसलिए आप उन उद्देश्यों के लिए इससे बचें। fj.data.Stream तुलना में ओ (1) concatenation है।

संबंधित मुद्दे