তর্ক করার জন্য এখানে একটি নমুনা ফাংশন যা প্রদত্ত ফাইলের লাইন-বাই-লাইনের বিষয়বস্তু মুদ্রণ করে।
সংস্করণ 1:
void printFile(const string & filePath) {
fstream file(filePath, ios::in);
string line;
while (std::getline(file, line)) {
cout << line << endl;
}
}
আমি জানি এটি প্রস্তাবিত যে ফাংশনগুলি বিমূর্ততার এক স্তরে একটি কাজ করে। আমার কাছে, যদিও উপরের কোডটি বেশ কয়েকটি কাজ করে এবং মোটামুটি পারমাণবিক।
কিছু বই (যেমন রবার্ট সি মার্টিনের ক্লিন কোড) উপরের কোডটি পৃথক ফাংশনে বিভক্ত করার পরামর্শ দেয় বলে মনে হয়।
সংস্করণ 2:
void printFile(const string & filePath) {
fstream file(filePath, ios::in);
printLines(file);
}
void printLines(fstream & file) {
string line;
while (std::getline(file, line)) {
printLine(line);
}
}
void printLine(const string & line) {
cout << line << endl;
}
আমি বুঝতে পারি তারা কী অর্জন করতে চায় (ফাইল খুলুন / পঠন লাইনগুলি / মুদ্রণ লাইন) তবে এটি কি কিছুটা ওভারকিল নয়?
মূল সংস্করণটি সহজ এবং কিছু অর্থে ইতিমধ্যে একটি কাজ করে - একটি ফাইল মুদ্রণ করে।
দ্বিতীয় সংস্করণটি একটি বিশাল সংখ্যক সত্যই ছোট ছোট ফাংশনকে নিয়ে যাবে যা প্রথম সংস্করণের তুলনায় অনেক কম সুস্পষ্ট হতে পারে।
এই ক্ষেত্রে কোডটি এক জায়গায় রাখাই ভাল?
"ডু ওয়ান থিং" দৃষ্টান্তটি কোন মুহুর্তে ক্ষতিকারক হয়ে ওঠে?
printFile
, printLines
, এবং পরিশেষে printLine
।