인수를 위해 주어진 파일의 내용을 한 줄씩 인쇄하는 샘플 함수가 있습니다.
버전 1 :
void printFile(const string & filePath) {
fstream file(filePath, ios::in);
string line;
while (std::getline(file, line)) {
cout << line << endl;
}
}
함수가 한 추상화 레벨에서 한 가지 작업을 수행하는 것이 좋습니다. 위 코드는 거의 한 가지 일이지만 상당히 원자 적입니다.
Robert C. Martin의 Clean Code와 같은 일부 책은 위의 코드를 별도의 기능으로 나누는 것을 제안하는 것 같습니다.
버전 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
.