Apa ada bagian di coding program kamu yang seperti gambar di atas?
Jika iya, kamu wajib buat baca tips yang satu ini sampai selesai.
Daftar Isi
Tips kali ini adalah tentang menghindari penggunaan else dalam coding kamu.
Serius nih jangan pakai else? Lalu gimana dong caranya ni bro?
Katanya, kalau ada banyak else di dalam kode kamu, kemungkinan code yang kamu tulis tersebut banyak code yang mubasir dan redundant.
Maksudnya gimana tu? Kita lihat aja sample code di bawah ini,oh ya potongan code di bawah ini diambil dari controller framework laravel.
public function store(){
$inputs = Request::all();
$validation = Validator::make($inputs,[‘username’ => required]);
if(data(‘l’) !== ‘friday’){
if($validation->passes()){
Post::create($inputs);
redirect Route::home();
}else{
redirect Route::back()->withInput()->withErrors($validation);
}
}else{
redirect Route::back()->with(‘message’ => ‘we not work in friday’);
}
}
Dalam kode di atas kita punya 2 buah else yang akan kita hilangkan. Ayo ikuti step-step di bawah ini bagaimana kita tidak menggunakan else sama sekali.
Step 1: coba hapus else saat validation.
public function store(){
$inputs = Request::all();
$validation = Validator::make($inputs,[‘username’ => required]);
if(data(‘l’) !== ‘friday’){
if($validation->passes()){
Post::create($inputs);
redirect Route::home();
}<br> //hapus else
redirect Route::back()->withInput()->withErrors($validation);
}else{
redirect Route::back()->with(‘message’ => ‘we not work in friday’);
}
}
Step 2: ini lebih ke personal taste, saya lebih suka yang defensive programming, jadi kita ubah lagi dikit codenya jadi seperti berikut.
public function store(){
$inputs = Request::all();
$validation = Validator::make($inputs,[‘username’ => required]);
if(data(‘l’) !== ‘friday’){
if($validation->fail()){
redirect Route::back()->withInput()->withErrors($validation);
}
Post::create($inputs);
redirect Route::home();
}else{
redirect Route::back()->with(‘message’ => ‘we not work in friday’);
}
}
Defensive programing bisa dibilang seperti mencegah daripada mengobati menurut saya, jadi kita filter kondisi yang salah duluan baru yang benar.
Step 3: Hapus else yang lainnya.
public function store(){
$inputs = Request::all();
$validation = Validator::make($inputs,[‘username’ => required]);
if(data(‘l’) !== ‘friday’){
if($validation->fail()){
redirect Route::back()->withInput()->withErrors($validation);
}
Post::create($inputs);
redirect Route::home();
}
redirect Route::back()->with(‘message’ => ‘we not work in friday’);
}
Step 4: Hmm, lebih ke personal taste lagi, kita pakai defensive programming lagi ya untuk check harinya.
public function store(){
$inputs = Request::all();
$validation = Validator::make($inputs,[‘username’ => required]);
if(data(‘l’) === ‘friday’){
redirect Route::back()->with(‘message’ => ‘we not work in friday’);
}
if($validation->fail()){
redirect Route::back()->withInput()->withErrors($validation);
}
Post::create($inputs);
redirect Route::home();
}
Bagaimana? Ada perbedaan? Terlihat lebih rapi dan mudah di mengerti bukan? Jadi tujuan dengan tidak memakai else membuat kita bisa lebih mudah membaca kode tersebut dari atas ke bawah. Membuat programmer lain mampu membaca kode itu seperti membaca buku, clean dan alurnya jelas.
Menurut pengalaman sih memang code kita jadi lebih mudah dibaca jika tanpa else, tapi ada beberapa orang yang bilang harus pakai else supaya gampang dibaca. Tapi who knows, itu soal selera, ga ada salahnya kok mengikuti best practice dari orang-orang yang lebih berpengalaman dari kita. Jadi untuk tips kedua kita coba kurangi penggunaan else untuk membuat kode kamu jadi lebih simple. Patut dicoba nih bro!
Bacaan buat yang pengen lebih tau soal refactoring code : http://www.refactoring.com/
Untuk tips selanjutnya yaitu : Tips simple untuk simple code: part 3. satu level indentation