Bad Code Smell
Code Reengineering
Smell ini berarti jika kamu melakukan perubahan di satu tempat pada code mu, maka kamu akan harus melakukan banyak perubahan di tempat lain juga
Divergent Change terjadi ketika programmer melakukan perubahan pada suatu class tetapi kemudian ia juga harus melakukan banyak perubahan pada method/class lain yang sebenarnya tidak berhubungan. Hal ini berarti satu class bertanggung jawab untuk berbagai jenis fungsi atau responsibilitas dan melanggar Single Responsibility Principal, dimana setiap terdapat fungsi lain yang diubah atau ditambahkan, maka class tersebut harus diganti untuk menangani fungsi baru tersebut. Smell ini dapat menyebabkan error yang muncul setiap dilakukan perubahan pada class tersebut sehingga akan memakan waktu yang lebih banyak dalam mengerjakannya. Divergent Change dapat ditangani dengan menerapkan extract class atau extract superclass.
Shotgun Surgery terjadi ketika programmer melakukan perubahan pada sebuah bagian code tetapi kemudian ia juga harus melakukan perubahan-perubahan pada code yang tersebar di class lain. Satu responsibilitas telah terbagi di banyak bagian yang berbeda dalam code. Smell ini dapat menyebabkan pengembangan code akan menjadi lebih rumit dan menambah kemungkinan terjaidnya error jika terdapat banyak class yang harus diganti. Shotgun Surgery dapat ditangani dengan menerapkan move method atau move field menuju sebuah existing class atau new class.
Parallel Inheritance Hierarchy terjadi ketika setiap programmer membuat subclass untuk sebuah class, ia akan perlu untuk membuat subclass untuk class lain. Hal ini akan menjadi masalah besar jika code memiliki sistem hierarchy yang besar. Smell ini dapat menyebabkan code sulit untuk dipelihara dan rentan terhadap kesalahan. Parallel Inheritance Hierarchy dapat ditangani dengan menerapkan move method dan move field.