Argüman uğruna, burada belirli bir dosyanın içeriğini satır satır basan örnek bir fonksiyon.
Versiyon 1:
void printFile(const string & filePath) {
fstream file(filePath, ios::in);
string line;
while (std::getline(file, line)) {
cout << line << endl;
}
}
Fonksiyonların bir soyutlama düzeyinde bir şey yapması tavsiye edilir. Bana göre, yukarıdaki kod hemen hemen bir şey yapar ve oldukça atomiktir.
Bazı kitaplar (örneğin, Robert C. Martin Clean Code gibi) yukarıdaki kodu ayrı fonksiyonlara bölmeyi öneriyor gibi görünmektedir.
Versiyon 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;
}
Neyi başarmak istediklerini anlıyorum (açık dosya / satırları oku / yazdırma satırı), ancak fazlaca dikkate almaz mı?
Orijinal versiyon basittir ve bir anlamda zaten bir şey yapar - bir dosyayı basar.
İkinci versiyon, ilk versiyondan daha az okunaklı olabilecek çok sayıda küçük fonksiyona yol açacaktır.
Bu durumda, kodu bir yerde bulundurmak daha iyi olmaz mıydı?
Hangi noktada "Bir Şey Yapıyor" paradigması zarar verir?
printFile
, printLines
nihayet, ve printLine
.