पूरा करने वाले ऐप पर रिफ्लेक्टर या ध्यान लगाओ


23

क्या आप अपने ऐप को रिफलेक्टर करेंगे जैसे कि आप जाते हैं या पहले ऐप को पूरा करने पर ध्यान केंद्रित करते हैं? रिफैक्टिंग का मतलब होगा ऐप ऐप की प्रगति धीमी हो जाएगी।

एप्लिकेशन को पूरा करने का मतलब होगा कि आपको बाद में ऐप बनाए रखने के लिए संभवतः बहुत कठिन मिलेगा?

ऐप एक व्यक्तिगत परियोजना है। मुझे वास्तव में नहीं पता है कि "क्या कार्यक्षमता और डिज़ाइन को ड्राइव करता है" का जवाब कैसे दिया जाए, लेकिन मुझे लगता है कि यह मौजूदा सॉफ़्टवेयर में अक्षमताओं को हल करने के लिए है। मुझे सॉफ्टवेयर का उपयोग करना कम से कम आसान है। इसलिए मैं कुछ सुविधाओं को हटा रहा हूं और कुछ जोड़ रहा हूं जो मुझे लगता है कि मदद करेगा।


1
क्या आप अपने परिदृश्य के बारे में कुछ अतिरिक्त डेटा प्रदान कर सकते हैं? उदाहरण के लिए, क्या यह एक-व्यक्ति परियोजना है या आप एक टीम में हैं? क्या यह एक वाणिज्यिक उत्पाद, इन-हाउस या ओपन-सोर्स है? कार्यक्षमता और डिजाइन क्या है?
mlschechter

@mlschechter, मैं वास्तव में एक व्यक्तिगत परियोजना पर काम कर रहा हूं। यह तय नहीं किया है कि मैं बेचूंगी (जैसे। कोडकैनियन पर) इसे खोलें या इसे ओपन सोर्स जारी करें। मैं वास्तव में नहीं जानता कि कैसे "क्या कार्यक्षमता और डिजाइन को संचालित करता है" का जवाब देना है, लेकिन मुझे लगता है कि मौजूदा सॉफ्टवेयर में अक्षमता को हल करना है। मुझे सॉफ्टवेयर का उपयोग करना कम से कम आसान है। इसलिए मैं कुछ विशेषताओं को हटा रहा हूं और कुछ जोड़ रहा हूं जो मुझे लगता है कि मदद करेगा
Jiew मेंग

जवाबों:


23

इसे काम करने लायक बनाओ। फिर इसे जल्दी करें। अंत में, इसे सुंदर बनाएं।

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

यदि आपको इस प्रक्रिया को करने में बहुत कठिनाई हो रही है, तो शायद यह एक कोड-गंध है - मेरा सुझाव है कि आप ठोस सिद्धांतों को देखें


इसे बनाने के लिए +1 काम । फिर इसे जल्दी करें । अंत में, इसे सुंदर बनाएं ।
कार्तिक श्रीनिवासन

मेरी भी बात। जब तक आपको यह महसूस न हो जाए कि आप काम करने से पहले रिफ्लेक्टर नहीं करते हैं, तो आपको लगता है कि आपका डिज़ाइन आपको काम पूरा करने से रोकता है।
गुस

यदि आप इकाई परीक्षण का उपयोग करके यह सुनिश्चित करने के लिए काम करते हैं कि यह वास्तव में काम करता है , बजाय सिर्फ सही काम करने के लिए लगता है, तो उन परीक्षणों से प्रेरित संरचना 90% रिफैक्टिंग होगी जिसे आप कभी भी करना चाहते हैं।
माइकल एंडरसन

मैं यह कहूंगा: इसे काम करो, इसे सही बनाओ, इसे जल्दी करो - उस क्रम में।
निकलैस एच।

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

8

मुझे लगता है कि आवश्यक बिंदु इंटरफेस को साफ रखना है । आप हमेशा रिफ्लेक्टर या यहां तक ​​कि मॉड्यूल / वर्ग / जो भी कार्यान्वयन बाद में फिर से लिख सकते हैं, जब तक कि उनके बीच संचार परतें सन्न हैं। कुछ समय बिताइए पता करें कि बाद में क्या बदलना आसान है, और क्या नहीं। उत्तरार्द्ध को सही बनाएं।

यह टीडीडी की भावना के अनुरूप है। अच्छे परीक्षण लिखने के लिए, आपको परीक्षण करने के लिए एक अच्छे इंटरफ़ेस की आवश्यकता होती है। इस समय पर्दे के पीछे कितना गड़बड़ है यह उतना महत्वपूर्ण नहीं है, क्योंकि आप इसे बाद में सुधार सकते हैं।


5

मैं हमेशा रिफ्लेक्टर करता हूं क्योंकि मैं जाता हूं, खासकर टीडीडी का उपयोग करके।

  1. परीक्षण लिखिए

  2. टेस्ट पास करें

  3. Refactor

इससे तैयार उत्पाद के लिए आपको कम बग और बेहतर कोड की मदद मिलेगी। यह आपको कम कोड बनाए रखने देगा जब आप कर रहे हैं।


5

रिफ्लेक्टर जल्दी और अक्सर! जिस समय आप ऐसा नहीं करते हैं, उस पर "सेव" करते हैं, तो कई बार अगली फीचर में हैक करने की कोशिश करने और अत्यधिक जटिल या अराजक कोड में कीड़े खोजने के लिए खर्च किया जाता है।


2

Refactoring आपके कमरे को चुनने जैसा है।

यदि आप चीजों को चुस्त-दुरुस्त रखते हैं, तो आपके पास एक रैखिक उपरि है, जो एल्गोरिदमोलॉजिस्ट शब्दों में O (n) कोड पर किए जा रहे उत्पादक कार्य की मात्रा के अनुपात में है। यह मानते हुए कि आप अपना 10% समय रिफैक्टरिंग (या अपने कमरे को चुस्त-दुरुस्त रखना) में बिताते हैं, कि 10% एक दिया हुआ है, और यह समय के साथ स्थिर रहेगा।

यदि, हालांकि, आप अपने गंदे कपड़े एक कोने में टॉस करते हैं, और इसे करते रहें, तो जितना समय आप अपने कमरे में बिताते हैं, उतना ही बढ़ता है क्योंकि गंदगी और अधिक जटिल हो जाती है। यह मानते हुए कि गंदे कपड़े धोने का प्रत्येक व्यक्तिगत टुकड़ा आवश्यक सफाई समय में तेजी से योगदान देता है, अब आप एक ओ (ई एन ) स्थिति में हैं।

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

और फिर वहाँ जटिलता महत्वपूर्ण द्रव्यमान है। कुछ बिंदु पर, गड़बड़ी ('गंभीर गंदगी', यदि आप करेंगे) तो इतनी खराब हो जाती है कि पूरे कमरे को जला देना और नए कपड़े खरीदना आसान लगता है। वास्तव में यह आम तौर पर नहीं होता है, लेकिन यह इस तरह से दिखाई देता है, और मनोवैज्ञानिक प्रभाव इस चीज़ से निपटने के लिए दस गुना कठिन बना देगा।

और जाहिर है, यदि आप एक ऐसी परियोजना में कदम रखते हैं जो पहले से ही एक विशाल बहु-अनावश्यक गड़बड़ है, तो आपके पास सीमित विकल्प हैं।

टीएल; डीआर: यदि संदेह में, रिफ्लेक्टर। नहीं करने का निर्णय लेने से पहले आपके पास वास्तव में अच्छे सबूत होने चाहिए।


1

यदि आपके पास अपनी बिक्री / ग्राहक संतुष्टि प्राप्त करने के लिए सुविधाओं को जोड़ने या बग को कुचलने का मौका है, तो आपको लगता है कि ऐसा होना चाहिए, इसे करें। एक बार कम नई मांगें होने के बाद, आप रिफैक्टरिंग के साथ संतुलन बना सकते हैं। कुछ बिंदु पर आपको यह सुनिश्चित करना होगा कि आप कोड लिखना चाहते हैं जो लोग चाहते हैं। सभी चीजें समान होने के बावजूद, मैं 1000 की तुलना में 100 घंटे के कोड को फेंक दूंगा। यदि कोई ऐसा नहीं चाहता है तो आप क्या करेंगे।


0

वास्तव में आप कहाँ पर हैं पर निर्भर करता है!

अन्य बातों के बारे में सोचने के लिए:

आप कितने निश्चित हैं, आप वास्तव में कार्यात्मक डिजाइन प्राप्त कर चुके हैं? उपयोगकर्ता की प्रतिक्रिया प्राप्त करने के बाद क्या आप फिर से डिजाइन कर सकते हैं?

मैं फिर से लिखना चाहता हूँ। यह सुनिश्चित करने के बाद कि आप कार्यात्मक डिज़ाइन को पकड़ चुके हैं, उसका अनुकूलन करें।


0

जब तक आप सुनिश्चित हैं कि आप समय सीमा को पूरा कर सकते हैं सुनिश्चित करें कि आप अपने सभी चाहने वालों को वापस कर सकते हैं। हालांकि, भले ही विकास के साथ रहने के लिए अनिश्चितता का एक सा बेहतर है और केवल मामूली वृद्धिशील कदम में रिफ्लेक्टर हो सकता है।


0

यदि आप जिस खराब डिज़ाइन को रिफैक्ट करना चाहते हैं, वह वास्तव में आपको नुकसान पहुँचाता है, तो आप उस पर निर्भर होने वाले अधिक कोड बनाने की तुलना में अब इसे ठीक कर लेते हैं। बाद में रिफैक्टर करना अधिक कठिन और अधिक महंगा होगा; संभावना है कि आप इसे अब और नहीं कर पाएंगे।

दूसरी ओर, यदि आपका एकमात्र मुद्दा कुरूपता है, तो आप अपने सॉफ़्टवेयर को पहले पूरा करना चाहते हैं, क्योंकि शायद ही कुछ हो रहा हो


0

जब आप अपने आवेदन को पूरा करने पर काम करेंगे, तो रिफलेक्ट करना बहुत महत्वपूर्ण होगा।

+ वीईएस

  1. स्पष्ट प्रवाह: Refactoring कोड को स्पष्टता देगा क्योंकि कभी-कभी यदि कोड थोड़ा असंरचित होता है, तो समझें कि कोड की अवधि के बाद समय की अवधि मुश्किल हो जाएगी और refactoring कोड एक कठिन कार्य बन सकता है और बग को पेश किया जा सकता है।

  2. प्रदर्शन में सुधार: आवेदन के उचित रीफैक्टरिंग निश्चित रूप से आवेदन के प्रदर्शन को बेहतर बनाने में मदद करेंगे

  3. रखरखाव: अंतिम लेकिन कम से कम नहीं, लंबे समय तक बनाए रखना आसान होगा

-ve

  1. समय की खपत: यह आपकी प्रगति के हर चरण में अधिक समय लेने वाला होगा। इसलिए पूरा होने में देरी हो सकती है

जमीनी स्तर

परियोजना के प्रकार के आधार पर, आप वर्तमान स्थिति के लिए कोड गुणवत्ता या पूर्णता पर प्राथमिकता दे सकते हैं ।


वीईएस और वीई क्या हैं?
FreeAsInBeer 12

सकारात्मक और नकारात्मक।
फ्लोरियन एफ

0

अपने व्यक्तिगत अनुभव के आधार पर, मैं आमतौर पर पहले इस शर्त के साथ ऐप्स को समाप्त करने के लिए जाता हूं कि पहुंचने की समय सीमा है। एक बार जब आप पूरा कर लेते हैं तो आप इसे रिफ्लेक्टर कर सकते हैं।

इसे खत्म करें और इसे रिफ्लेक्टर करें। लेकिन अगर भीड़ या समय सीमा होने की कोई समय सीमा नहीं है, तो मैं सुझाव देता हूं कि यह अच्छा होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.