প্রয়োজনীয়তার জন্য অপেক্ষা করার সময় স্বল্প কোডের লো ইমপ্যাক্ট রিফ্যাক্টরিং এবং কোড সাফাই


17

আমি এমন একটি পণ্যের জন্য বিদ্যমান কোড বেস উত্তরাধিকারসূত্রে পেয়েছি যা নিন্দনীয়ভাবে ম্লান। মৌলিক নকশাটি দু: খজনকভাবে অপ্রতুল, যা দুর্ভাগ্যক্রমে আমি সম্পূর্ণ রিফ্যাক্টর ছাড়া খুব কম কাজ করতে পারি (উচ্চ সংযোগ, লো মিশ্রণ, কোডের বিস্তৃত নকল, কোনও প্রযুক্তিগত নকশার ডকুমেন্টেশন, ইউনিট পরীক্ষার পরিবর্তে ইন্টিগ্রেশন পরীক্ষা)। পণ্যটির একটি ইতিহাস রয়েছে, ঝুঁকির জন্য ন্যূনতম সহনশীলতা সহ জটিল "নগদ-গাভী" ক্লায়েন্টদের উচ্চ এক্সপোজার রয়েছে, প্রযুক্তিগত debtণ যা গ্রীকদেরকে ব্লাশ করবে, অনেক বড় কোডবেস এবং জটিলতা করবে এবং দলের আগে বাগের কাছে যুদ্ধ-ক্লান্ত পরাজয়বাদী পন্থা তৈরি করবে আমাকে.

পুরানো দলটি জাহাজটিকে অন্য বিভাগে লাফিয়েছিল যাতে তারা অন্য প্রকল্প নষ্ট করার সুযোগ পায়। এটি খুব বিরল যে আমি কোনও প্রকল্প পরিচালনা ব্যর্থতার বিপরীতে প্রযুক্তিগত অসম্পূর্ণতা প্রকল্প ব্যর্থতা অনুভব করি তবে প্রকৃতপক্ষে এটি এর মধ্যে একটি।

এই মুহুর্তের জন্য আমি নিজেই আছি তবে আমার কাছে অনেক সময়, সিদ্ধান্তের স্বাধীনতা এবং ভবিষ্যতের দিকনির্দেশনা এবং আমাকে সহায়তা করার জন্য স্ক্র্যাচ থেকে একটি দল তৈরি করার ক্ষমতা রয়েছে।

আমার প্রশ্নটি হ'ল কার্যক্ষম প্রয়োজনীয়তা সংগ্রহের পর্যায়ে আপনি যখন কিছুটা ফ্রি সময় পান তখন এই জাতীয় প্রকল্পে কম প্রভাব রিফ্যাক্টরিংয়ের বিষয়ে মতামত সংগ্রহ করা। হাজার হাজার সংকলক সতর্কতা রয়েছে, যার মধ্যে প্রায় সবগুলি অব্যবহৃত আমদানি, অপঠিত স্থানীয় ভেরিয়েবল, প্রকারের পরীক্ষার অনুপস্থিতি এবং অনিরাপদ ক্যাসেট রয়েছে। কোড ফর্ম্যাটিংটি এত অপঠনযোগ্য এবং ম্লান যা দেখে মনে হয় কোডার পার্কিনসনস রোগে ভুগেছে এবং প্রদত্ত লাইনে স্পেস বারটি কতবার চাপছিল তা নিয়ন্ত্রণ করতে পারে না। পরবর্তী ডেটাবেস এবং ফাইল সংস্থানগুলি সাধারণত খোলা হয় এবং নিরাপদে কখনও বন্ধ হয় না। অর্থহীন পদ্ধতির আর্গুমেন্ট, সদৃশ পদ্ধতি যা একই কাজ করে ইত্যাদি ..

আমি যখন পরবর্তী বৈশিষ্ট্যের জন্য প্রয়োজনীয়তার জন্য অপেক্ষা করছি আমি যখন যাচ্ছি তত কম-প্রভাবিত কম ঝুঁকিপূর্ণ জিনিসগুলি পরিষ্কার করছি এবং ভাবছি যে আমি আমার সময় নষ্ট করছি বা সঠিক জিনিসটি করছি কিনা। নতুন বৈশিষ্ট্যটির অর্থ যদি আমি আগে সময় দিয়েছি এমন কোডটি ছিঁড়ে ফেলা হয়? আমি একটি চতুর পন্থা শুরু করতে যাচ্ছি এবং আমি বুঝতে পারি এটি চ্যাপেল বিকাশের সময় ক্রমাগত রিফেক্টর হিসাবে গ্রহণযোগ্য এবং স্বাভাবিক।

আপনি কি যুক্ত করতে চান এমনটি করে আমার কোনও ইতিবাচক বা নেতিবাচক প্রভাব সম্পর্কে ভাবতে পারেন?


1
উদ্ধার করণীয় যা উদ্ধারযোগ্য, বাকীগুলি আবারও লিখুন ...
এসএফ।

"এটি খুব বিরল যে আমি কোনও প্রকল্প পরিচালনা ব্যর্থতার বিপরীতে একটি প্রযুক্তিগত অসম্পূর্ণ প্রকল্প ব্যর্থতা অনুভব করি [...]" এটি কতটা সত্য, +1।
গ্রেগরি হিগলি

উত্তর:


22

প্রথমত আমি উল্লেখ করতে চাই যে ইউনিট পরীক্ষাগুলি ইন্টিগ্রেশন পরীক্ষার জন্য প্রতিস্থাপন নয়। দু'জনের পাশাপাশি থাকা দরকার। আপনার একীকরণ পরীক্ষার জন্য কৃতজ্ঞ হন, অন্যথায় আপনার ছোট্ট একটি রিফ্যাক্টরিং কম-সহনীয় নগদ গরুগুলির একটি ভালভাবে আপনার উপর ব্যালিস্টিক করতে পারে।

আমি সংকলক সতর্কতা এবং অব্যবহৃত ভেরিয়েবল এবং আমদানিতে কাজ শুরু করব। প্রথমে একটি পরিষ্কার বিল্ড পান। তারপরে বর্তমান আচরণটি নথিভুক্ত করতে ইউনিট পরীক্ষা লিখতে শুরু করুন, তারপরে আসল রিফ্যাক্টরিং শুরু করুন।

আমি সত্যিই কোনও নেতিবাচক প্রভাব দেখতে পাচ্ছি না। আপনি কোড বেসটি সম্পর্কে অনেক গভীর উপলব্ধি অর্জন করবেন যা বড় রিফ্যাক্টরিংগুলিতে সহায়তা করবে। পুনরায় লেখার চেয়ে রিফ্যাক্টরের চেয়ে প্রায় সবসময়ই পছন্দনীয়, যেহেতু রিফেক্টর করার সময় আপনার এখনও একটি কার্যকরী পণ্য রয়েছে, আবার লেখার সময় আপনি যা করেন না। এবং শেষ পর্যন্ত পণ্য বিক্রয় আপনার বেতন দিতে হবে।

প্রয়োজনীয়তাগুলি একবার আসতে শুরু করলে আমি স্পটলাইট পদ্ধতির কল যা ব্যবহার করব। সাধারণ চটপটে জিনিসটি করুন (অগ্রাধিকার দিন, তারপরে একটি পুনরাবৃত্তির জন্য একটি ছোট স্ল্যাব কেটে ফেলুন এবং তার মাধ্যমে কাজ করুন) এবং কোডের উন্নতির জন্য বেশ কিছুটা সময় রেখে দিন। তারপরে আপনি যেখানেই কাজ করছেন রিফ্যাক্টর। সময়ের সাথে সাথে এটি কোড বেইজের বিস্তৃত অঞ্চলকে coverেকে দেবে আপনাকে এমন কোনও অঞ্চলে প্রবেশ করার ব্যতীত যেখানে আপনি কোডের সেই অংশটিতে কেন কাজ করছেন তা পরিচালনার ক্ষেত্রে ন্যায়সঙ্গত করতে আপনার অসুবিধা হবে।


আমি এই উত্তরটি সত্যিই পছন্দ করি। আমার কোড বেস এবং নগদ গরুগুলির আমার আরও গভীর মূল্য বোঝার প্রয়োজন এবং অন্যান্য গ্রাহকদের জন্য আরও ভাল নতুন প্রকল্পে কাজ করতে সক্ষম করুন যেখানে আমি স্ক্র্যাচ থেকে শুরু করার এবং প্রথম থেকেই এটি করার সুযোগ পাই।
maple_shaft

10

রাইটিং ইউনিট টেস্টগুলি আপনার সময়ের আরও মূল্যবান ব্যবহার হতে পারে: এটি আপনাকে কোডবেসের বর্তমান কার্যকারিতা সম্পর্কে কিছুটা অন্তর্দৃষ্টি দেবে এবং আপনার কি কিছু শুরু থেকে নতুন করে লেখার চেয়ে আপনার যা আছে তা থেকে শুরু করার সিদ্ধান্ত নেওয়া উচিত, আপনার একটি শক্ত ভিত্তি থাকবে খুব বেশি ঝুঁকি না নিয়ে পরিবর্তন করা। সম্ভাবনাগুলি হ'ল ইউনিট পরীক্ষাগুলিতে লিখিতভাবে, আপনি পরীক্ষামূলক আকারে পাওয়ার জন্য কোডবেজে পরিবর্তনও করবেন; এগুলি ভাল, কারণ ইউনিট-টেস্টেবলের অর্থ সাধারণত মডুলার, এনক্যাপসুলেটেড এবং বেশিরভাগ বাহ্যিক রাষ্ট্র থেকে স্বতন্ত্র। এবং, সর্বোপরি, ভাল-লিখিত ইউনিট পরীক্ষাগুলি অমূল্য প্রযুক্তিগত ডকুমেন্টেশন। ইউনিট পরীক্ষার জায়গায়, আপনি বুনো অনুমান করা বা জিনিসগুলি পুনর্লিখনের পরিবর্তে বর্তমান কোডবেস কী করতে পারে এবং কী করতে পারে তা বিচার করতে সক্ষম হবেন।


2
তাহলে সহজেই শুরু করুন এবং আপনার পথে কাজ করবেন?
টিডামার্স

2
এই সবসময় আমার অভিজ্ঞতা সমস্যা - এই মত কোড পরীক্ষা করার অনুমতি না লেখা আছে এবং যদি সরাসরি কোড rewriting না এমনকি বিশাল refactorings করতে থাকার শেষ করব অনুমতি প্রথম স্থানে ইউনিট পরীক্ষা জন্য।
ওয়েইন মোলিনা

2
কোডটি যদি পরীক্ষার জন্য ডিজাইন করা না হয়, তবে তার চারপাশে পরীক্ষা নেওয়ার আরও অনেক কারণ - তবে নিরাপদে। মাইকেল পাখির বই "উত্তরাধিকারের কোডের সাথে কার্যকরভাবে কাজ করা" বইটি পড়ুন; এটি অকেটেবল কোড টেস্টেবল করার জন্য রেসিপি আছে।
জো হোয়াইট

1
আমি রাজী; যখন আমার পরীক্ষার পরীক্ষা নেই তখন কেবল আমার অভিজ্ঞতার সাথে উল্লেখ করে বললাম, পরীক্ষার জন্য প্রথমে প্রস্তুত হওয়ার জন্য আপনাকে একটি বিশাল রিফ্যাক্টরিং শুরু করতে হবে, যার ফলে "সময় নষ্ট" রিফ্যাক্টরিং তৈরি হয়, যা পরীক্ষাগুলি লিখতে শক্ত করে তোলে, যা তারপরে বাস্তবে যেকোন কিছুতেই রিফ্যাক্টর করা এতটা শক্ত করে তোলে।
ওয়েইন মোলিনা

1
এটি কিছু অভিজ্ঞতা এবং ভাল সিদ্ধান্ত নিতে লাগে। সবকিছুই (বা হওয়া উচিত) ইউনিট-টেস্টেবল তৈরি করা যায় না।
টিডামার্স

1

মিশ্রণ উত্তর - আমার ধারণা পরীক্ষা এবং ক্লিনআপ মিশ্রিত করা হবে - হতে পারে 50/50? আপনি যদি কোনও টিডিডি ধরণের পদ্ধতির কাজ করে এমন কোনও অঞ্চল কাজ করেন - আপনার ইউনিট এবং ইন্টিগ্রেশন টেস্টিং পছন্দসই হিসাবে প্রয়োজনীয় পরীক্ষাগুলি সেট আপ করুন এবং তারপরে ঠিক করা শুরু করুন। সময় অনুমতি হিসাবে এগিয়ে যান।

এর অর্থ সম্ভবত আপনি ততটা অগ্রগতি করতে পারবেন না, তবে এর অর্থ হ'ল কমপক্ষে কয়েকটি ক্ষেত্রে আপনার সুন্দর স্থিতিশীল কোড বেস থাকবে এবং আপনার খুব ভাল বেস শুরু হবে।

আমার অন্ত্রের প্রতিক্রিয়াটি প্রাথমিকভাবে ছিল "ভাঙা কোডটি পরিষ্কার করার জন্য এটি কি সত্যিই আঘাত করতে পারে?" (ওরফে, সংকলক ত্রুটিগুলি), তবে তারপরে আমি এমন সময়গুলির কথা স্মরণ করেছি যেখানে সমস্যাটি স্থির করা আসলে কিছু অদ্ভুত ক্ষেত্রে কার্যকারিতাটি ভেঙে দেয় কারণ থ্রেড মারা যাওয়ার পরিবর্তে এটি স্মৃতিটিকে খারাপ জায়গায় ফেলে দেয় - মূলত একটি খারাপ বিরতি আরও খারাপ ত্রুটিটি ছুঁড়েছিল। এটি আক্ষরিক অর্থেই অপ্রীতিকর বিস্ময়ের একটি প্যান্ডোরার বক্স হতে পারে।

আরও প্রয়োজনীয়তার জন্য অপেক্ষা করার সময় আপনি এটি করছেন যে, আমি মনে করি বিশৃঙ্খলা নির্ণয়ের জন্য আপনি যা কিছু করতে পারেন তা আপনার দীর্ঘমেয়াদী বিড়ম্বনায় ব্যাপকভাবে যুক্ত করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.