বয়লারপ্লেট কোডের পক্ষে একটি যুক্তি হ'ল আপনি যদি এটি এক জায়গায় পরিবর্তন করেন তবে এটি কেবল কোডের একটি প্রবাহকে প্রভাবিত করে। এটি প্রায়শই-না-এই তুলনায় ভারসাম্য বজায় রাখতে হবে, আপনি কোডটি ব্যবহার করে এমন প্রতিটি অংশকে প্রভাবিত করতে চান এমন পরিবর্তন চান। তবে আমি বিরল উদাহরণ দেখেছি যা যুক্তি সমর্থন করে।
ধরা যাক আপনার কাছে কোডের একটি অংশ রয়েছে যা বলছে
public ForTheBar(Foo foo)
{
Bar bar = foo.bar();
return bar.BeFooed();
}
এটি আপনার কোডে প্রায় 2 টি স্থানে ব্যবহৃত হয়।
একদিন কেউ এসে বললেন "ঠিক আছে, কেবল এই পথেই, আমরা চাই যে আপনি এটি ফাঁকি দেওয়ার আগে বারটি গ্রোমিট করুন।"
এবং আপনি "ভাল এটি সহজ।"
public ForTheBar(Foo foo, bool shouldIGrommit)
{
Bar bar = foo.bar();
if (shouldIGrommit)
{
bar.BeGrommitted();
}
return bar.BeFooed();
}
তারপরে আপনার ব্যবহারকারীর কিছু নতুন কার্যকারিতা যুক্ত হয়েছে এবং আপনি মনে করেন এটি FooTheBar এর সাথে উপযুক্ত। এবং আপনি তাদের কর্তব্য সহকারে জিজ্ঞাসা করুন যে আপনার যদি এই বারটিকে ফাঁকি দেওয়ার আগে গ্রোমিট করা উচিত এবং তারা "না, এবার নয়" বলে।
সুতরাং আপনি কেবল উপরের পদ্ধতিটি কল করুন।
তবে তারপরে আপনার ব্যবহারকারী বলেছেন "ঠিক আছে, অপেক্ষা করুন, তৃতীয় ক্ষেত্রে, আমরা আপনাকে বেফুয়েড কল করার আগে বার ডুডল দিতে চাই।"
কোনও সমস্যা নেই, আপনি ভাবেন, আমি এটি করতে পারি।
public ForTheBar(Foo foo, bool shouldIGrommit, bool shouldIDoodle)
{
Bar bar = foo.bar();
if (shouldIGrommit)
{
bar.BeGrommitted();
}
if (shouldIDoodle)
{
bar.BeDoodled();
}
return bar.BeFooed();
}
হঠাৎ আপনার কোডটি কম বয়লারপ্লেটে পরিণত হচ্ছে। সম্ভবত আপনার কোড পুনরাবৃত্তি দুটি লাইন গ্রহণ করা উচিত ছিল। এতক্ষণে আপনার কাছে তিনটি কোডের টুকরো থাকবে, প্রতিটি প্রতিটি ২-৩ লাইন দীর্ঘ এবং খুব বেশি পুনরাবৃত্তি না দেখে।
এই সমস্ত বলেছিল, আমি এটির সাথে পাল্টা বলব "এটি কোনও সাধারণ ঘটনা নয়, এবং যখন এটি ঘটে তখন আপনি পুনঃসংশোধক করতে পারেন।"
আমি সম্প্রতি শুনেছি আরও একটি যুক্তি হ'ল বয়লারপ্লেট কোড আপনাকে মাঝে মাঝে কোড নেভিগেট করতে সহায়তা করতে পারে। আমরা যে উদাহরণটির সাথে আলোচনা করছিলাম তা হ'ল আমরা যেখানে টন বয়লারপ্লেট ম্যাপিং কোডটি সরিয়ে আউট করেছি এবং এটিকে অটোম্যাপার দিয়ে প্রতিস্থাপন করেছি। এখন এটি যুক্তিযুক্ত হয়েছিল, কারণ সবকিছুই কনভেনশন-ভিত্তিক, আপনি IDE তে "এই সম্পত্তিটি কোথায় সেট করুন" বলতে পারবেন না এবং এটি জানতে পারার প্রত্যাশা রাখবেন না।
আমি আইওসি পাত্রে সম্পর্কে লোকেদের অনুরূপ বিষয়ে তর্ক করতে দেখেছি।
আমি তাদের সাথে একমত তা বলার অপেক্ষা রাখে না, তবে তা তবে এটি একটি ন্যায্য যুক্তি।