ভুল অ্যাবস্ট্রাকশনের চেয়ে কোড ডুপ্লিকেশন সস্তা

ডেভেলপাররা DRY প্রিন্সিপল পছন্দ করেন।

আপনি নিজেকে পুনরাবৃত্তি করা এড়াতে চান। আপনি মার্জিত এবং পুনরায় ব্যবহারযোগ্য কোড চান।

কিন্তু এই লক্ষ্যটি প্রায়ই একটি ফাঁদে ফেলে দেয়: সময়ের আগে বা অকাল অ্যাবস্ট্রাকশন (premature abstraction)।

কোড পুনরাবৃত্তি করা ভুল মনে হতে পারে। তবে, একটি খারাপ অ্যাবস্ট্রাকশনের চেয়ে কোড ডুপ্লিকেশন বা পুনরাবৃত্তি করা প্রায়শই অনেক বেশি সাশ্রয়ী।

আমরা নিখুঁত মডুলার সিস্টেম তৈরি করার চেষ্টা করি। আমরা জটিলতা সামলানোর জন্য প্যাটার্ন খুঁজি এবং লজিক আলাদা করি।

সুপরিকল্পিত অ্যাবস্ট্রাকশন সফটওয়্যারকে স্কেল করতে সাহায্য করে।

কিন্তু অনেক অ্যাবস্ট্রাকশন খুব দ্রুত বা সময়ের আগেই তৈরি করা হয়। আপনি যদি সমস্যাটি পুরোপুরি না বোঝেন, তবে আপনার অ্যাবস্ট্রাকশন একটি বোঝা (liability) হয়ে দাঁড়াবে।

একটি ভুল অ্যাবস্ট্রাকশন বেশ কিছু সমস্যার সৃষ্টি করে:

  • ওভার-ইঞ্জিনিয়ারিং: আপনি সাধারণ সমস্যার জন্য জটিল সমাধান তৈরি করেন।
  • রিজিডিটি (অনমনীয়তা): আপনার কোড পরিবর্তন করা কঠিন হয়ে পড়ে কারণ এটি এমন একটি ভবিষ্যতের পূর্বাভাস দেওয়ার চেষ্টা করে যা কখনোই ঘটে না।
  • অস্পষ্ট উদ্দেশ্য (Obscured Intent): জেনেরিক ইন্টারফেসের স্তরের নিচে বিজনেস লজিক লুকিয়ে থাকে। এটি ডিবাগিং করা কঠিন করে তোলে।
  • টাইট কাপলিং: আপনার সিস্টেমের অংশগুলো অ্যাবস্ট্রাকশনের সাথেই আটকে যায়।

এর মূল্য অনেক বেশি। ব্যবহারকারীর সমস্যা সমাধানের পরিবর্তে আপনি আপনার নিজস্ব আর্কিটেকচারের সাথে লড়াই করতে সময় ব্যয় করেন। এটি আপনার টিমের গতি কমিয়ে দেয় এবং রিফ্যাক্টরিং করা কঠিন করে তোলে।

আমি আপনাকে সবকিছু কপি এবং পেস্ট করতে বলছি না। আমি একটি বাস্তবসম্মত (pragmatic) পদ্ধতির পরামর্শ দিচ্ছি।

নিয়ন্ত্রিত ডুপ্লিকেশনকে একটি টুল হিসেবে ব্যবহার করুন। যেখানে প্রয়োজনীয়তা দ্রুত পরিবর্তিত হয় বা যেখানে আপনি অনিশ্চয়তার সম্মুখীন হন, সেখানে এটি ব্যবহার করুন।

অ্যাবস্ট্রাকশন তৈরি করার আগে প্যাটার্নটি স্পষ্টভাবে দেখা পর্যন্ত অপেক্ষা করুন।

উৎস: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-code-duplication-is-far-cheaper-than-the-wrong-abstraction-2cbo