সম্প্রতি একটি কোড পর্যালোচনার সময় আমি একটি নতুন সহকর্মীর দ্বারা লিখিত কোড জুড়ে এসেছি, এতে গন্ধযুক্ত একটি প্যাটার্ন রয়েছে। আমার সন্দেহ হয় যে আমার সহকর্মীর সিদ্ধান্তগুলি বিখ্যাত ক্লিন কোড বইয়ের প্রস্তাবিত নিয়মের ভিত্তিতে (এবং সম্ভবত অন্যান্য অনুরূপ বইগুলির দ্বারাও)।
এটি আমার বোধগম্য যে শ্রেণি নির্মাতা একটি বৈধ অবজেক্ট তৈরির জন্য পুরোপুরি দায়বদ্ধ এবং এর মূল কাজটি কোনও অবজেক্টের (ব্যক্তিগত) বৈশিষ্ট্য নির্ধারণ করা। এটি অবশ্যই ঘটতে পারে যে শ্রেণি নির্মাতা ব্যতীত অন্য পদ্ধতিতে propertyচ্ছিক সম্পত্তির মানগুলি সেট করা যেতে পারে, তবে এই ধরনের পরিস্থিতি বরং বিরল (যদিও অগত্যা ভুল নয়, তবে শর্ত থাকে যে বাকী শ্রেণি এই জাতীয় সম্পত্তির optionচ্ছিকতা বিবেচনায় নেয়)। এটি গুরুত্বপূর্ণ, কারণ এটি নিশ্চিত করতে দেয় যে অবজেক্টটি সর্বদা বৈধ অবস্থায় রয়েছে।
যাইহোক, আমি যে কোডটির মুখোমুখি হয়েছিলাম সেখানে বেশিরভাগ সম্পত্তির মানগুলি নির্মাণকারীর চেয়ে অন্য পদ্ধতি দ্বারা সেট করা থাকে। গণনা থেকে প্রাপ্ত মানগুলি শ্রেণি জুড়ে কয়েকটি ব্যক্তিগত পদ্ধতির অভ্যন্তরে বৈশিষ্ট্যগুলিকে বরাদ্দ করা হয়। লেখক আপাতদৃষ্টিতে শ্রেণীর বৈশিষ্ট্যগুলি ব্যবহার করে যেন তারা বিশ্বব্যাপী ভেরিয়েবল যা এই মানগুলিকে প্রয়োজনীয় ফাংশনগুলিতে প্যারামিটারাইজ করার পরিবর্তে ক্লাসে অ্যাক্সেসযোগ্য হওয়া উচিত। অতিরিক্তভাবে, ক্লাসের পদ্ধতিগুলিকে একটি নির্দিষ্ট ক্রমে ডাকা উচিত, কারণ শ্রেণি অন্যথায় খুব বেশি কিছু করবে না।
আমি সন্দেহ করি যে বৃহত প্যারামিটারের তালিকা (<3 পরামিতি) এড়াতে পদ্ধতিগুলি সংক্ষিপ্ত রাখার (<= 5 টি কোডের লাইন) পরামর্শের দ্বারা এই কোডটি অনুপ্রেরণা পেয়েছে এবং নির্মাতারা অবশ্যই কাজ করবেন না (যেমন কোনও ধরণের গণনা সম্পাদন করা যা বস্তুর বৈধতার জন্য প্রয়োজনীয়।
এখন অবশ্যই আমি এই প্যাটার্নের বিরুদ্ধে মামলা করতে পারি যদি আমি প্রমাণ করতে পারি যে কোনও নির্দিষ্ট ক্রমে যখন পদ্ধতিগুলি না বলা হয় তখন সমস্ত ধরণের অপরিজ্ঞাত ত্রুটিগুলি সম্ভাব্যভাবে উত্থিত হয়। যাইহোক, আমি পূর্বাভাস দিচ্ছি যে এর প্রতিক্রিয়াটি বৈধতা যুক্ত করতে চলেছে যা যাচাই করে যাচাই করে যে পদ্ধতিগুলি একবার বলা হয়ে গেলে সেই বৈশিষ্ট্যগুলি সেট করতে হবে।
আমি বরং কোডটি পুরোপুরি পরিবর্তন করার প্রস্তাব করব, যাতে ক্লাসটি একটি নির্দিষ্ট ক্রমে (পদ্ধতিগতভাবে) ডাকা উচিত এমন কয়েকটি পদ্ধতির পরিবর্তে একটি আসল অবজেক্টে নীল প্রিন্ট হয়ে যায়।
আমি অনুভব করি যে কোডটির মুখোমুখি হয়েছি প্রকৃতপক্ষে, আমি বিশ্বাস করি যে কোনও শ্রেণীর সম্পত্তিতে কোনও মান কখন সংরক্ষণ করতে হবে এবং কোনও আলাদা পদ্ধতির ব্যবহারের জন্য কখন এটি একটি প্যারামিটারে রাখা উচিত - আমি সত্যই বিশ্বাস করি না যে তারা একে অপরের বিকল্প হতে পারে । আমি এই পার্থক্যের জন্য শব্দগুলি সন্ধান করছি।