Karena semua task today udah selesai, akhirnya punya kesempatan buwat blogging. Kebetulan waktu baca milis, ada beberapa postingan masalah programming style yang cukup menarik. Ini ga mau bahas masalah programming style orang2, atau jenis2 programming style yang ada. Ini cuman mo bahas programming style saya ajah. Itung2 self-service.

Dulu, waktu pertama kali belajar programming pake pascal, masih belum tau coding style, saya pake model ini:

  • CamelCase di naming variabel
  • Indentasi 2 spasi
  • ANSI style brace block
  • Variabel naming masih cryptic, meaningless, semacam x, a, c, ax, dll

Contoh:

function AddNumber(k: integer): integer;
begin
  next := k + 1
end;

Terus kemudian, setelah berselang beberapa lama, saya mempelajari C. Nah, waktu baca2 buku C, ketemu satu buku yang sangat berpengaruh dalam hidup saya: The C Programming Language, saya mencoba coding style nya K&R — dengan model:

  • untuk block function, brace di baris baru, selain itu, brace sejajar dengan identifier
  • all function/variable naming lowercase, dipisahkan oleh underscore — ini karena C itu case-sensitive, jadinya biar gampang inget2 nama fungsi tanpa hrs scroll keatas untuk ngecek prototype.
  • Nama variabel mulai punya makna (untuk array selalu kata2 plural: members, memberids, dan scalar pakai kata2 single: member, user, dan semacamnya), kecuali counter, masih seneng pake i, j, k
  • Indentasi nambah jadi 4 spasi
  • All uppercase untuk konstanta

Misalnya:

#include <stdio.h>
#define MAX_ITERATION 101

// fizzbuzz
int main(void)
{
    for (int i = 1; i < MAX_ITERATION; i++) {
        if ((i % 3) == 0) printf("fizz");
        if ((i % 5) == 0) printf("buzz");
        if (i%3 && i%5) printf("%d", i);
        printf("n");
    }
    return 0;
}

Nah kemudian, lama berlanjut, saya belajar PHP, tetep aja, model K&R setia menemani. Waktu ngelamar di kantor, ngeliat Coding Style skrip kantor pake ANSI style, dan CamelCase naming. Akhirnya mau ga mau, demi team nih, ngikut ANSI style. Cuman untuk personal project, masih tetep K&R pilihanku. Tapi karena PHP mirip2 ama Perl, akhirnya sedikit mirip ama Perl. Misal:

$conn = mysql_connect($host, $user, $pass) or die(mysql_error());
$r = mysql_query("SELECT * FROM users", $conn) or die(mysql_error());
while(false !== $row = mysql_fetch_row($r)) {
    list($uname, $pwd) = $row;
    // do something..
}

Aku sengaja pertahankan K&R style waktu coding java karena emang udah favorit K&R, cuman, naming variabel di java jadi ngikut camel case, lha java apinya camel case. Kalau nekat pake underscore kan jadi CJDW

Kemudian, mulai menjamah python. Ini bukan free formated language, indentasi berpengaruh, pertama, sempet kesel sih, soalnya kan tab ama space ndak keliatan, eh, lama2 itu cuman masalah editor kok, klo editornya pinter, tentunya tab ama space keliatan.

Gimana dengan anda?