Saya memiliki kelas yang disebut Writer
yang memiliki fungsi writeVector
seperti:
void Drawer::writeVector(vector<T> vec, bool index=true)
{
for (unsigned int i = 0; i < vec.size(); i++) {
if (index) {
cout << i << "\t";
}
cout << vec[i] << "\n";
}
}
Saya mencoba untuk tidak memiliki kode duplikat, sambil tetap mengkhawatirkan kinerjanya. Dalam fungsinya, saya melakukan if (index)
pengecekan pada setiap putaran saya for
-loop, meskipun hasilnya selalu sama. Ini bertentangan dengan "mengkhawatirkan kinerja".
Saya dapat dengan mudah menghindari ini dengan menempatkan centang di luar for
-loop saya . Namun, saya akan mendapatkan banyak kode duplikat:
void Drawer::writeVector(...)
{
if (index) {
for (...) {
cout << i << "\t" << vec[i] << "\n";
}
}
else {
for (...) {
cout << vec[i] << "\n";
}
}
}
Jadi ini adalah solusi yang "buruk" untuk saya. Apa yang saya pikirkan, adalah dua fungsi pribadi, salah satunya keluar dari indeks dan kemudian memanggil yang lain. Yang lainnya hanya mengeluarkan nilainya. Namun, saya tidak tahu bagaimana menggunakannya dengan program saya, saya masih memerlukan if
cek untuk melihat mana yang harus dihubungi ...
Berdasarkan masalah tersebut, polimorfisme sepertinya solusi yang tepat. Tetapi saya tidak dapat melihat bagaimana saya harus menggunakannya di sini. Apa cara yang lebih disukai untuk memecahkan masalah semacam ini?
Ini bukan program nyata, saya hanya tertarik untuk mempelajari bagaimana masalah seperti ini harus diselesaikan.