तर्क के लिए यहां एक नमूना फ़ंक्शन है जो किसी दिए गए फ़ाइल लाइन-बाय-लाइन की सामग्री को प्रिंट करता है।
संस्करण 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
।