Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Konten ini dicetak ulang oleh izin Pearson Education, Inc. dari Panduan Desain Kerangka Kerja: Konvensi, Idiom, dan Pola untuk Pustaka .NET yang Dapat Digunakan Kembali, Edisi ke-2. Edisi itu diterbitkan pada tahun 2008, dan buku tersebut telah sepenuhnya direvisi pada edisi ketiga. Beberapa informasi di halaman ini mungkin sudah kedaluarsa.
Ada dua jenis konstruktor: konstruktor jenis dan konstruktor instans.
Konstruktor tipe bersifat statis dan dijalankan oleh CLR sebelum tipe tersebut digunakan. Konstruktor instans dijalankan saat instans dari suatu tipe dibuat.
Konstruktor jenis tidak dapat mengambil parameter apa pun. Konstruktor instans dapat digunakan. Konstruktor instans yang tidak mengambil parameter apa pun sering disebut konstruktor tanpa parameter.
Konstruktor adalah metode yang paling alami untuk membuat instans suatu tipe. Sebagian besar pengembang akan mencari dan mencoba menggunakan konstruktor sebelum mereka mempertimbangkan cara alternatif untuk membuat instans (seperti metode pabrik).
✔️ PERTIMBANGKAN dengan menyediakan konstruktor sederhana, idealnya default.
Konstruktor sederhana memiliki sejumlah kecil parameter, dan semua parameter adalah primitif atau enum. Konstruktor sederhana seperti itu meningkatkan kegunaan kerangka kerja.
✔️ PERTIMBANGKAN untuk menggunakan metode pembuatan statis alih-alih konstruktor jika semantik operasi yang diinginkan tidak berkaitan langsung dengan pembentukan instance baru, atau jika mengikuti pedoman desain konstruktor terasa tidak wajar.
✔️ DO menggunakan parameter konstruktor sebagai pintasan untuk mengatur properti utama.
Seharusnya tidak ada perbedaan dalam semantik antara menggunakan konstruktor kosong diikuti oleh beberapa set properti dan menggunakan konstruktor dengan beberapa argumen.
✔️ LAKUKAN menggunakan nama yang sama untuk parameter konstruktor dan properti jika parameter konstruktor digunakan hanya untuk mengatur properti.
Satu-satunya perbedaan antara parameter tersebut dan properti harus casing.
Lakukan pekerjaan seminimal mungkin di konstruktor.
Konstruktor tidak boleh melakukan banyak pekerjaan selain menangkap parameter konstruktor. Biaya pemrosesan lain harus ditunda hingga diperlukan.
✔️ LAKUKAN melempar pengecualian dari konstruktor instans, jika sesuai.
✔️ DO secara eksplisit menyatakan konstruktor tanpa parameter publik dalam kelas, jika konstruktor semacam itu diperlukan.
Jika Anda tidak secara eksplisit mendeklarasikan konstruktor apa pun pada suatu jenis, banyak bahasa (seperti C#) akan secara otomatis menambahkan konstruktor tanpa parameter publik. (Kelas abstrak memiliki konstruktor yang terproteksi.)
Menambahkan konstruktor berparameter ke kelas mencegah pengkompilasi menambahkan konstruktor tanpa parameter. Hal ini sering menyebabkan perubahan yang memutus secara tidak disengaja.
❌ AVOID secara eksplisit mendefinisikan konstruktor tanpa parameter pada struktur.
Ini membuat pembuatan array lebih cepat, karena jika konstruktor tanpa parameter tidak ditentukan, itu tidak harus dijalankan pada setiap slot dalam array. Perhatikan bahwa banyak kompilator, termasuk C#, tidak mengizinkan struktur memiliki konstruktor tanpa parameter karena alasan ini.
❌ HINDARI memanggil anggota virtual pada objek di dalam konstruktornya.
Memanggil anggota virtual akan menyebabkan penggantian yang paling terwarisi dipanggil, bahkan jika konstruktor dari tipe yang paling terwarisi belum sepenuhnya dijalankan.
Pedoman Konstruktor Jenis
✔️ DO buatlah konstruktor statis privat.
Konstruktor statis, juga disebut konstruktor kelas, digunakan untuk menginisialisasi jenis. CLR memanggil konstruktor statis sebelum instans pertama jenis dibuat atau anggota statis apa pun pada jenis tersebut dipanggil. Pengguna tidak memiliki kontrol atas kapan konstruktor statis dipanggil. Jika konstruktor statis tidak privat, konstruktor dapat dipanggil dengan kode selain CLR. Tergantung pada operasi yang dilakukan di konstruktor, ini dapat menyebabkan perilaku yang tidak terduga. Kompilator C# memaksa konstruktor statis menjadi privat.
❌ JANGAN melemparkan pengecualian dari konstruktor statis.
Jika pengecualian dilemparkan dari konstruktor jenis, jenisnya tidak dapat digunakan di domain aplikasi saat ini.
✔️ PERTIMBANGKAN untuk menginisialisasi field statis secara langsung daripada secara eksplisit menggunakan konstruktor statis, karena runtime dapat mengoptimalkan performa tipe yang tidak memiliki konstruktor statis yang ditentukan secara eksplisit.
© Sebagian 2005, 2009 Microsoft Corporation. Seluruh hak cipta dilindungi.
Dicetak ulang oleh izin Pearson Education, Inc. dari Panduan Desain Kerangka Kerja: Konvensi, Idiom, dan Pola untuk Pustaka .NET yang Dapat Digunakan Kembali, Edisi ke-2 oleh Krzysztof Cwalina dan Brad Abrams, diterbitkan 22 Okt 2008 oleh Addison-Wesley Professional sebagai bagian dari Seri Pengembangan Microsoft Windows.