Skip to content

Large Class

sourcemaking

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, dan getStringInput dibuat menjadi 3 class yang terpisah. Lalu Extract Superclass menjadi abstract class Console.

Dilakukan Move Method pada:

  • fungsi showSemester menjadi toString di class Semester.
  • fungsi showSemesters menjadi show di class Semesters.
  • fungsi isLabelUnique pindah ke class Semesters.

Lihat hasilnya di package after.

Created by Saugi