1. Pelajaran menulis? Tidak juga.
Menulis kode sumber cukup berbeda dari menulis buku.
Walaupun keduanya mengejar tujuan yang sama: menjadi tidak ambigu mungkin dan mudah dipahami, mereka melakukannya dengan cara yang sangat berbeda, dan hal-hal yang harus dipelajari penulis tidak sama dengan hal-hal yang harus dipelajari oleh pengembang perangkat lunak.
Contoh 1: kiasan
Tokoh-tokoh pidato berharga ketika menulis novel, puisi, dll., Karena mereka meningkatkan ekspresif penulisan.
Apa yang terakhir kali Anda melihat sebuah oxymoron atau litotes dalam kode sumber ? Apakah akan membantu memilikinya, atau lebih baik sangat berbahaya bagi pengembang mana pun yang harus mempertahankan kode sumber tersebut nanti?
Contoh 2: kosakata
Kosakata yang kaya sangat dihargai dalam literatur. Kosakata William Shakespeare, misalnya, adalah dua puluh ribu hingga dua puluh lima ribu kata. Kosa kata yang lebih kaya membuatnya lebih menarik untuk membaca novel atau puisi.
Ketika Anda menulis kode sumber, Anda mengharapkannya dibaca oleh orang-orang yang tidak bisa berbahasa Inggris dengan baik . Menunjukkan seberapa baik Anda tahu bahasa Inggris akan sangat berbahaya bagi kode Anda. Jika Anda tahu kata mewah yang berarti persis apa yang Anda butuhkan tetapi Anda tahu bahwa banyak orang tidak tahu arti kata ini, Anda sebaiknya mencari sinonim yang kurang ekspresif atau serangkaian kata yang menjelaskan artinya. Kosakata beberapa ribu kata seringkali cukup untuk proyek tertentu.
Perhatikan aspek penting: sementara Google Terjemahan bisa sangat membantu bagi penutur asing, ada dua masalah dengan penerjemah apa pun:
Sepasang bahasa tidak harus memiliki kecocokan 1: 1 di antara kata-kata. Beberapa kata tidak memiliki terjemahan dalam bahasa lain, atau beberapa kata dapat diterjemahkan menjadi satu kata dalam bahasa asing. Misalnya, dalam bahasa Rusia, ada sejumlah besar kata-kata yang menargetkan keadaan khusus salju dan cuaca dingin, dan menerjemahkannya dalam bahasa Prancis atau Spanyol biasanya tidak mungkin tanpa kehilangan kekhususannya.
Suatu kata terkadang memiliki banyak makna, dan artinya disimpulkan dari konteksnya. Google Translate, meskipun memiliki kualitas tinggi, biasanya tidak dapat menunjukkan makna untuk situasi apa pun kecuali yang paling mendasar.
Contoh 3: ekspresi
Ekspresi membuat prosa lebih kaya juga. Seorang penulis berharap seorang pembaca memiliki sejumlah budaya umum, dan menggunakan kesempatan ini untuk membuat teks lebih ekspresif.
Demikian pula dengan contoh sebelumnya, ungkapan seperti itu bisa sangat bermasalah ketika dibaca oleh orang yang bukan penutur asli. Tetapi jika kosa kata umum biasanya dapat diterjemahkan, ekspresi jauh lebih bermasalah.
Misalnya, bahasa Inggris bukan bahasa pertama saya, dan setiap hari, saya menemukan ekspresi, termasuk di sini di StackExchange, yang saya tidak tahu. Saya mencoba menebak artinya, dan kadang-kadang saya benar. Tapi kadang-kadang saya salah, dan mencari ekspresi itu di Google tidak membantu.
Seorang pengguna dalam komentarnya mengingatkan saya pada contoh yang membuat saya menderita untuk waktu yang lama ketika saya baru saja memulai pemrograman: jarum PHP dan tumpukan jerami . Saya tidak mengetahui kiasan yang sesuai, jadi setiap kali saya membaca dokumentasi, saya bertanya-tanya tentang apa semua ini. Tidak perlu dikatakan bahwa C # sequence.Contains(element)
atau Python element in sequence
yang sangat baik adalah alternatif yang jauh lebih baik. Setidaknya, pengembang yang tidak tahu bahasa Ibrani juga harus menderita PHP , tetapi ini adalah cerita yang berbeda.
Contoh 4: referensi budaya
Referensi budaya. Dalam sastra, tergoda untuk memasukkan unsur-unsur dari budaya tertentu, dan ini juga membuat buku lebih kaya dan kadang-kadang lebih menarik untuk dibaca.
Namun, kode ini ditujukan untuk pengembang dari seluruh dunia. Oleh karena itu, apa yang merupakan referensi yang jelas untuk pengembang Italia mungkin tidak terlalu jelas untuk pengembang Rusia, dan apa yang diketahui oleh setiap anak lelaki atau perempuan India mungkin tidak diketahui oleh programmer Amerika.
Pengguna yang sama yang berbicara tentang jarum dan tumpukan jerami memberikan contoh yang sangat baik dari referensi budaya seperti itu: Cawan. Siapa yang tidak tahu apa itu Grail? Maksudku, itu "Graal" dalam bahasa Prancis, "Grial" dalam bahasa Spanyol dan ... "Kutsal Kâse" dalam bahasa Turki, tapi tetap saja. Namun, seberapa banyak pengembang Amerika atau Eropa mengetahui sejarah abad pertengahan Cina atau India? Mengapa ada yang berasumsi bahwa setiap programmer Cina dan India harus mengetahui referensi Holy Grail?
2. Pelajaran untuk menulis kode sumber ekspresif? Tentu.
Setiap pengembang harus belajar cara menulis kode sumber ekspresif.
Setiap pengembang harus menjelaskan mengapa komentar di:
int j = i + 1; // Creating i and adding 1 to it.
itu buruk, walaupun fakta itu benar-benar salah.
Setiap pengembang harus dapat memahami refactoring dasar dan bagaimana hal itu membantu membuat kode sumber lebih ekspresif.
Setiap pengembang harus ingat bahwa 20% dari waktu dihabiskan untuk mengembangkan kode, dan 80% dari waktu mempertahankannya. Untuk beberapa proyek, ini lebih seperti 5% - 95%.
dll.
Intinya, pemrograman dekat dengan dokumentasi teknis. Apakah seseorang yang menulis spek untuk baut harus mengambil pelajaran menulis? Tidak juga. Hal yang sama berlaku untuk pengembang. Siapa pun harus menulis tanpa membuat kesalahan ejaan dalam setiap kata, dan siapa pun harus dapat mengomunikasikan idenya dengan cukup jelas. Selain itu, saya tidak yakin bagaimana pelajaran menulis akan lebih berguna daripada, katakanlah, kursus dalam ilmu komputer atau keamanan TI atau apa pun.
Ekspresi kode sumber dapat dipelajari dengan cara lain. SuperM menyebutkan salah satu dari mereka dalam jawabannya : membaca kode yang baik. Saya dapat menyebutkan beberapa yang lain:
Membaca buku seperti Kode Indah atau Kode Lengkap,
Meminta pengembang yang lebih berpengalaman untuk meninjau kode Anda,
Memahami pola dan bagaimana dan kapan menggunakannya.