Bad Code Smell
Code Reengineering
Smell ini berarti sesuatu yang tidak berguna dan tidak diperlukan. Jika bagian ini tidak ada akan membuat code lebih jelas, efisien, dan mudah dimengerti
Duplicate Code terjadi ketika terdapat dua atau lebih bagian code yang identik atau mirip. Hal tersebut dapat terjadi karena seringnya dilakukan copy paste dalam membuat code atau terdapat dua programmer yang mengerjakan code tersebut. Hal ini dapat menyebabkan kerumitan dalam mengelola code kedepannya. Duplicate Code dapat ditangani dengan extract method apabila class berada dua subclass pada level yang sama atau extract superclass jika code terdapat di dua class berbeda.
Lazy Class terjadi ketika terdapat class yang memiliki sedikit atau bahkan tidak ada fitur/metode yang diimplementasikan. Hal ini dapat terjadi setelah dilakukannya refactoring agar fitur-fitur code terbagi, tetapi malah menghasilkan class yang memiliki fungsi minim. Lazy class dapat ditangani dengan menambahkan metode yang berkaitan ke dalam class tersebut atau menyatukannya dengan class lain.
Data Class terjadi ketika terdapat sebuah class yang hanya terdiri dari data serta constructor, setter, dan getter untuk data tersebut. Jadi, class ini berisi data yang akan dipakai atau diakses oleh class lain, tidak mengandung fitur atau fungsionalitas lain. Smell ini sering terjadi pada awal proses pembuatan class, tetapi seiring dengan berkembangnya sebuah class haruslah memiliki fungsionalitas. Data Class dapat ditangani dengan melakukan review pada class-class lain yang menggunakan data dari Data Class dan mencari method yang dapat dipindahkan ke Data Class.
Dead Code terjadi ketika terdapat variable, parameter, field, method, atau class yang tidak dipakai lagi atau tidak tersentuh ketika code dijalankan. Hal ini sering terjadi seiring berkembangnya code, terdapat bagian code yang tidak lagi digunakan dan tidak dihapus sehingga membuat code tidak relevan. Dead Code dapat ditangani dengan menghapus code yang sudah tidak digunakan lagi atau jika bagian tersebut dibutuhkan maka melakukan implementasi agar saat code dijalankan bagian tersebut akan berfungsi.
Speculative Generality terjadi ketika terdapat variable, parameter, field, method, atau class yang dibuat bertujuan untuk persiapan jika akan dibutuhkan di masa depan. Hal ini terjadi karena programmer berspekulasi bahwa bagian tersebut akan digunakan tetapi ternyata saat code dijalankan setelah beberapa lama, bagian tersebut tidak dibutuhkan. Speculative Generality dapat ditangani dengan mengahpus variable, parameter, field, method, atau class yang memang tidak diperlukan.
Comments
Comments terjadi ketika pada sebuah code terdapat banyak comment untuk penjelasan. Sebuah code yang bagus harus memiliki nama yang self-explain dan flow yang jelas sehingga tidak memerlukan adanya comment. Jika sebuah code masih memerlukan comment untuk menjelaskannya, maka code tersebut mungkin perlu diperbaiki agar dapat memiliki nama atau flow yang lebih jelas. Comments dapat ditangani dengan menghapus comment tersebut jika code sudah jelas, jika comment digunakan untuk menjelaskan sebuah bagian dari code maka dapat dilakukan extract method pada bagian tersebut dan nama dari method dapat diambil dari comment itu sendiri, tetapi jika method tersebut telah di-extract dan masih diperlukan comment untuk menjelaskan flow, maka dapat dilakukan rename method untuk mendapatkan self-explain nama.
Before
After
Pada contoh code di atas, sebelumnya terdapat comment untuk menjelaskan fungsi dari method yaitu menghitung luas persegi panjang dan memberi output hasilnya, dimana nama dan alur dari kedua method tersebut sebenarnya sudah jelas.
Kemudian dilakukannya refactoring, yaitu dengan menghapus comment yang tidak diperlukan karena code tersebut sudah jelas.