Kod yang di fahami

Ini adalah rumusan dari PHP Advent 2009 : Comprehensible Code oleh Paul M Jones.

Seorang yang bodoh boleh menulis kod yang komputer faham. Pengaturcara yang baik, menulis kod yang manusia faham - Refactoring : Improving the Design of Existing Code, by Martin Fowler .

Membaca adalah sukar dan memerlukan usaha yang tinggi ( Jika tidak, sudah tentu peratus membaca di M'sia sangat tinggi ) . Setelah anda pandai membaca, anda biasa memandang rendah usaha membaca. Membaca dengan usaha untuk memahami masih kekal satu kerja yang sukar bagi semua.

Cuba bayangkan apakah usaha yang diperlukan untuk membaca kod orang lain ? . Bukan sahaja anda memerlukan pengetahuan dalam bahasa tersebut, anda perlu memahami corak dan struktur pengaturcaraan tersebut. Setiap pengaturcara adalah seorang pengarang yang mempunyai corak sendiri. Walaupun bahasa pengaturcaran tidak selembut bahasa percakapan, ia masih memerlukan usaha yang tinggi untuk memahaminya.

Usaha lawan Ganjaran

Membaca kod orang lain, dirasakan sebagai tidak produktif (Cuba anda habiskan masa membaca kod orang lain di ofis dalam masa satu hari, ia akan dianggap anda mencuri tulang sama dengan bermain Farmville di Facebook Wink . Dengan membaca, anda mungkin mendapat pengetahuan tentang pengaturcaraan, tetapi anda tidak menghasilkan perkara baru. Kepada pengaturcara, terutamanya yang berfikir mereka hanya dibayar untuk menulis kod (dah bukan membaca) , tahap usaha yang diperlukan untuk memahami kod orang lain adalah seperti membuang masa. Tahap usaha dengan ganjaran yang diterima sangat mengecewakan.

Tetapi, ganjaran untuk usaha menulis kod sangat mudah dan dirasakan sangat positif. Ia kurang mengecewakan dari cuba memahami kod orang lain, kerana anda adalah pembangun tersebut. Ia dirasakan amat positif oleh kerana setiap baris baru adalah satu yang anda boleh tunjuk sebagai hasil kepada usaha anda. Perasaan ini sangat sukar untuk ditolak.

 

Kod sebagai komunikasi

Masalah besar bagi membaca kod orang lain adalah mereka tidak berfikir tentang masa hadapan, tidak memikirkan kepada pembangun yang membaca aturcara mereka. Ia adalah normal untuk memikirkan kod anda adalah untuk komputer, tetapi fikiran tersebut adalah salah. Sebagai pengaturcara, anda terpaksa berhadapan dengan dua pembaca: komputer dan pengaturcara lain. Program anda adalah satu medium untuk komunikasi tidak langsung kepada pembangun lain. Kod adalah perbualan di antara anda dengan pengaturcara lain yang perlu berinteraksi dengannya.

Untuk pengaturcara lain , membaca kod anda adalah kerja yang sukar. Kepada merkea, membaca kod anda adalah pembelajaran yang baru. Mereka terpaksa belajar memahami apa yang anda cuba selesaikan dan kenapa anda perlu mengambil pendeketan tersebut. Setelah anda sedar, bahawa membaca kod adalah satu pembelajaran, anda akan mula menghargai bahawa anda harus menulis sebagai pengajarang kepada mereka supaya mudah memahami kod anda dengan lebih pantas. Ia memang lebih banyak kerja kepada anda, tetapi ganjaran yang tinggi bagi kerja tersebut adalah antara sebab pengaturcara suka (untuk terus membaca kod anda ).

Singkatan: apabila anda menulis kod, ingatlah kepada sesiapa yang malang terpaksa membaca kod anda. Orang yang malang itu mungkin anda dalam masa enam bulan akan datang.

 

Ke arah komunikasi yang lebih baik

  1. Gunakan standard aturcara yang digunakan oleh orang lain. Saya adalah peminat bagi Pear style guide.
  2. Pengaturcara adalah siri arahan, bukanlah ayat yang bersiri . Secara kasarnya, lebih baik menggunakan kod yang lebih panjang dan mudah difahami dari pendek dan memerlukan masa untuk pemahaman.
  3. Tukar cara yang anda rasa bijak di dalam kod, kepada cara yang lebih mudah dan jelas. Anda mungkin rasa anda ingin menunjukkan anda bijak dengan menggunakan sintaks yang pendek.Tetapi dengan niat tersebut, anda menyusahkan pengaturcara lain untuk memahami kod anda. Jika perlu untuk "menunjuk", sila komen kod anda seperti karangan lebih 80 patah perkataan (saya menambah)

 

Seni dalam perbualan.

Pemahaman teknikal dalam bahasa pengaturcaraan, tidak menjamin anda seorang yang mempunyai bakat untuk berkomunikasi di dalam kod. Seperti perbualan biasa, ia adalah satu seni dan bukan sains. Ia adalah bakat yang akan berkembang dengan latihan dan sentiasa ada ruang untuk diperbaiki.

Dengan melihat kod anda sebagai peluang untuk berkomunikasi dengan pembangun lain, saya harap anda akan melihat habuan yang tinggi bagi menulis sebagai pengajaran kepada orang yang perlu bekerja dengan kod anda, dengan itu menghadiahkan ganjaran yang tinggi bagi usaha membaca kod anda.

Memperbaiki kualiti perbualan anda di dalam kod akan meningkatkan lebih ramai orang bekerja dengan kod anda dan mengurangkan kekecewaan bagi orang lain memahami kehendak kod anda. Untuk orang lain, membaca dan memahamkan kod anda adalah kerja yang berat. Sentiasa ingat bahawa pembangun yang lain itu mungkin ada pada masa akan datang, datang semula untuk mengemaskinikan kerja anda. Jika bukan untuk orang lain, tulis kod yang mudah difahami untuk anda.

Maggiku sudah kembang
User offline. Last seen 1 day 9 hours ago. Offline
Joined: 03/03/2003
Points: 24
Mohon drp admin utk

Mohon drp admin utk menggunakan artikel ini dlm blog personal saya.
Saya akan masukkan skali link ke artikel ini.
Terima kasih.

p/s: http://jsm.hukm.ukm.my/myself/

http://twitter.com/phpnetmy
sameon's picture
User offline. Last seen 2 days 23 hours ago. Offline
Pro
Joined: 08/22/2002
Points: 94
ok

saya rasa takde masalah. Harap tidak ubah apa-apa.

does not have a status.
User offline. Last seen 5 weeks 1 day ago. Offline
Joined: 08/16/2009
Points: 14
Perkara penting yang seringkali diabaikan.

Kejelasan dalam menulis kod amat diabaikan dikebanyakan tempat. Antara sebabnya adalah orang atasan tak peduli (melainkan orang yang menyelia anda juga mementingkan perkara tersebut) jika kod itu senang dibaca atau tidak, asalkan ianya memenuhi requirement (dan meet deadline).

Akibatnya, bila tiba masa untuk orang lain mengambil alih, ianya terlalu sukar untuk difahami dan perubahan pada kod akan mengakibatkan pepijat daripada chain reaction dan pelbagai lagi (dan juga melumpuhkan terus sistem).

Antara aktiviti yang memelihara kejelasan kod adalah pair programming ataupun code review. Memberi justifikasi pada aktiviti-aktiviti tersebut adalah sukar dan menjalankannya memerlukan kefahaman terhadap reaksi sosial terhadapnya (Rujuk Tips for Managing the Social Effects of Code Review).

Bagi kita yang membaca buku-buku seperti Refactoring oleh Martin Fowler ataupun Code Complete oleh Steve McConnell, banyakkan bersabar untuk membimbing dan memperkenalkan best practices tersebut pada rakan sekerja (majoriti orang tidak tahu / tidak berminat) dan menarik minat mereka terhadap menulis kod dengan lebih jelas (clarity).

does not have a status.
User offline. Last seen 2 weeks 5 days ago. Offline
Joined: 01/27/2010
Points: 28
readable code

yeah.. kebanyakan orang ndak cepat coding...
masalah akan timbul bila orang yang kena debug code yang dituliskan...

ada orang suka guna shortcut untuk menamakan variables, contohnya:

$a1 = 12; $a2 = 'kuala lumpur';

sepatutnya, dia boleh tulis seperti berikut:

$age 12; $location = 'kuala lumpur';

satu lagi, aku rasa 'english' memainkan peranan yang penting dalam coding,

contohnya, kalau aku ada koleksi buku, untuk database aku boleh guna 'books',
dimana, 'books' adalah noun and plural, so understable table:books is a collection of book.

does not have a status.
User offline. Last seen 5 weeks 1 day ago. Offline
Joined: 08/16/2009
Points: 14
semua nak cepat

Semua nak cepat. Kalau boleh nak semalam. Memang english memainkan peranan dan ramai tak faham untuk bercerita di dalam kod.

Salah satu cara untuk membasminya adalah dengan code review. Mesti tak lepas kalau guna variable mengarut.

Serious about PHP ?
Latest Event
  • No upcoming events available
Sites Built using PHP
Highest Users
UserPoints
amin007445
aku_tak_tau309
jobless284
zam3858208
bazet174