एक आंतरिक के रूप में बड़े बदलावों को फिर से लिखना / फिर से लिखना [बंद]


15

प्रसंग:

  • यह एक आंतरिक परियोजना है (कि मुझे नहीं लगता कि बहुत सारे लोग उपयोग करते हैं)
  • ये पुराना है
  • हम इसे अपडेट कर रहे हैं

वाद विषय:

  1. यह पीवीसी ढांचे का दुरुपयोग करता है (मॉडल का कोई उपयोग नहीं, विचारों में व्यावसायिक तर्क आदि)
  2. हमें जो करने के लिए कहा जा रहा है वह छोटा है, लेकिन कम सामंजस्य के कारण हमारे पास दो विकल्प हैं:
    1. चीजों को बॉट करना जारी रखें
    2. कोड के बड़े हिस्से को इधर-उधर घुमाएँ या फिर से लिखें

समाधान (मैं देख रहा हूँ):

  1. इसके साथ काम करना जारी रखें, जल्द ही किए जाने के पक्ष में सर्वोत्तम प्रथाओं को अनदेखा करें और रिफैक्टिंग / पुनर्लेखन द्वारा नए बग का परिचय न दें
  2. refactor / पुनर्लेखन

मुझे लगता है कि मेरा प्रश्न वास्तव में है: अगर मैं इस परियोजना में बड़े बदलाव करना चाहता हूं, तो मैं कैसे प्रस्ताव करूं कि किसी का अपमान किए बिना? या मेरे लिए बेहतर होगा कि मैं प्रवाह के साथ जाऊं भले ही इसका मतलब (रूपक) डक्ट-टेप कभी-कभी हो?


7
पहले शोध करने पर विचार करें कि यह ऐसा क्यों है। ऐसे अच्छे कारण हो सकते हैं जिनके बारे में आपने अभी तक नहीं सीखा है।

अन्य राज्यों के रूप में, शायद एक अच्छा कारण है - याद रखें कि यह आपको अच्छी तरह से दिया जा सकता है क्योंकि यह कम प्राथमिकता है। उनके पास आपके द्वारा काम करने वाले हर प्रोजेक्ट को फिर से लिखने, बॉट करने के लिए सीखने का समय / बजट नहीं है - बाकी सब शायद है।
जोनो सेप

2
ध्यान रखें कि जो भी समाधान आप प्रस्तावित करते हैं वह निम्न 3 स्थितियों में से 2 को पूरा करना चाहिए: अच्छा, तेज, सस्ता। ऐसा लगता है कि आप केवल वही प्रस्तावित कर रहे हैं जो आपको लगता है कि "अच्छा" है। मैं आपकी सिफारिश को कंपनी के लिए या तो तेज़ या सस्ता होने के रूप में नहीं देख रहा हूँ, इसलिए आप उन लोगों को आश्वस्त करने के लिए एक कठिन समय लेने जा रहे हैं जिनके लिए भुगतान करने की उम्मीद की जा रही है।
जोएल एथरटन

1
मुझे नहीं पता कि आपके पास क्यों रिफ्लेक्टर और पुनर्लेखन लिखा गया है जैसे कि वे समान हैं। वो नहीं हैं।
कैफीक सेप

मुझे पता है कि वे नहीं हैं, लेकिन यदि आप एप्लिकेशन देखते हैं तो आपको पता चलेगा कि वे इस संदर्भ में कितने समान हैं
7983879342

जवाबों:


5

ठीक है यहाँ जाता है।

आपको लगता है कि एप्लिकेशन बुरी तरह से संरचित है और बुरी तरह से लिखा गया है।

ग्राहक सोचता है कि यह काम करता है।

आप इसे "आंतरिक सुंदरता" में सुधार के अलावा किसी अन्य कारण से फिर से लिखना चाहते हैं।

तो आप ग्राहक से आवेदन प्राप्त करने के लिए पैसे खर्च करने के लिए कह रहे हैं कि यह अब क्या करता है - केवल उन हिस्सों को जो उपयोगकर्ता नहीं देखते हैं या समझते हैं कि किसी तरह "बेहतर" होगा।

बुरी तरह से संरचित कोड के लिए मुख्य आपत्ति यह है कि इसे समझना मुश्किल है।

कोड को समझना कठिन है और इसमें कार्यक्षमता और विशेषताएं हैं जो केवल एक बुरी तरह से संरचित एप्लिकेशन में आसानी से लागू की जा सकती हैं। इसलिए जब तक आप इस पर बहुत अच्छे नहीं होते हैं, तब तक नया एप्लिकेशन वही नहीं करेगा जो वर्तमान एप्लिकेशन करता है, और, क्योंकि आप पूरी तरह से समझ नहीं पाए हैं कि मूल कोड क्या कर रहा था, शायद यह गलत कर रहा है।

तो आपके ग्राहक ने अब एक एप्लिकेशन प्राप्त करने के लिए बहुत पैसा खर्च किया है जो कि मूल एप्लिकेशन से अधिक खराब है। आप लोकप्रिय होने वाले नहीं हैं!

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

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


मुझे लगता है कि मैं इस पर टिक जाऊंगा। मैं छोड़ने से पहले इसे थोड़ा साफ करने की कोशिश करूँगा, लेकिन ऐसा लगता है जैसे बड़े बदलावों का स्वागत नहीं किया जाएगा।
7983879342 18

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

22

अपने परिवर्तनों को प्रस्तावित करें। प्रत्येक के लिए व्यवसाय के मामले पर स्पष्ट रहें : आपके प्रस्तावित परिवर्तन पूरे सिस्टम को मदद क्यों करेंगे? यदि ऐसा नहीं होता है, तो पीछे धकेलने की अपेक्षा करें। क्यों पैसा खर्च कुछ है कि टूट नहीं है फिक्सिंग? सिस्टम को अधिक एक्सटेंसीबल बनाने और चिंता को अलग करने जैसे कारण मान्य हो सकते हैं (आप जिस पर बात कर रहे हैं, उसके आधार पर), लेकिन 99% समय, बस यह कहना कि "यह सही तरीके से लागू नहीं हुआ है" आपको कहीं नहीं मिलेगा। सुनिश्चित करें कि आप परियोजना में मूल्य जोड़ रहे हैं और न केवल प्रस्ताव बनाने का काम कर रहे हैं (भले ही यह कोड को साफ करता है)।

दुर्भाग्य से, पेशेवर दुनिया में, सिर्फ इसलिए कि कुछ गलत लागू किया गया है इसका मतलब यह नहीं है कि यह टूट गया है, और इसलिए इसे ठीक करने की आवश्यकता नहीं है। इसके अलावा, इसे ठीक करने में, आप परियोजना के अन्य क्षेत्रों को प्रभावित कर सकने वाले अप्रत्याशित मुद्दों पर दस्तक दे सकते हैं।


11
+1, विशेष रूप से "पेशेवर दुनिया में, सिर्फ इसलिए कि कुछ गलत किया गया है, इसका मतलब यह नहीं है कि यह टूट गया है"
स्टुपेरसेर

4
+1 और इसके विपरीत ... बस कुछ सही हो जाता है इसका मतलब यह नहीं है कि यह काम करता है।
जोएल एथरटन

11

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

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

एप्लिकेशन को बेहतर बनाने के लिए, आपके पास थोड़े से रिफैक्टिंग के लिए कुछ मौका हो सकता है जो आपके अपडेट के दौरान स्वाभाविक रूप से होता है।


1
कम उपयोग आंतरिक अनुप्रयोग के प्रमुख पुनर्लेखन में कम लाभ के लिए +1। आपका समय कहीं और अधिक लाभकारी रूप से उपयोग किया जा सकता है (जब तक कि वे आपके लिए प्रशिक्षण अभ्यास के रूप में इसका उपयोग नहीं करना चाहते हैं)
uɐɪ

10

तुम एक प्रशिक्षु हो। संभवतः, आप बिल्कुल नए हैं। वे शायद आपको एक बेवकूफ के लिए संदेह करते हैं।

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

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

आखिरकार , जैसा कि आप अपनी योग्यता और ज्ञान का प्रदर्शन करते हैं, आप एक सुझाव या दो को खींचने में सक्षम हो सकते हैं।


4

मैं पूरी तरह से यह सुझाव दूंगा, लेकिन केवल एक साथी डेवलपर के लिए । मैं इसे प्रबंधन के साथ नहीं लाऊंगा, क्योंकि मुझे लगता है कि प्रबंधन यह देखेगा कि सीमाओं के कुछ प्रकार के रूप में।

आप जिस डेवलपर के साथ काम कर रहे हैं, उसे सुझाव देने के बाद, उनके पास शायद कुछ अच्छे कारण होंगे कि कोडबेस क्यों है। कारण "नहीं, वास्तव में कोड ठीक हो सकता है, आप एमवीसी (और यही कारण है कि आप एक प्रशिक्षु हैं) को समझ नहीं सकते हैं" "यह एक महान विचार है, चलो एक साथ नए एप्लिकेशन को आर्किटेक्ट करते हैं!"

ध्यान रखें कि इस एप्लिकेशन को फिर से तैयार करने का जवाब संभावना से अधिक नहीं होगा; मैं कभी भी एक आंतरिक अनुप्रयोग के पुनर्लेखन पर एक इंटर्न को नहीं लेना चाहता हूं (जब आपकी इंटर्नशिप की जाती है और फिर से लिखना केवल आधा-समाप्त होता है?) साथ ही, एक आंतरिक अनुप्रयोग के आसपास poking की तुलना में संभवतः अधिक महत्वपूर्ण सामान हो सकता है। ।

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


2

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

हालांकि, कुछ चीजों पर सवाल करना बंद न करें, भले ही आपको कुछ नॉकबैक मिलें, लेकिन इसका तरीका हम सीखते हैं और बढ़ते हैं।


2

अन्य उत्तरों ने आपकी स्थिति की राजनीति के बारे में बहुत कुछ कहा है, और मैं सहमत हूं। जब तक आप एक सम्मोहक व्यापार के मामले को प्रस्तुत नहीं कर सकते, तब तक फिर से लिखना कार्ड पर नहीं है।

हालांकि, इसका मतलब यह नहीं है कि आपको बॉय स्काउट नियम को भूल जाना चाहिए :

कैंपग्राउंड क्लीनर को हमेशा छोड़ दें, जितना आपने पाया।

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


1

जैसा कि अन्य लोगों ने कहा है, एक अन्य डेवलपर (इस एप्लिकेशन से परिचित) से पूछें कि आप एक त्वरित वॉकथ्रू कर सकते हैं ताकि आप समझ सकें कि कार्यान्वयन के कैसे / क्यों हैं। समझाएं कि जब आप तकनीकी पहलुओं को समझ सकते हैं, लेकिन आप डॉट्स को व्यावसायिक आवश्यकताओं (व्यावसायिक आवश्यकताओं को ट्रम्प्स) से जोड़ना चाहते हैं।

एक बार जब आपको यह जानकारी मिल जाती है, तो आप अपना मूल्यांकन कर सकते हैं। यदि आप व्यक्तिगत रूप से सोचते हैं कि इसे फिर से लिखा जाना चाहिए, लेकिन यह न सोचें कि अन्य लोग इसे समय के एक अच्छे उपयोग के रूप में देखेंगे, इसे एक व्यक्तिगत परियोजना के रूप में लें। यहां तक ​​कि अगर आपके पास डाउनटाइम होने पर यहां एक घंटा है, तो कार्यान्वयन "सही ढंग से" करें। एक बार जब आप समाप्त कर लेते हैं, तो इसे अन्य डेवलपर (ओं) को "हे, के रूप में प्रस्तुत करें, मुझे ऐसा लगा कि यह कुछ सफाई का उपयोग कर सकता है, इसलिए मैंने अपने डाउनटाइम के दौरान कुछ साइड-वर्क किया। आपको क्या लगता है?" उन पर बदलाव को दबाएं नहीं - बस उन्हें "हे, तुम लोगों को यह पसंद है?" और वहां से जाओ।


0

अधिकांश परिवर्तन एक सामान्य नियम के रूप में, आकस्मिक रूप से होते हैं।

ध्यान रखने वाली कुछ बातें;

  • आवेदन का इतिहास क्या है?
  • आज यह बदसूरत क्यों है?
  • वास्तु परिवर्तन से क्या लाभ है?

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


0

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

तो यह मत कहो कि "हमें मूल एमवीसी सिद्धांतों का उल्लंघन करने वाले इस बुरी तरह से डिज़ाइन किए गए सिस्टम को फिर से लिखने की ज़रूरत है", इसे उचित उच्च-अप (आपके ऊपर सीधे लोग) के लिए एक खुले प्रश्न के रूप में पूछें। ऐसा कुछ "मैं सोच रहा हूं कि क्या MVC मॉडल में सिस्टम को फिर से लिखने से लंबे समय में बहुत समय बच सकता है। आपको क्या लगता है? मुझे यकीन है कि हम एक प्रमुख रिट्रीट के साथ रखरखाव के समय को कम कर सकते हैं (2 सप्ताह में) MVC मॉडल, TDD इत्यादि को शामिल किया गया था और यह कि दो महीने के नियमित रखरखाव के बाद हम इसे तोड़ देंगे "। प्रतिक्रिया हो सकती है, नहीं, हमें नहीं लगता कि इसके लिए कहा जाता है - मैं आपके समय के अनुमानों से असहमत हूं और नई प्रणाली की संभावना एक उपयुक्त प्रतिस्थापन होगी। या प्रतिक्रिया हो सकती है, इसके लिए ठीक है, लेकिन याद रखें कि क्या आपका नया सिस्टम नहीं है ' आपके द्वारा प्रस्तावित समय सीमा में नई प्रणाली की तुलना में अच्छा / बेहतर काम करता है कि लोग आपको दोषी ठहराएंगे। और यहां तक ​​कि अगर सिस्टम का बहुत कम उपयोग किया जाता है; यह फिर से लिखना अवधि के दौरान मामूली सुधार के साथ इसे रोकने के लिए स्वीकार्य नहीं हो सकता है।

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