Saya sedang berdiskusi dengan rekan kerja saya tentang seberapa banyak pekerjaan yang dapat dilakukan oleh seorang konstruktor. Saya memiliki kelas, B yang secara internal membutuhkan objek lain A. Objek A adalah salah satu dari sedikit anggota yang perlu dilakukan oleh kelas B. Semua metode publiknya tergantung pada objek internal A. Informasi tentang objek A disimpan dalam DB, jadi saya mencoba memvalidasi dan mendapatkannya dengan mencarinya di DB di konstruktor. Rekan kerja saya menunjukkan bahwa konstruktor seharusnya tidak melakukan banyak pekerjaan selain menangkap parameter konstruktor. Karena semua metode publik akan gagal juga jika objek A tidak ditemukan menggunakan input ke konstruktor, saya berpendapat bahwa alih-alih membiarkan contoh dibuat dan kemudian gagal, sebenarnya lebih baik untuk membuang di awal konstruktor.
Apa yang dipikirkan orang lain? Saya menggunakan C # jika itu membuat perbedaan.
Membaca Apakah pernah ada alasan untuk melakukan semua pekerjaan objek dalam sebuah konstruktor? saya bertanya-tanya mengambil objek A dengan pergi ke DB adalah bagian dari "inisialisasi lain yang diperlukan untuk membuat objek siap digunakan" karena jika pengguna memberikan nilai yang salah kepada konstruktor, saya tidak akan dapat menggunakan metode publiknya.
Konstruktor harus instantiate bidang objek dan melakukan inisialisasi lain yang diperlukan untuk membuat objek siap digunakan. Ini umumnya berarti konstruktor kecil, tetapi ada skenario di mana ini akan menjadi sejumlah besar pekerjaan.