আমি নিশ্চিত যে কোথাও এই অ্যান্টি-প্যাটার্নের নাম আছে; তবে এটিকে জানার জন্য আমি অ্যান্টি-প্যাটার্ন সাহিত্যের সাথে যথেষ্ট পরিচিত নই।
নিম্নলিখিত পরিস্থিতিতে বিবেচনা করুন:
or0
একটি ক্লাসে সদস্য ফাংশন। ভাল বা খারাপের জন্য, এটি শ্রেণীর সদস্যের ভেরিয়েবলগুলির উপর অত্যন্ত নির্ভরশীল। প্রোগ্রামার এ এর সাথে আসে এবং or0
কল করার চেয়ে কার্যকারিতা প্রয়োজন or0
, প্রোগ্রামার এ পুরো ক্লাসটির অনুলিপি এবং নাম পরিবর্তন করে। আমি অনুমান করছি যে সে ফোন করে না or0
কারণ আমি যেমন বলেছি এটি কার্যকারিতার জন্য এটি সদস্যের ভেরিয়েবলের উপর অত্যন্ত নির্ভরশীল। অথবা হতে পারে তিনি জুনিয়র প্রোগ্রামার এবং অন্য কোড থেকে কীভাবে কল করবেন তা জানেন না। সুতরাং এখন আমরা পেয়েছি or0
এবং c0
(অনুলিপি জন্য গ)। আমি এই পদ্ধতির জন্য প্রোগ্রামার এটিকে পুরোপুরি দোষ দিতে পারি না - আমরা সবাই কঠোর সময়সীমার অধীনে থাকি এবং কাজ শেষ করার জন্য আমরা কোড হ্যাক করি।
বেশ কয়েকটি প্রোগ্রামার বজায় রাখে or0
তাই এটি এখন সংস্করণ orN
। c0
এখন সংস্করণ cN
। দুর্ভাগ্যক্রমে বেশিরভাগ প্রোগ্রামার যে ক্লাসটি ধারণ করে রক্ষা করেছিল or0
তা সম্পূর্ণ অজানা বলে c0
মনে হয়েছিল - DRY নীতিটির জ্ঞানের জন্য আমি যে দৃ for়তম যুক্তি বিবেচনা করতে পারি তার মধ্যে এটি অন্যতম। এবং কোডটিতে স্বতন্ত্র রক্ষণাবেক্ষণও থাকতে পারে c
। যেভাবেই এটি প্রদর্শিত হয় or0
এবং c0
একে অপরের থেকে স্বতন্ত্র বজায় রাখা হয়েছিল। এবং, আনন্দ এবং সুখ, একটি ত্রুটি ঘটছে cN
যা ঘটে না orN
।
সুতরাং আমার কয়েকটি প্রশ্ন আছে:
১) এই অ্যান্টি-প্যাটার্নটির কোনও নাম আছে? আমি প্রায়শই এটি ঘটতে দেখেছি এটি বিশ্বাস করা আমার পক্ষে কঠিন মনে হয় এটি কোনও নামী বিরোধী ধাঁচ নয়।
২) আমি কয়েকটি বিকল্প দেখতে পাচ্ছি:
ক।) orN
এমন একটি প্যারামিটার নেওয়ার জন্য স্থির করুন যা তার প্রয়োজনীয় সমস্ত সদস্যের ভেরিয়েবলের মান নির্দিষ্ট করে। তারপরে পাস হওয়া প্রয়োজনীয় সমস্ত প্যারামিটারের সাথে cN
কল করতে সংশোধন করুন orN
।
খ।) থেকে ম্যানুয়ালি বন্দর সংশোধন করা হয়েছে চেষ্টা orN
করতে cN
। (মনে মনে আমি এটি করতে চাই না তবে এটি একটি বাস্তব সম্ভাবনা))
সি।) - অগেইন orN
, cN
ইয়াকের পুনরায় কপি করুন তবে আমি সম্পূর্ণতার জন্য এটি তালিকাভুক্ত করছি।
ডি।) কোথায় cN
ভাঙ্গা আছে তা বের করার চেষ্টা করুন এবং তারপরে এটি স্বাধীনভাবে মেরামত করুন orN
।
বিকল্প একটি দীর্ঘমেয়াদে সেরা ফিক্সের মতো মনে হয় তবে আমি সন্দেহ করি যে গ্রাহক আমাকে এটি বাস্তবায়ন করতে দেবে। কখনই সময় বা অর্থ জিনিস ঠিক করার জন্য নয় তবে একই সমস্যাটি 40 বা 50 বার মেরামত করতে সময় এবং অর্থ সর্বদা, তাই না?
আমি বিবেচনা না করে থাকতে পারে এমন অন্য পদ্ধতির পরামর্শ কি কেউ দিতে পারেন?