Operator penggabungan nol (??)
Secara pribadi, saya tidak melihat kelemahan menggunakan operator ini. Pertimbangkan tiga contoh kode berikut, dari operator baru 'mudah' hingga 'kompleks'.
Tanpa sihir:
bool isNameSet = false;
string name;
if ( isNameSet )
{
Console.WriteLine( name );
}
else
{
Console.WriteLine( "No name set." );
}
Operator ternary:
bool isNameSet = false;
string name;
Console.WriteLine( isNameSet ? name : "No name set." );
Null penggabungan:
string name = null;
Console.WriteLine( name ?? "No name set." );
Alasan operator ini ditemukan adalah karena mereka mewakili operasi pemrograman yang sangat umum . Tidak ingin menggunakannya karena Anda tidak terbiasa hanya keras kepala . Bahasa berevolusi, fitur berevolusi, belajar menggunakannya!
kata kunci var
Saya memiliki pendapat yang agak berbeda tentang kata kunci var. Jenis variabel sering memberikan informasi tambahan tentang kode Anda. Saya menemukan menyembunyikan jenis dengan menggunakan kata kunci var kadang membuat kode kurang dibaca. Anda tidak tahu apa yang diharapkan tanpa menggunakan pelengkapan otomatis, atau melayang di atas pengidentifikasi untuk melihat apa yang sebenarnya. Menurut pendapat saya, ini menghasilkan kode yang lebih lambat untuk membaca / menulis.
Saya menggunakan kata kunci ketika saya menemukan bahwa jenisnya tidak memberikan banyak informasi tambahan.
- Terutama di loop foreach , yang saya pelajari dari Resharper karena merupakan pengaturan di sana. Sebagian besar waktu, Anda tahu jenis koleksi yang Anda lalui, sehingga Anda tahu Anda mengharapkan barang dari dalam koleksi itu.
- Permintaan Linq . Hasil kueri linq seringkali merupakan tipe generik yang sangat kompleks. Menampilkan jenis ini tidak lebih berbahaya daripada kebaikan.
- Nama ketik panjang yang diinisialisasi dengan konstruktornya. Anda sudah bisa tahu apa jenisnya dengan melihat konstruktor.
Sebagai contoh untuk pernyataan terakhir:
ThisIsSomeSpecializedTypeRightHere duplication =
new ThisIsSomeSpecializedTypeRightHere();
var justAsReadable =
new ThisIsSomeSpecializedTypeRightHere(); // Less duplication.
// But I still prefer the following ...
int number = 9;
SomeCreatedType foo = Factory.CreateSomeType();
??
operator penggabungan nol setelah dijelaskan, mereka tidak boleh berada di dekat kode produksi.