Large Class
Penjelasan Smell
Smell ini terjadi ketika ada sebuah class yang memiliki terlalu banyak method dan/atau line of code.
Code yang mengandung Large Class berpotensi melanggar Single Responsibility Principle bila terdapat terlalu banyak jenis tanggungjawab yang dilakukan oleh satu class. Bila Large Class disertai dengan pelanggaran SRP, maka terjadi juga smell Divergent Change.
Pada contoh SemesterMenu.java
, class ini bukan hanya berurusan dengan menu dan input console untuk CRUD semester saja. Class ini juga pegang kendali untuk pembuatan vector semester. Class ini juga terbebani dengan banyaknya variasi cara input di method getDateInput
, getIntInput
, dan getStringInput
.
Penyelesaian
Dilakukan Extract Class pada:
- vector Semester dan validasi-validasinya diekstrak ke class baru bernama
Semesters
. - fungsi
getDateInput
,getIntInput
, dangetStringInput
dibuat menjadi 3 class yang terpisah. Lalu Extract Superclass menjadi abstract class Console.
Dilakukan Move Method pada:
- fungsi
showSemester
menjaditoString
di class Semester. - fungsi
showSemesters
menjadishow
di class Semesters. - fungsi
isLabelUnique
pindah ke class Semesters.
Lihat hasilnya di package after.