রিফ্যাক্টরিং একটি চলমান প্রক্রিয়া - এবং হওয়া উচিত। কেবলমাত্র একটি কাজ এবং পরীক্ষিত বাস্তবায়নের সাথে প্রয়োজনীয়তাগুলি পূরণ করা যথেষ্ট নয় যা এখনও কিছুটা অসম্পূর্ণ।
"এটি কাজ করুন, তারপরে এটি আরও ভালভাবে কাজ করুন" ।
আমি সেই উদ্ধৃতিটি কোথায় পড়েছি তা মনে করতে পারছি না, তবে এটি রিফ্যাক্টরিং ভালভাবে প্রয়োগ করার মূল চাবিকাঠি এবং আমি অন্যথায় এটি করা অযৌক্তিক হিসাবে বিবেচনা করি।
অবিচ্ছিন্ন রিফ্যাক্টরিং হ'ল রান্না করার সময় ছড়িয়ে ছিটিয়ে থাকা জিনিসগুলি মুছে ফেলার মতো এবং আপনি আপনার খাবার খাওয়ার পরে আপনার থালাগুলি পরিষ্কার করার মতো। টার্গেটেড রিফ্যাক্টরিং একটি নোংরা রান্নাঘর সন্ধান করার মতো, তবে কেবল একটি নোংরা কাচ ধুয়ে দেওয়ার সময় রয়েছে। আপনি কি বরং অবিচ্ছিন্ন নোংরা রান্নাঘর নিয়ে বাঁচবেন, বা আপনি পাশাপাশি যাচ্ছেন জিনিস পরিষ্কার রাখতে পছন্দ করবেন?
আপনি কোডটি কাজ করার জন্য পেয়েছেন, তারপরে আপনি সম্ভবত ব্যবহার করতে পারেন এমন সর্বোত্তম বাস্তবায়ন আপনার কাছে রয়েছে তা নিশ্চিত করার জন্য আপনি নিজের কোডটি রিফ্যাক্টর করেন। আপনি যদি কিছু পরিচিত হয়ে থাকেন তবে এটি হতে পারে আপনি প্রথমবারের মতো সেরা কোডটি প্রয়োগ করলেন, তবে আপনার কাজটি নিশ্চিত হতে ডাবল-চেক করতে কিছুটা সময় নিচ্ছে। যদি মনে হয় আপনি নিজের কোডটি উন্নত করতে পারছেন তবে আপনি আপনার কোডটি যতটা দূষিত এবং পরিষ্কার করে তুলতে পারছেন ততটুকু নিশ্চিত হওয়ার জন্য আপনি রিফ্যাক্টরের চেষ্টা করছেন। এর অর্থ হল আপনি যে প্রযুক্তিগত debtণ রেখে গেছেন তার পরিমাণ হ্রাস করছেন এবং পরের বার কোডটি মোকাবেলা করার দরকার পড়লে আপনি এটি পড়া এবং রিফেক্টরটিকে আরও সহজ করে তুলুন। এটি টিডিডি মন্ত্র "রেড-গ্রিন-রিফ্যাক্টর" এর পেছনের মূল মান, যেখানে টিডিডি আপনি প্রাথমিকভাবে সদৃশ অপসারণ করার জন্য রিফ্যাক্টর করেন না, এটি অন্যান্য আইটেমগুলিরও পর্যালোচনা করতে প্রদান করে যা রিফেক্টর হতে পারে যেমন বড় শ্রেণি, দীর্ঘ পদ্ধতি,
যদি আপনি নিজেকে কোনও নতুন ডিজাইনের মুখোমুখি হন, তবে সম্ভবত আপনি এটি কিছুক্ষণের জন্য রেখে দিতে পারেন, বিশেষত যদি আপনি নিজের সময়সূচীতে সময়মতো খুব কম চালাচ্ছেন। তবে এটি সরবরাহ করা হয় আপনার কোডটির কার্যকারিতা আপস করা হবে না এবং সরবরাহটি প্রয়োজনীয়তার সাথে মিলিয়ে চলতে থাকবে provided এই ধরণের পরিস্থিতিটি একটি বিরল ঘটনা হওয়া উচিত এবং আপনি পাশাপাশি চলতে চলতে ক্রমাগত রিফ্যাক্টরিং করে থাকলে এটি আরও বিরল তা নিশ্চিত করতে আপনি সহায়তা করতে পারেন। এর চেয়েও গুরুত্বপূর্ণ এটি হ'ল আপনি আপনার বড় পরিবর্তনগুলি খুব বেশি সময়ের জন্য রেখে যাওয়ার ঝুঁকি নিতে পারবেন না, অন্যথায় আপনি পরে আরও একটি বড় কাজের চাপ তৈরি করবেন যা হয় আরও অনেক বেশি ব্যয়বহুল হতে পারে, বা পরিণতিতে আরও বেশি ব্যয়বহুল হতে পারে প্রকল্প ব্যর্থতা।
আমি এইরকম যে অনেক মানুষ সংজ্ঞা গুলান ঝোঁক পেতে refactoring এবং পুনরায় ইঞ্জিনিয়ারিং । দুটি পদ খুব ভিন্ন পরিস্থিতিতে পরিচালনা করার কৌশল বর্ণনা করে। আপনি যদি পুনরায় প্রকৌশলী করতে চান, আপনি একটি কঠোর পরিবর্তন আনার প্রতিশ্রুতি দিচ্ছেন যা একটি সিস্টেমের আচরণকে পরিবর্তন করবে। এটি কিছু পরীক্ষা বাতিল করে দেবে, এবং নতুন পরীক্ষারও প্রয়োজন হবে। আপনি যখন রিফ্যাক্টর, আপনি নিশ্চিত করছেন যে আপনি সিস্টেম ঠিক আচরণ করে চলেছেপরিবর্তনের আগে যেমনটি হয়েছিল ঠিক তেমনই, তবে আপনি এটিও নিশ্চিত করছেন যে আপনার কোডটি দীর্ঘায়ু হবে এবং সময়ের সাথে সাথে এটি বজায় রাখা আরও সহজ হবে। আপনি আপনার কোডটিকে নরকের জন্য "জ্বালাতন" করছেন না, আপনি ক্লিন কোডের একটি পেশাদার মানদণ্ডে প্রতিশ্রুতি দিচ্ছেন যা ব্যর্থতার ঝুঁকি হ্রাস করবে, এবং আপনার কোডটি সাথে কাজ করার জন্য এবং একটি পেশাদার স্ট্যান্ডার্ডকে নিশ্চিত করবে ।
ভাঙা উইন্ডোজ সাদৃশ্যগুলিতে ফিরে যাওয়া, আপনি উইন্ডোটি ভেঙে ফেললে আপনার এখনই এটি মেরামত করা উচিত। যদি আপনি লক্ষ্য করেন না যে একটি উইন্ডোটি ভেঙে গেছে, তবে আপনি উইন্ডোটি ভাঙ্গা ছেড়ে দিলে আপনার জন্য মূল্য নির্ধারণ করা উচিত। এখন, আগের দুটি বাক্য পুনরাবৃত্তি করুন, তবে উইন্ডোটির জন্য বাগের বিকল্প দিন। আপনার একটি আলাদা কৌশল প্রয়োজন end আপনি কোড হিসাবে একটি ত্রুটি তৈরি করেছেন, আপনি এই মুহূর্তে এটি সংশোধন, বা আপনি পরিবর্তনগুলি পুনরায় ইঞ্জিনিয়ারিং প্রচেষ্টা প্রয়োজন হবে কিনা তা আপনি দেখতে পারেন এবং সমস্যাটি সমাধানের জন্য এটি কখন সেরা হবে সে সম্পর্কে আপনি বাণিজ্যিক সিদ্ধান্ত নেন। সুতরাং আপনি কোনও সমস্যা সংশোধন করার জন্য চুল্লী করবেন না, সমস্যাগুলি সন্ধান করা এবং সমাধান করা আরও সহজ is আপনার কোডটি কতটা আশ্চর্যজনক বলে আমি মনে করি তা নয়, জটিল সিস্টেমে সর্বদা এমন সমস্যা থাকবে যা সময়ের সাথে সাথে মোকাবেলা করা প্রয়োজন। প্রযুক্তিগত debtণ সম্পর্কে এটিই, এবং আপনি নিজের কোডটি প্রয়োগ করার সাথে সাথে রিফ্যাক্টরিং কেন একটি চলমান প্রক্রিয়া হওয়া দরকার এবং ভবিষ্যতের সময়টিকে কিছুটা স্বেচ্ছায় ফেলে রাখা হয় না।
সুতরাং সংক্ষেপে, উত্তর যে বিরল সময়ে কোডের বড় পরিবর্তনগুলি স্থির করার জন্য গ্রহণযোগ্য হতে পারে তা গ্রহণযোগ্য হতে পারে, তবে আপনার প্রতিদিনের বাস্তবায়নের কাজ থেকে রেফ্যাক্টরিংকে একটি মহড়া হিসাবে বিবেচনা করা স্বাভাবিক অনুশীলন হিসাবে বিবেচিত হবে না এবং অবশ্যই কোড বেসের সাথে অপরিচিত দলগুলির দ্বারা কোনও অজুহাত হিসাবে কখনই ব্যবহার করা হবে না যাতে তাদের বাস্তবায়ন যতটা পাতলা এবং পরিষ্কার হয় তা সম্ভবত এ পরিস্থিতিতে এটি তৈরি করতে পারে তা নিশ্চিত না করে avoid