Dalam C # apa praktik terbaik untuk merangkum variabel yang perlu saya gunakan dalam beberapa metode? Apakah saya tetap bisa mendeklarasikan mereka di bagian atas kelas saya di atas dua metode?
Juga jika saya menggunakan pengaturan aplikasi dari file konfigurasi saya, haruskah saya menggunakan pengambil? seperti ini...
private string mySetting{ get { return WebConfigurationManager.AppSettings["mySetting"]; } }
Apa praktik terbaik itu?
c#
programming-practices
pengguna1944367
sumber
sumber
WebConfigurationManager.AppSettings
karena lebih mudah untuk mengubah nantiJawaban:
Itu tidak hanya baik-baik saja. Menurut buku Clean Code itu sebenarnya praktik yang sangat bagus, dan Paman Bob benar-benar mendorongnya. Variabel yang digunakan oleh banyak metode dapat menunjukkan tingkat kohesi yang tinggi di antara metode-metode tersebut. Selain itu, variabel objek tingkat tinggi juga bisa mengisyaratkan bahwa kelas tersebut harus dibagi menjadi dua sehingga mendeklarasikannya sebagai variabel objek dapat membantu Anda mengetahui kandidat kelas tersembunyi.
Variabel level objek bukan variabel global, jadi jangan takut untuk menggunakannya jika mereka harus dibagi dengan berbagai metode.
sumber
Meringkas pengaturan Anda secara konstan adalah ide bagus.
Apa yang saya lakukan adalah membuat kelas pengaturan baik global statis satu atau beberapa kelas instan yang kemudian akan saya kelola dengan injeksi ketergantungan. Lalu saya memuat semua pengaturan dari konfigurasi ke kelas itu saat start up.
Saya juga menulis perpustakaan kecil yang menggunakan refleksi untuk membuatnya lebih mudah.
Setelah pengaturan saya di file konfigurasi saya
Saya membuat kelas statis atau instance tergantung pada kebutuhan saya. Untuk aplikasi sederhana dengan hanya beberapa pengaturan, satu kelas statis baik-baik saja.
Kemudian menggunakan panggilan perpustakaan saya baik
Inflate.Static
atauInflate.Instance
dan yang keren adalah saya dapat menggunakan sumber nilai kunci apa pun.Semua kode untuk ini ada di GitHub di https://github.com/Enexure/Enexure.Fire.Configuration
Bahkan ada paket nuget:
Kode untuk referensi:
sumber