Saya baru-baru ini menemukan Desain oleh Kontrak (DbC) dan saya menemukan cara yang sangat menarik untuk menulis kode. Di antara hal-hal lain, tampaknya akan menawarkan:
- Dokumentasi yang lebih baik. Karena kontrak adalah dokumentasi, tidak mungkin bagi seseorang untuk ketinggalan zaman. Selain itu, karena kontrak menentukan dengan tepat apa yang dilakukan rutin, itu membantu untuk mendukung penggunaan kembali.
- Debugging sederhana. Karena eksekusi program berhenti ketika kontrak gagal, kesalahan tidak dapat menyebar, dan pernyataan spesifik yang dilanggar mungkin akan disorot. Ini menawarkan dukungan selama pengembangan dan selama pemeliharaan.
- Analisis statis yang lebih baik. DbC pada dasarnya hanyalah implementasi dari logika Hoare, dan prinsip yang sama harus diterapkan.
Biaya, dalam perbandingan tampaknya agak kecil:
- Mengetik jari ekstra. Karena kontrak harus dijabarkan.
- Mengambil sejumlah pelatihan untuk merasa nyaman dengan kontrak penulisan.
Sekarang, karena terbiasa dengan Python terutama, saya menyadari bahwa sebenarnya mungkin untuk menulis prakondisi (hanya melemparkan pengecualian untuk input yang tidak pantas) dan bahkan mungkin untuk menggunakan pernyataan untuk menguji lagi postconditions tertentu. Tetapi tidak mungkin untuk mensimulasikan fitur tertentu seperti 'lama' atau 'hasil' tanpa sihir tambahan yang pada akhirnya akan dianggap tidak Pythonic. (Selain itu, ada beberapa perpustakaan yang menawarkan dukungan, tetapi pada akhirnya saya mendapatkan getaran itu akan salah untuk menggunakannya, karena kebanyakan pengembang tidak.) Saya berasumsi bahwa itu adalah masalah yang sama untuk semua bahasa lain (kecuali tentu saja , Eiffel).
Intuisi saya memberi tahu saya bahwa kurangnya dukungan harus merupakan hasil dari semacam penolakan terhadap praktik tersebut, tetapi pencarian online belum membuahkan hasil. Saya ingin tahu apakah seseorang dapat menjelaskan mengapa sebagian besar bahasa modern tampaknya menawarkan sedikit dukungan? Apakah DbC cacat atau terlalu mahal? Atau apakah itu hanya usang karena Pemrograman Ekstrim dan metodologi lainnya?