Fungsi tidak hanya digunakan untuk meminimalkan duplikasi kode - mereka juga digunakan untuk membagi fungsi yang panjang menjadi yang lebih kecil untuk meningkatkan keterbacaan, serta membuat kode berkomentar sendiri. Namun, perolehan ini tidak berbanding terbalik secara langsung dengan jumlah LOC per fungsi atau metode; kalau tidak kita akan memiliki banyak fungsi, yang semuanya hanya berisi satu atau dua baris kode.
Ini membuat saya bertanya-tanya: Apakah ada jumlah optimal LOC per fungsi? Jika demikian, apakah itu, dan apakah itu menyimpang antara bahasa?
Jawaban:
Alih-alih jumlah baris, kriteria yang akan saya gunakan adalah bahwa setiap fungsi harus melakukan hanya satu hal dan melakukannya dengan baik.
sumber
Aturan jempol lama adalah bahwa suatu fungsi harus sepenuhnya terlihat di layar, tanpa perlu menggulir.
Ide dasarnya adalah bahwa, jika Anda tidak dapat melihat seluruh fungsi pada suatu waktu, fungsi tersebut lebih kompleks, dan Anda harus membaginya dalam potongan-potongan yang lebih mendasar.
Meskipun aturan ini sangat praktis dan berguna, aturan formal adalah bahwa Anda harus menyimpan hanya satu langkah logis dalam suatu fungsi. Suatu fungsi tidak hanya pekerjaan dasar, jika Anda dapat membagi pekerjaan menjadi bagian-bagian yang lebih mendasar, fungsi tersebut harus dipecah.
sumber
Tidak ada.
Layar semakin besar, ukuran font lebih kecil. Aturan praktis tidak berfungsi dengan baik ketika orang memiliki ukuran ibu jari yang berbeda.
Ringkaslah. Jika fungsi Anda melakukan banyak hal, mungkin ide yang bagus untuk memecahnya menjadi lebih kecil.
sumber
Smalltalk memiliki cara yang agak tidak biasa untuk mengurangi ukuran metode. Saat Anda menulis kode, Anda menulisnya di widget yang disebut Browser. Browser memiliki dua bagian utama, dibagi secara horizontal. Kode Anda berada di bagian bawah.
Secara default, Browser tidak terlalu besar. Anda dapat memasukkan 5 atau 6 baris sebelum Anda harus mulai menggulir. Menggulir, tentu saja, sedikit menjengkelkan.
Jadi di Smalltalk lingkungan "mendorong" Anda untuk menulis metode pendek, paling banyak sekitar 6 baris panjangnya. (Itu biasanya banyak; Smalltalk adalah bahasa yang cukup singkat.)
sumber
Jumlah baris kode yang ideal dalam suatu metode adalah variabel. Pada dasarnya, Anda hanya ingin menulis kode yang cukup untuk melakukan apa yang perlu dilakukan dalam konteks definisi fungsi. Saya menganggap ini sebagai semacam Prinsip Tanggung Jawab Tunggal , hanya diterapkan pada metode alih-alih kelas.
Di mana metode memiliki banyak logika, dan sejumlah langkah untuk diselesaikan, maka masuk akal untuk memecah metode menjadi beberapa langkah terpisah. Masing-masing langkah ini akan diekstraksi menjadi metode baru sesuai kebutuhan.
Semakin sedikit masing-masing metode, semakin mudah didefinisikan, dan semakin mudah untuk dipahami dan dikelola. Tidak ada yang salah dengan memiliki ratusan metode jika Anda membutuhkannya. Juga, sesuai dengan SRP yang saya sebutkan sebelumnya, menjadi lebih mudah untuk mengekstrak kelas-kelas baru ketika metode-metode tersebut telah dipisahkan menjadi bagian-bagian yang lebih kecil dan lebih mudah dikelola.
sumber
Jawabannya tentu saja 42 .
Penting untuk dicatat: Tidak ada fungsi yang dapat melanggar SRP , atau Anda harus menghadapi inkuisisi spanisch .
Beberapa petunjuk bagaimana mengurangi jumlah baris:
sumber
Berikut ini beberapa petunjuk:
Jika Anda kesulitan menulis komentar yang menjelaskan tujuan dan penggunaan fungsi, itu terlalu lama.
Jika Anda tergoda untuk menulis komentar yang menjelaskan aktivitas bagian kode dalam fungsi, maka fungsinya terlalu panjang.
Jika Anda menempelkan kode dari fungsi lain, maka keduanya terlalu panjang (ekstrak kode itu sebagai fungsi terpisah).
Jika Anda memerlukan konvensi pengkodean untuk memisahkan anggota data kelas dari variabel lokal, maka fungsinya terlalu panjang, dan kelas tersebut memiliki terlalu banyak anggota.
Jika Anda perlu mencatat saat membaca suatu fungsi, itu terlalu lama.
Memiliki 'ton' fungsi, masing-masing panjangnya hanya satu atau dua baris, belum tentu merupakan hal yang buruk. Saya menemukan bahwa fungsi-fungsi kecil itu digunakan kembali lebih dari yang saya harapkan.
sumber