Saya sering bertengkar dengan diri saya sendiri apakah akan meletakkan kunci tertentu di web.config saya atau di kelas Constants.cs atau sesuatu seperti ini.
Sebagai contoh jika saya ingin menyimpan kunci khusus aplikasi untuk kasus apa pun mungkin .. Saya bisa menyimpannya dan mengambilnya dari konfigurasi web saya melalui kunci kustom atau mengkonsumsinya dengan referensi konstanta di kelas konstanta saya.
Kapan Anda ingin menggunakan Konstanta di atas kunci konfigurasi?
Pertanyaan ini benar-benar berlaku untuk bahasa apa pun yang saya pikir.
sumber
xsd
alat untuk menghasilkan satu dari yang lain) dan menggunakan konfigurasi denganXMLSerializer
(cara yang paling masuk akal untuk menangani XML di C #), sehingga Anda dapat memvalidasi di muka, tetapi masih ada beberapa tambahan kerja.Mengubah Konstanta memerlukan membangun kembali aplikasi sebagian besar kasus. Dengan kata lain, konstanta tetap konstan ketika seseorang tidak memiliki akses ke kode.
Jadi setiap informasi yang harus disediakan pengguna akhir (dan perlu diubah) harus masuk dalam file konfigurasi. Kebanyakan yang lain harus berada di bawah konstanta. Namun, harus ada penanganan default atau kesalahan yang sah jika file konfigurasi rusak.
Elemen yang bukan bagian dari abstraksi objek (yaitu jika konstanta yang tidak dimaksudkan untuk dimodifikasi oleh objek eksternal (memanggil) cenderung disembunyikan dan pada dasarnya berarti mereka akan lebih baik sebagai konstanta pribadi daripada file konfigurasi.
Ketika ada banyak elemen konfigurasi yang berkaitan dengan objek yang berbeda, tidak terkait satu sama lain, dan ketika begitu banyak objek perlu mengeluarkan file konfigurasi (sama atau sendiri), kemungkinan hal-hal ini seharusnya adalah konstanta.
sumber
Aturan praktis yang sederhana adalah membuat konstanta ketika Anda tahu Anda akan bekerja dengan seperangkat nilai-nilai tetap yang Anda tahu dapat diterapkan untuk konteks tertentu tanpa perlu mengubah; menyediakan konfigurasi eksternal untuk yang lainnya.
Contoh konstanta yang baik adalah jika semua bentuk yang Anda kerjakan dapat berupa
SQUARE
atauROUND
. Dalam sebagian besar bahasa, Anda akan dapat memanfaatkan fakta bahwa nilai ini tidak berubah seiring waktu, dengan mengalokasikannya hanya sekali dan mengoptimalkan cara mengaksesnya.Konfigurasi eksternal diperlukan ketika Anda harus mengambil nilai secara dinamis karena Anda tidak dapat mengasumsikan sebelumnya nilai yang akan Anda kerjakan, tetapi itu tidak berarti Anda harus melakukan tradeoff kinerja: untuk nilai konfigurasi yang Anda harapkan hadir, ketika dilakukan dengan benar, Anda hanya membayar harga pengambilan mereka sekali dan masih mendapatkan semua manfaatnya.
sumber
Anda juga dapat menggunakan pola desain ini: "convention over configuration".
http://msdn.microsoft.com/en-us/magazine/dd419655.aspx http://en.wikipedia.org/wiki/Convention_over_configuration
sumber
Konstanta menurut definisi adalah lokasi memori untuk nilai yang tidak boleh berubah (seperti PI).
Saya berasumsi Anda berarti 'parameter' dan bukan konstanta
Selain apa yang telah dikatakan, perhatikan bahwa mengekspos variabel ke input pengguna dari file konfigurasi dapat membahayakan aplikasi.
Jika memungkinkan, jangan memaparkan nilai dalam file konfigurasi tanpa memvalidasi mereka dalam kode untuk melakukan pemeriksaan kewarasan. Juga, saya sarankan Anda tidak menempatkan parameter aturan bisnis (seperti gaji maksimum, dll.) Dalam file konfigurasi dan jangan gunakan konstanta untuk itu juga. Nilai-nilai tersebut harus disimpan dalam database dengan definisi tabel yang sesuai sehingga beberapa keamanan ditegakkan ketika mereka diubah dan Anda dapat secara otomatis membuat versi nilai data (menggunakan procs yang disimpan atau log db). Tentu saja, ini tergantung pada seberapa sensitif aplikasi Anda.
Jika Anda pernah menggunakan file konfigurasi untuk menyimpan data, pastikan Anda membuat versinya.
sumber