Saya seorang programmer otodidak, pemula-ish, jadi saya minta maaf jika saya tidak memaku istilah programmer.
Saya sedang mengerjakan proyek di mana saya memberikan data, yang akan terus diperbarui, untuk pengembang yang pada dasarnya akan membuat alat untuk menghasilkan laporan dari pertanyaan pada data.
Tampaknya semua orang yang terlibat berpikir bahwa mereka perlu meng-hard-data nilai data (bukan skema, tetapi domain / nilai sendiri) ke dalam program pembuatan laporan.
Sebagai contoh, misalkan kita melaporkan personil; laporan akan dibagi menjadi beberapa kategori, dengan tajuk untuk setiap departemen, dan kemudian di bawah masing-masing departemen tajuk akan menjadi subpos judul pekerjaan, dan kemudian di bawah setiap subpos akan ada daftar karyawan. Para pengembang ingin melakukan hard-code pada departemen dan jabatan pekerjaan. Di sisi lain, saya akan berpikir bahwa mereka dapat / akan menanyakan hal-hal tersebut pada saat runtime, mengurutkan catatan berdasarkan mereka, dan menghasilkan header laporan secara dinamis berdasarkan pada nilai-nilai apa yang ada.
Karena daftar nilai potensial akan berubah seiring waktu (mis. Departemen akan dibuat / diganti namanya, jabatan baru akan ditambahkan), kode ini perlu terus diperbarui. Sepertinya saya bahwa kami dapat melewati langkah-langkah pemeliharaan kode dan mengatur laporan secara dinamis.
Karena saya bukan pengembang, saya bertanya-tanya apa yang saya lewatkan. Apa keuntungan yang mungkin ada untuk nilai-nilai hard-coding ke alat seperti ini? Apakah ini biasanya bagaimana program dirancang?
Jawaban:
Wikipedia:
Hard-coding dianggap sebagai antipattern.
Terkadang Anda tidak bisa menghindarinya tetapi itu harus sementara.
Satu-satunya keuntungan dari hardcoding adalah pengiriman kode yang cepat.
sumber
Betulkah? Tidak Ada Kasus Penggunaan yang Valid?
Sementara saya setuju bahwa hard-coding umumnya anti-pola atau setidaknya bau kode yang sangat buruk , ada banyak kasus di mana masuk akal:
Masih Anti-Pola ? Begitu juga Over-Engineering ! Ini tentang Harapan Hidup Perangkat Lunak Anda !!
Bukannya saya mengatakan ada semua alasan bagus, dan umumnya saya menolak keras nilai-nilai yang dikodekan. Tetapi beberapa dapat dengan mudah mendapatkan izin karena alasan yang valid.
Dan jangan mengawasi yang pertama tentang kesederhanaan / YAGNI baik dengan berpikir itu sepele: mungkin tidak ada alasan untuk mengimplementasikan parser gila dan pemeriksa nilai untuk skrip sederhana yang melakukan satu pekerjaan untuk kasus penggunaan yang sempit dengan sangat baik.
Sulit untuk menemukan keseimbangan. Terkadang Anda tidak melihat bahwa suatu perangkat lunak akan tumbuh dan bertahan lebih lama daripada skrip sederhana yang dimulainya. Namun, seringkali sebaliknya: kita terlalu banyak merekayasa hal-hal, dan sebuah proyek ditangguhkan lebih cepat daripada yang dapat Anda baca dari Pragmatic Programmer. Anda menyia-nyiakan waktu dan usaha untuk hal-hal yang tidak dibutuhkan oleh prototipe awal.
Itulah hal-hal jahat dengan Anti-Pola: mereka hadir di kedua ujung spektrum, dan penampilan mereka tergantung pada sensitivitas orang yang meninjau kode Anda.
sumber
Department = ['IT', 'Sales', 'Operations', 'HR', 'Finance']
. Ini juga akan jauh lebih sulit untuk mempertahankan array kode keras dalam hal Departemen atau Judul baru diperkenalkan.Ada kalanya OK untuk nilai hard-code. Sebagai contoh, ada beberapa angka seperti 0, atau satu atau berbagai nilai n ^ 2-1 untuk bitmask yang perlu nilai tertentu untuk keperluan algoritmik. Mengizinkan nilai seperti itu ke yang dapat dikonfigurasi tidak memiliki nilai dan hanya membuka kemungkinan masalah. Dengan kata lain, jika mengubah nilai hanya akan merusak banyak hal, itu mungkin harus hardcoded.
Dalam contoh yang Anda berikan, saya tidak melihat di mana hard-coding akan berguna. Semua yang Anda sebutkan / seharusnya sudah ada di database termasuk pos. Bahkan hal-hal yang mendorong presentasi (seperti urutan pesanan) dapat ditambahkan jika tidak ada.
sumber
Menerapkan solusi yang kuat yang memungkinkan untuk nilai-nilai yang mungkin telah dikodekan untuk dapat dikonfigurasi oleh pengguna akhir menuntut validasi kuat dari nilai-nilai tersebut. Apakah mereka memasukkan string kosong? Apakah mereka memasukkan sesuatu yang non-numerik di mana seharusnya angka? Apakah mereka melakukan injeksi SQL? Dll
Hard-coding menghindari banyak risiko ini.
Yang tidak mengatakan bahwa hard-coding selalu, atau bahkan sering, ide yang bagus. Ini hanyalah salah satu faktor yang perlu dipertimbangkan.
sumber