Dalam C #, apakah saya didorong untuk menggunakan kata kunci var serba guna untuk setiap deklarasi variabel? Jika ya, apakah saya harus menyebutkan karakter khusus untuk nilai literal dalam deklarasi variabel seperti M untuk desimal dalam pernyataan berikut:
var myDecimal = 14.5M;
Jika ada bedanya, saya mencoba melakukan pengembangan web dengan C #.
c#
variables
data-types
wassimans
sumber
sumber
auto
.Jawaban:
Ada banyak perselisihan tentang penggunaan var. Aturan umum saya adalah sebagai berikut.
Pada dasarnya, tujuannya adalah untuk membuatnya lebih mudah untuk membaca kode. Jika Anda merasa bahwa var cukup karena tugasnya jelas, gunakan var. Gunakan nama tipe lengkap sebagai petunjuk bagi pembaca ketika Anda merasa perlu.
sumber
foreach
pernyataan di mana saya hanya peduli tentang penghitungan koleksi, tidak harus tentang jenis setiap item.Kapan menggunakan
var
adalah pemrograman "perang suci". Tepatnya ada satu tempat di mana diperlukan: ketika hasil operasi membuat jenis anonim, seperti:Di tempat lain, itu opsional dan benar-benar sesuai dengan standar pengkodean Anda untuk menggunakannya atau tidak dalam situasi lain.
Dan ya, Anda akan memerlukan karakter khusus untuk literal agar kompiler tahu apa itu di sisi kanan. Dalam contoh Anda, tanpa
M
, standarnya adalahdouble
bukandecimal
.sumber
Dari MSDN :
Saya benar-benar tidak suka mengetik secara implisit. Di permukaan itu cenderung membuat kode lebih mudah dibaca, tetapi dapat menyebabkan banyak masalah di jalan. Jika dev mengubah penginisialisasi variabel, katakanlah, dari
untuk
atau
Jenisnya akan berubah, menghasilkan seluruh kesalahan kompiler atau, jika itu dalam tampilan web dan Anda tidak menggunakan langkah post-build untuk mengkompilasi pandangan Anda, seluruh kesalahan runtime yang tidak akan ditangkap tanpa efektif pengujian pra-penempatan.
Mengetik tersirat juga tidak berfungsi di mana-mana (dari tautan MSDN yang sama)
Menjaga kode Anda konsisten (dalam hal ini, menggunakan pengetikan eksplisit di mana-mana) adalah hal yang sangat, sangat baik. Menurut pendapat saya,
var
malas dan tidak memberikan manfaat nyata, dan memperkenalkan titik kegagalan potensial lain dalam proses yang sudah kompleks.Pembaruan 2017
Saya benar-benar berubah pikiran. Ketika bekerja di C #, saya menggunakan
var
sebagian besar waktu (kecuali hal-hal seperti variabel tipe antarmuka dan semacamnya). Itu membuat kode singkat yang meningkatkan keterbacaan. Namun, tetap - perhatikan apa jenis sebenarnya diselesaikan.sumber
this.
mana - mana, atau mengatakanSystem.Blah.SomeType
alih-alihusing
, yang menurut saya masih sangat mengganggu, kode yang lebih singkat adalah - setidaknya bagi saya - biasanya lebih mudah diurai secara visual. Masih banyak skenario di mana pengetikan eksplisit adalah pilihan yang tepat. Tapi, akhir-akhir ini aku kurang sebagai pengacara bahasa daripada seseorang yang hanya berusaha mendapatkan kode bersih dari pintu.using namespace std;
dalam file .cpp. (Bukan header, karena saya lebih suka untuk menghindari terpal dan berbulu.)Referensi C # menunjukkan yang berikut untuk menggambarkan penggunaan yang baik vs buruk dari konstruksi ini:
Contoh berikut menunjukkan dua ekspresi kueri. Dalam ekspresi pertama, penggunaan var diizinkan tetapi tidak diperlukan, karena jenis hasil kueri dapat dinyatakan secara eksplisit sebagai IEnumerable. Namun, dalam ekspresi kedua, var harus digunakan karena hasilnya adalah kumpulan tipe anonim, dan nama tipe itu tidak dapat diakses kecuali ke kompiler itu sendiri. Perhatikan bahwa dalam Contoh # 2, item variabel iterasi foreach juga harus diketik secara implisit.
sumber
Kata kunci var hanya meminta kompiler untuk menyimpulkan tipe variabel tipe var secara otomatis. Oleh karena itu, jika Anda ingin menyimpan variabel tipe desimal dalam variabel var, Anda harus menggunakan m. Demikian juga jika Anda menyimpan string, Anda harus menyertakannya dalam tanda kutip.
sumber
Bagi saya, saya tidak menggunakan var untuk kasus-kasus berikut:
Fruit foo = new Apple();
. Dalam hal ini, saya pikir var adalah untuk menghindari dan menggunakan kelas induk (di sini Buah) lebih baik dengan memungkinkan pemahaman yang lebih baik tentang logika kode dan batasan bug yang mungkin (Dengan var, tidak ada pemeriksaan konsep polimorfik!)Untuk selebihnya, saya pikir ini tergantung pada kasus dan latar belakang pengembang. Beberapa orang dari dunia PHP lebih suka tidak merawat tipe variabel, dan beberapa orang dari dunia Java hanya akan berpikir bahwa var adalah bid'ah dan semakin banyak verbose semakin baik.
Anda harus membuat opini pribadi Anda :)
sumber