Tags

, ,

Sebelum saya masuk ke tajuk utama. Saya tekankan, ini hanyalah salah satu pandangan di antara beberapa pandangan yang ada yang saya anggap paling rajih. Tak lah karena tidak bersesuaian dengan pandangan ini, lantas terkeluar dari ahlu programer wal jama’ah.

Ok. Apa pandangan yang saya pilih dalam perkara ini? dalam bab ini, saya cenderung memilih mazhab taisir/muyassar, mazhab yang mudah. Maksudnya, jika ada beberapa cara yang sama benarnya, maka saya memilih cara yang paling mudah. Itu intinya. Sedangkan definisi mudah itu sendiri akan dijelaskan dalam beberapa bahagian yaitu kesederhanaan dan kompatibilitas.

Kesederhanaan.

Kesederhanaan saya letakkan pada poin pertama karena, sesetengah orang sering menilai kehebatan program itu pada kerumitannya, pada keglamorannya. Itu tidak betul. Programing adalah sains, pada saat yang sama, dia juga seni. Sebagai sebuah seni, kecantikanya akan terlihat ketika dia tetap mempertahankan kesederhanaannya.
Sederhana di sini maksudnya adalah, kode yang ditulis harus sesedikit mungkin, dependensi yang diinstal juga harus seminimal mungkin, kodenya memiliki alur yang jelas dan tidak redundan. Termasuk juga dalam cakupan sederhana adalah, memastikan bahwa fungsi yang dibuat tetap memiliki tubuh yang ramping. Sama ada dengan menulis balik logicnya atau dengan membahaginya menjadi beberapa fungsi yang lain. Beberapa IDE, netbeans misalnya, dapat diatur untuk memberikan warning jika suatu function melebihi jumlah baris tertentu.
Ketika menetapkan kesederhanaan sebagai prinsip koding, kita diharuskan menetapkan dalam mindah kita, jika ada kode yang terlampauh panjang berati ada yang salah di sana. Prinsip ini juga boleh dipakai untuk melihat seberapa elok suatu ekstension. Jika ada ekstension yang dalam penggunaannya mensyaratkan kita menulis kode yang panjang, berarti itu ekstension yang lemah. Karena, maqasid/puncah dari dibuatnya ekstension adalah bagi memudahkan dan menyederhanakan kode kita. Terutamanya, apabila kode itu adalah kode yang terus berulang dalam projek kita, maka menjadi perlu kepadanya untuk dibuat wrapernya.
grin
Kenapa kesederhanaan dalam koding itu penting? Sebabnya, bagi memudahkan kita untuk melakukan debuging. Kita ini insan. Sebagai insan, pastilah kita tidak terbebas dari kesalahan. Dengan mempertahankan kesederhanaan, akan lebih mudah bagi kita untuk melakukan muhasabah.
Bagaimana cara kita belajar tentang kesederhanaan ni? Kesederhanaan itu berasal dari mindset. Kalau kita sudah menetapkan itu dalam mindah kita, maka pengalaman akan membentuk kita menjadi lebih sederhana. Jika kita tidak memiliki konsep kesederhanaan itu dalam pemikiran kita. Selamanya kita akan terjebak dalam kode yang panjang dan berbelit-belit. Kita bisa juga belajar kesederhanaan dari melihat kode orang lain. Source code yii2 adalah awal yang bagus untuk belajar kesederhanan.
Hal lainnya yang perlu juga diperhatikan adalah, sederhana tidak berarti menafikan kekayaan fitur. Justru fitur yang kaya akan tampak lebih elegan jika tetap tampil sederhana.

PS: Prinsip ini tidak berlaku untuk kode di dalam ekstension/library. Cara memakai library harus sederhana, tetapi kode di dalamnya tidak harus.

Kompatibilitas

Kompatibilitas adalah termasuk issue yang saya anggap penting. Framework yang tidak menjaga kompatibilitas dengan versi sebelumnya atau ekstensi yang tidak kompatibel dengan konfigurasi dasar framework utama adalah termasuk perkara-perkara yang kurang saya sukai.
Kebanyakan framework-framewok yang ada, telah menetapkan patern-patern tertentu dalam beberapa bahagian kodenya. Ekstensi kita yang merupakan perluasan dari framework itu seharusnya tidak boleh keluar dari patern yang telah ditetapkan. Tak lah berarti kita mesti bersetuju terus dengan patern-patern itu. Tetapi, pada kondisi zero configuration, ekstensi kita mestilah tidak keluar jalur dari best practice yang dipilih oleh framework itu.
Kenapa penting bagi kita untuk menjaga kompabilitas ini? Tujuan dari dibuatnya framework dan ekstensi adalah untuk berbagi solusi dengan sesama programer. Agar tujuan berbagi itu boleh tercapai, tentulah kita mesti membuatnya dalam platform yang sama. Terkecuali ekstensi itu berada di luar cakupan best practice, maka tidak mengapa kita membuat inovasi di sana. Untuk bagian-bagian yang sudah jelas patern-paternnya, membelokkannya adalah termasuk dalam perkara mengada-ngadakan perkara baru yang dilarang.
Tetapi, kadang kala kita mungkin boleh sedikit permisif dengan issue ini jika memang hasil yang diinginkan sepadan. Hanya saja, cukup dianggap buruk jika ada ekstensi yang bermudah-mudah dalam membuang kompatibilitas.

Advertisements