Saya sering mendengar dua praktik pemrograman yang berharga ini: (1) baris kode harus 80 karakter atau kurang dan (2) menggunakan nama deskriptif untuk variabel, metode, kelas, dll. Saya mengerti alasan kedua kata nasihat ini, namun , mereka tampaknya sering menjadi pengorbanan satu sama lain. Jika saya menyimpan kode saya di bawah 80 karakter / baris saya akhirnya menggunakan nama yang kurang deskriptif (khususnya dalam Python di mana setiap lekukan dihitung sebagai 4 karakter) tetapi jika saya menggunakan nama yang lebih deskriptif, saya berakhir dengan garis lebih dari 80 karakter.
Jadi, pertanyaan saya adalah manakah dari dua nasihat ini yang lebih penting untuk dipatuhi jika pilihan harus diambil? Saya ingin tahu ini sebagai programmer (hobi) independen, tetapi yang lebih penting dari sudut pandang seorang insinyur perangkat lunak yang bekerja untuk perusahaan yang lebih besar.
Jawaban:
Jaga sedikit indentasi Anda, nama Anda deskriptif, dan jangan takut untuk melanggar batas.
Jaga sedikit indentasi Anda.
Seringkali ketika saya menemukan diri saya dalam pergulatan antara indentasi dan penamaan deskriptif, saya mundur selangkah dan melihat level indentasi saya. Jika Anda membuat indentasi lebih dari 3 atau 4 level (2 level otomatis dan tidak dapat dihindari dalam banyak kasus. Baca: definisi metode kelas), Anda mungkin ingin merestrukturisasi kode Anda, mengabstraksikan fungsionalitas menjadi fungsi atau metode.
Nama Anda deskriptif
Anda harus selalu menjaga agar nama Anda tetap deskriptif. Nama deskriptif membuat kode dokumentasi sendiri. Anda dapat mencoba mempersingkat nama dalam beberapa kasus, tetapi keterbacaan lebih dulu.
Jangan takut untuk melanggar batas
Sial terjadi. Jika Anda menggunakan lebih dari 80 karakter, dan bagaimanapun Anda tidak melihat untuk mendapatkan kembali ruang apa pun di baris - pecahkan. Sebagian besar bahasa tidak peduli dengan jeda baris, jadi pisahkan garis menjadi beberapa. Jangan hanya memilih lokasi acak. Biarkan semuanya dikelompokkan secara logis, dan indentasi tingkat lain ketika Anda benar-benar melanggar batas.
sumber
Mengapa tidak keduanya?
Pertama-tama, "deskriptif" dan "verbose" tidak sama. Misalnya, jika Anda menulis loop lokal,
i
adalah nama variabel yang sangat bagus untuk variabel loop;current_iteration_index
, sementara bisa dibilang lebih deskriptif dan jelas lebih bertele-tele, jauh lebih buruk dan tidak menambahkan informasi sama sekali, karena penggunaani
sebagai variabel loop cukup banyak diterima secara universal, dan tidak ada arti laini
selain itu.Nama variabel yang baik bersifat deskriptif, karena seorang programmer yang akrab dengan idiom bahasa dan konvensi basis kode dapat dengan mudah menebak apa peran mereka, tetapi mereka juga cukup ringkas untuk membuat segala sesuatunya tetap kompak.
Batas 80 karakter, walaupun awalnya merupakan konsekuensi dari keterbatasan teknis terminal teks tahun 1970-an, masih dihargai oleh banyak orang saat ini, dan meskipun masih ada alasan teknis (panjang garis maksimum dalam beberapa protokol jaringan, terutama terkait dengan e-mail), alasan yang lebih menarik adalah alasan psikologis dan sosial. Ternyata panjang garis di sekitar tanda 66 membuat pengalaman membaca yang paling nyaman untuk prosa bahasa alami (ukuran font yang menarik tidak membuat banyak perbedaan, dan akibatnya, tidak juga ukuran layar atau kertas); Batas garis 80 karakter cukup dekat dengan itu, tetapi karena sebagian besar potongan kode biasanya menjorok setidaknya satu atau dua level (yang berarti antara 4 dan 16 karakter, tergantung pada pengaturan lekukan),
Efek lain dari berpegang pada garis 80-karakter adalah bahwa itu adalah indikator yang cukup bagus ketika semuanya terlalu rumit. Garis yang panjang biasanya disebabkan oleh salah satu dari yang berikut:
if ((user.isLoggedIn && user.hasPermission(page.getRequiredPermission()) && !user.isBanned) || page.getRequiredPermission() == null)
); ini juga biasanya agak sulit untuk diuraikan, dan kode harus ditulis ulang menjadi sesuatu yang lebih terstruktur. Kemungkinan besar, ekspresi itu terlalu banyak dan harus difaktorkan ke dalam metode atau fungsi.print(translate(LANG_EN, LANG_ES, "This is the home page. Feel welcome to click around and see what we have."));
. Pindahkan literal ke dalam variabel atau konstan; mungkin masih melebihi panjang garis, tetapi jika Anda melakukannya secara konsisten, pembaca setidaknya dapat dengan aman mengabaikan bagian garis yang tidak terlihat, dengan asumsi bahwa hanya sisa dari literal yang mengikuti. Atau lebih baik lagi, pindahkan literal keluar dari kode dan ke penyimpanan data eksternal (file, database, apa pun).if
pernyataan dalam metode kelas (yaitu 32 kolom lekukan untuk pengaturan tipikal). Sekali lagi, sarang yang dalam membuat kode yang rumit dan sulit dibaca, dan harus dihindari seperti wabah - sederhananya, sarang yang dalam meluap dari tumpukan otak manusia saat membaca.Semua ini pada akhirnya adalah gejala dari hal-hal yang Anda tidak akan miliki dalam basis kode Anda dalam jangka panjang, dan menegakkan batas 80 karakter adalah cara yang bagus dan sederhana yang membantu menjaga kompleksitas turun dan keterbacaan tetap tinggi. (Bukan berarti Anda tidak dapat menulis kode yang benar-benar tidak dapat dibaca dalam 80 kolom: berbagai kontes kode sesuatu yang membingungkan adalah contoh-contoh yang jelas).
sumber
Penamaan deskriptif oleh JAUH lebih penting. Di sebagian besar antarmuka kita dapat menggulir untuk melihat garis yang lebih panjang. Dalam hal apa pun sistem tidak dapat membantu Anda menerjemahkan variabel dan fungsi yang tidak disebutkan namanya.
sumber
80 karakter per baris tidak sulit untuk dipenuhi walaupun penamaannya panjang karena ada banyak cara untuk memecah satu baris kode panjang menjadi beberapa kode pendek, misalnya, saya dapat memecah pernyataan kondisi dalam C menjadi beberapa baris agar muat kurang dari 40 karakter,
Anda juga dapat membagi satu baris fungsi panggilan menjadi beberapa baris juga.
Oleh karena itu, kedua aturan penamaan deskriptif dan 80 baris karakter tidak memiliki kontradiksi, mereka dapat hidup berdampingan untuk meningkatkan keterbacaan.
sumber
Batas 80 adalah sesuatu yang seharusnya ditingkatkan sejak lama. Perhatikan bahwa batas ini digunakan sejak usia ketika panjang setiap pengenal dibatasi hingga 8 karakter dan hanya satu font pada layar / printer. Tidak ada kemungkinan untuk mengubah ukuran font.
Ya Tuhan, kami memiliki teknologi layar dan pencetakan yang berbeda sekarang. Kami memiliki bahasa pemrograman yang sangat berbeda. Tidak ada alasan untuk menggunakan 80 karakter lagi. Tingkatkan setidaknya 120 karakter.
Bahkan saat itu seharusnya tidak menjadi batas yang sulit. Anda pergi satu karakter melewati garis? Yah, tidak ada yang terjadi!
Edit:
Jawaban terperinci tentang sejarah batas 80-char
Karakter Per Baris di Wikipedia
sumber