Nah, ukuran yang saya gunakan, atau suka pikir saya gunakan, adalah ini:
Untuk setiap persyaratan fungsional independen, tunggal, satu baris, take-it-or-leave-it, snapshot basis kode sebelum mengimplementasikannya. Kemudian implementasikan, termasuk menemukan dan memperbaiki bug yang diperkenalkan dalam proses. Kemudian jalankan diff
antara basis kode sebelum dan sesudah. The diff
akan menunjukkan daftar semua sisipan, penghapusan, dan modifikasi yang dilaksanakan perubahan. (Seperti menyisipkan 10 baris kode berturut-turut adalah satu perubahan.) Berapa banyak perubahan yang ada? Semakin kecil angka itu, biasanya, semakin mudah dipelihara kode tersebut.
Saya menyebutnya redundansi kode sumber, karena itu seperti redundansi kode koreksi kesalahan. Informasi itu terkandung dalam 1 chunk, tetapi dikodekan sebagai N chunks, yang semuanya harus dilakukan bersama, agar konsisten.
Saya pikir ini adalah ide di balik KERING, tetapi sedikit lebih umum. Alasan mengapa perhitungan itu rendah adalah, jika diperlukan N perubahan untuk menerapkan persyaratan yang khas, dan sebagai programmer yang keliru, Anda hanya mendapatkan N-1 atau N-2 yang dilakukan dengan benar pada awalnya, Anda telah memasukkan 1 atau 2 bug. Di atas upaya pemrograman O (N), bug-bug itu harus ditemukan, ditemukan, dan diperbaiki. Itu sebabnya N kecil itu baik.
Maintainable tidak harus berarti dapat dibaca, untuk seorang programmer yang belum belajar bagaimana kode itu bekerja. Mengoptimalkan N mungkin perlu melakukan beberapa hal yang menciptakan kurva belajar untuk programmer.
Ini sebuah contoh.
Satu hal yang membantu adalah jika programmer mencoba mengantisipasi perubahan di masa depan dan meninggalkan petunjuk arah dalam komentar program.
Saya pikir ketika N berkurang cukup jauh (optimal adalah 1) kode sumber lebih mirip dengan domain-bahasa spesifik (DSL). Program tidak begitu "menyelesaikan" masalah karena "menyatakan" masalah, karena idealnya setiap persyaratan hanya disajikan kembali sebagai satu bagian kode.
Sayangnya, saya tidak melihat orang belajar bagaimana melakukan ini sangat banyak. Mereka tampaknya berpikir bahwa kata benda mental harus menjadi kelas, dan kata kerja menjadi metode, dan yang harus mereka lakukan hanyalah memutar engkol. Itu menghasilkan kode dengan N 30 atau lebih, dalam pengalaman saya.