Saya mencoba untuk membiasakan menulis unit test secara teratur dengan kode saya, tetapi saya telah membaca bahwa pertama - tama penting untuk menulis kode yang dapat diuji . Pertanyaan ini menyentuh prinsip-prinsip SOLID dalam penulisan kode yang dapat diuji, tetapi saya ingin tahu apakah prinsip-prinsip desain tersebut bermanfaat (atau setidaknya tidak berbahaya) tanpa berencana menulis tes sama sekali. Untuk memperjelas - Saya mengerti pentingnya tes menulis; ini bukan pertanyaan tentang kegunaannya.
Untuk mengilustrasikan kebingungan saya, pada bagian yang mengilhami pertanyaan ini, penulis memberikan contoh fungsi yang memeriksa waktu saat ini, dan mengembalikan beberapa nilai tergantung pada waktu. Penulis menunjuk ini sebagai kode buruk karena menghasilkan data (waktu) yang digunakan secara internal, sehingga membuatnya sulit untuk diuji. Namun bagi saya, sepertinya terlalu banyak menghabiskan waktu sebagai argumen. Pada titik tertentu, nilai perlu diinisialisasi, dan mengapa tidak paling dekat dengan konsumsi? Plus, tujuan metode ini dalam pikiran saya adalah mengembalikan beberapa nilai berdasarkan waktu saat ini , dengan menjadikannya parameter yang Anda maksudkan bahwa tujuan ini dapat / harus diubah. Ini, dan pertanyaan lain, membuat saya bertanya-tanya apakah kode yang dapat diuji identik dengan kode "lebih baik".
Apakah menulis kode yang dapat diuji masih merupakan praktik yang baik meskipun tidak ada tes?
Apakah kode yang dapat diuji sebenarnya lebih stabil? telah disarankan sebagai duplikat. Namun, pertanyaan itu adalah tentang "stabilitas" kode, tetapi saya bertanya lebih luas tentang apakah kode lebih unggul karena alasan lain juga, seperti keterbacaan, kinerja, penggandengan, dan sebagainya.
func(X)
kembali "Morning"
, maka mengganti semua kejadian func(X)
dengan "Morning"
tidak akan mengubah program (mis. Panggilan func
tidak melakukan apa pun selain mengembalikan nilai). Idempotency menyiratkan apakah itu func(func(X)) == X
(yang bukan tipe-benar), atau yang func(X); func(X);
melakukan efek samping yang sama dengan func(X)
(tetapi tidak ada efek samping di sini)