3 hal keliru yang pernah saya lakukan selama ngoding

Raihan Iqbal
Javan Cipta Solusi
Published in
4 min readFeb 26, 2018

Lima tahun lebih bekerja sebagai programmer, banyak banget pengalaman menyebalkan tapi menarik selama ngoding. Pastinya kelupaan semicolon (;) udah jadi makanan sehari-hari dulu pas baru mulai ngoding.

Di blog ini, saya pengen nge-share aja beberapa hal keliru yang pernah saya alami selama ngoding. Tujuan utamanya biar saya gak melakukan hal yang sama lagi lebih dari dua kali dan juga harapannya ini bisa jadi informasi baru buat kalian.

Apa aja tuh?

Nama variabel tidak informatif

Gak jarang pas bikin variabel itu suka bingung mau ngasih namanya apa. Kadang nama yang ingin kita pakai udah terlanjur dipakai di line-line sebelumya (tapi masih dalam satu function/method). Akhirnya kadang hanya ditambahkan nomor saja di depannya, misalnya :

User user1 = new User();
User user2 = new User();
int a = 0;
int b = 5;

Contoh nama-nama variabel di atas biasanya yang dipake kalau males nyari nama yang lebih informatif. Padahal ini penting banget loh! Kenapa? Karena apa yang kita tulis di project kita belum tentu hanya kita saja yang membaca. Bisa jadi project ini akan dilempar ke orang lain yang gak kita kenal, alasannya bisa karena kita dipecat atau dipindahkan ke project lain atau kita meninggal. Jangan sampai penerus kita harus membaca ratusan baris kode baru bisa paham maksud dari variabel yang kita buat.

Terus bagusnya gimana? Ya beri nama sesuai apa fungsinya.

User admin = new User();
User customer = new User();
int counter = 0;
int maxCounter = 5;

Bukan variabel aja, nama method juga. Contoh :

List<String> listStudentNameByClassroomAndYearAndSubject(Object classroom, Object year, Object subject){}

Kalau dipikir-pikir sih wajar aja toh yang penting orang ngerti kan? Tapi ini sebenernya bisa diganti dengan yang lebih rapi dan enak diliat.

List<String> listStudentName(Object classroom, Object year, Object subject){}

Dengan bentuk di atas, kebanyakan orang sudah paham kalau method ini maksudnya untuk mengambil list dari nama pelajar berdasarkan kelas, tahun, dan mata pelajarannya tanpa harus dijelaskan di nama methodnya.

Terus gimana kalau udah punya nama method yang sama sebelumnya?

Asalkan tipe data balikannya atau parameternya berbeda, tidak ada masalah. Ini yang dinamakan polymorphism di OOP.

.equals() versus ==

Kalau kamu ngodin make JAVA, pasti pernah ketemu dua ini. Ini baru kejadian banget, bukan kodingan saya sih tapi kadang saya juga melakukan kekeliruan yang sama. Terus apa bedanya,

if(x == y)

dengan

if(x.equals(y))

?

Kalau kata geeksforgeeks.org, intinya== itu bisa digunakan buat membandingkan dua variabel yang tipe datanya primitive (int, boolean, double). Sedangkan .equals() bisa menggantikan == yang tidak bisa membandingkan dua tipe data non-primitive (String, Integer, Double, dkk).

Tapi gak cuma tipe data non-primitive, karena .equals() itu membandingkan value dari dua variabel yang kamu kasih. Jadi ya, amannya lebih baik pakai .equals() saja.

If — else

if(dataFound){
return "FOUND!";
}else{
return "NOT FOUND!";
}

Menurut kamu, ada yang aneh gak dari penggalan kode di atas? Sekilas tidak ada yang aneh dan kalau dijalankan pun kodenya tidak akan bermasalah tapi disini ada baris kode yang tidak perlu.

Apa? else .

Cara koding yang sudah terbiasa semenjak kuliah (atau mungkin SMK) kalau if itu pasti ada else di belakangnya buat mengantisipasi kondisi lain yang tidak dijabarkan sebelum else . Setelah sering menggunakan if — else, tiba-tiba muncullah return.

Keyword return adalah mengembalikan value ke method yang memanggilnya. Artinya jika sudah ada keyword ini, kita sudah tidak berada di fungsi dimana ada keyword return (kok jadi bingung ya?). Contohnya seperti di bawah.

public void main(String[] args){
String message = getData(data);
System.out.println(message);
}
private String getData(data){
boolean dataFound = isDataExist(data);
if(dataFound){
return "FOUND!";
}else{
return "NOT FOUND!";
}
}

Method main memanggil method getData() untuk mendapatkan message. Dicarilah oleh getData() dengan memanggil isDataExist() yang balikannya itu boolean. Nah disini mulai ditentukan pesan yang akan dikirim balik ke variabel message di method main menggunakan return.

Kebayang?

Jadi setelah return dipanggil, posisi kita sudah tidak di method getData() tapi sudah kembali ke method main.

Terus? Salahnya dimana?

public void main(String[] args){
String message = getData(data);
System.out.println(message);
}
private String getData(data){
boolean dataFound = isDataExist(data);
if(dataFound){
return "FOUND!";
}

return "NOT FOUND!";

}

Ya. Hapus aja else nya dan hasilnya akan sama saja.

Mungkin dari contoh ini gak terlalu keliatan gunanya. Tapi kalau kamu sudah memiliki method yang isinya banyak validasi, ini keliatan banget gunanya. Kalau misalnya di salah satu validasi ada yang salah kan langsung balik lagi ke view atau mungkin method sebelumnya, jadi gak perlu pakai else kalau validasinya gak salah.

Ada contoh lain lagi yang kadang keliru dalam menulis kodenya.

private boolean getData(data){
boolean dataFound = isDataExist(data);
if(dataFound){
return true;
}

return false;

}

Ini udah gak pakai else, tapi masih ada yang salah. Coba bandingkan dengan yang di bawah ini.

private boolean getData(data){
return isDataExist(data);
}

Benar. Karena balikan tipe datanya adalah boolean dan isDataExist() itu juga pasti boolean, langsung saja return isDataExist() nya, tidak perlu pakai if lagi. Mungkin contoh yang lebih konkrit nya seperti di bawah ini.

public boolean isEqualAge(int age){
return age.equals(this.myAge);
}

Akhir kata

Sebenarnya masih banyak lagi hal keliru yang pernah saya lakukan selama lima tahun lebih ngoding karena gak mungkin hanya tiga ini saja yang saya alami. Salah ambil data, salah query, salah edit file, lupa belum build dan deploy pas develop di JAVA (dulu saya di PHP), dan masih banyak lagi.

Tapi semoga tiga hal ini bisa menambah informasi buat kamu yang belum tahu dan menjadi pengingat buat kamu yang udah tahu.

Terima kasih sudah baca dan sampai ketemu lagi di artikel berikutnya.

— Be Proud and Stay Awesome

--

--

Raihan Iqbal
Javan Cipta Solusi

Java Programmer | Casual Gamer | Trying to be a writer