Skenario pertama Anda, memang berlaku untuk menemukan kembali roda, itu menjelaskan sendiri.
Skenario kedua, TIDAK berlaku jika kode yang ada hanya membutuhkan sedikit modifikasi, tetapi jika ya, ide yang baik untuk mencoba menggunakan properti, metode, dan penggunaan yang serupa dari kode yang ada, sehingga pengembang lain tidak mengalami kesulitan dalam menggunakan "roda".
Hati-hati dengan pendekatan "selalu lebih baik untuk memulai dari kemarahan", mungkin butuh lebih banyak waktu daripada yang Anda harapkan.
Skenario ketiga yang Anda sebutkan, itu pendekatan "praktis". "Roda yang diberikan" dapat melakukan pekerjaan itu, tetapi, pada kenyataannya, menghabiskan terlalu banyak sumber daya, memori, kecepatan, dll.
Saya pernah bekerja di aplikasi yang perlu menampilkan data hierarki dalam kontrol treeview dari tabel tunggal. Kami sudah memiliki kontrol yang bisa melakukan itu, tetapi mendukung beberapa tabel, per item.
Untuk menggunakannya, saya harus belajar banyak hal, menetapkan terlalu banyak properti, mengeksekusi terlalu banyak metode, dan ITU LAMBAT. Seorang rekan kerja bersikeras untuk menggunakannya, agar "tidak menemukan kembali roda".
Saya melakukan kontrol baru, dari nol, membaca satu tabel, memprogram hanya beberapa properti yang mudah dipelajari. Dan sebelum saya menyadarinya, ada rekan kerja lain yang mengambilnya dari repositori kode bersama, dan menggantikan kontrol sebelumnya.
Bonus:
Ketika roda yang sudah Anda miliki adalah "kuadrat". Dengan "kuadrat", maksud saya di permukaan, sepertinya itu memang terlihat seperti solusi untuk masalah Anda, tetapi setelah melihat dengan baik, Anda sampai pada kesimpulan, itu tidak.
Itu tergantung jika Anda memiliki keterampilan, dan waktu, (dan otorisasi perusahaan Anda), untuk menemukan kembali roda.