এটি আমার কোড বা আমার সহকর্মীদের কোড নয় বলে এই প্রবন্ধটি বলি। কয়েক বছর আগে যখন আমাদের সংস্থা ছোট ছিল, তখন আমাদের কিছু প্রকল্পের প্রয়োজন ছিল যাগুলির জন্য আমাদের সক্ষমতা ছিল না, তাই তারা আউটসোর্স হয়েছিল। এখন, সাধারণভাবে আউটসোর্সিং বা ঠিকাদারদের বিরুদ্ধে আমার কাছে কিছুই নেই, তবে তারা যে কোডবেস তৈরি করেছিল তা ডাব্লুটিএফ-এর একটি ভর। বলা হচ্ছে, এটি (বেশিরভাগ ক্ষেত্রে) কাজ করে, সুতরাং আমি মনে করি এটি আমি দেখেছি আউটসোর্সিং প্রকল্পের শীর্ষ 10%।
আমাদের সংস্থা যেমন বড় হয়েছে, আমরা ঘরে বসে আমাদের আরও বিকাশ করার চেষ্টা করেছি। এই বিশেষ প্রকল্পটি আমার কোলে পৌঁছেছে তাই আমি এটির উপর দিয়ে যাচ্ছি, এটি পরিষ্কার করছি, পরীক্ষা যোগ করছি, ইত্যাদি etc.
আমি একটি প্যাটার্নটি দেখতে পেয়েছি যা অনেকবার পুনরাবৃত্তি হয়েছিল এবং এটি এতটা মন খারাপের মতো মনে হচ্ছে যে আমি ভাবছিলাম যে সম্ভবত কারণ আছে কিনা এবং আমি কেবল এটি দেখতে পাচ্ছি না। প্যাটার্নটি এমন কোনও অবজেক্ট যা কোনও পাবলিক পদ্ধতি বা সদস্য নয়, কেবলমাত্র একটি পাবলিক কনস্ট্রাক্টর যা বস্তুর সমস্ত কাজ করে does
উদাহরণস্বরূপ, (কোডটি জাভাতে রয়েছে, যদি তা গুরুত্বপূর্ণ হয় তবে আমি আশা করি এটি আরও সাধারণ প্রশ্ন হবে):
public class Foo {
private int bar;
private String baz;
public Foo(File f) {
execute(f);
}
private void execute(File f) {
// FTP the file to some hardcoded location,
// or parse the file and commit to the database, or whatever
}
}
যদি আপনি ভাবছেন, এই ধরণের কোডটি প্রায়শই নিম্নলিখিত পদ্ধতিতে কল করা হয়:
for(File f : someListOfFiles) {
new Foo(f);
}
এখন, আমি অনেক আগেই শিখিয়েছি যে একটি লুপে ইনস্ট্যান্টেটেড অবজেক্টগুলি সাধারণত একটি খারাপ ধারণা এবং কনস্ট্রাক্টরদের ন্যূনতম কাজ করা উচিত। এই কোডটি দেখে মনে হচ্ছে কনস্ট্রাক্টরকে ফেলে দেওয়া এবং execute
একটি সর্বজনীন স্ট্যাটিক পদ্ধতি তৈরি করা ভাল।
আমি কেন ঠিকাদারটিকে জিজ্ঞাসা করেছি যে এটি কেন এইভাবে করা হয়েছিল এবং আমি যে প্রতিক্রিয়া পেয়েছি তা হ'ল "আপনি চাইলে আমরা এটি পরিবর্তন করতে পারি"। যা সত্যই সহায়ক ছিল না।
যাইহোক, কোনও প্রোগ্রামিং ভাষায় এই জাতীয় কিছু করার কোনও কারণ আছে, নাকি ডেইলি ডব্লিউটিএফের কাছে এটি কেবল অন্য জমা?
public static void main(string[] args)
এবং যারা বস্তুর কথা শুনেছেন, তারপরে সেগুলি একসাথে ম্যাশ করার চেষ্টা করেছিলেন।