[Refactoring] Large class

Định nghĩa

Large class là 1 class chưa rất nhiều fields/method/lines of code

Nguyên nhân

Class ban đầu là khá nhỏ, nhưng về lâu dài nó sẽ phình lên theo sự phát triển của chương trình

Lập trình viên thường có xu hướng viết thêm code vào class sẵn có thay vì tạo cái mới

Cách khắc phục

Khi một class phình ra qua to, hãy nghĩ ngay tới việc chi nhỏ nó

1. Extract class

Phương thức này sẽ giúp chia nhỏ các hành vi của class ra thành những component riêng lẽ

Tách class và đặt những function liên quan vào đó

2. Extract Subclass

Tách thành class con giúp cho large Class có thể được implement theo những cách khác nhau hoặc là theo những trường hợp đặc thù/ hiếm gặp nào đó

Tách thành class con để sử dụng trong những t/h đặc biệt

3. Extract Interface

Tách thành interface sẽ hữu ích nếu cần thiết phải có một danh sách các hoạt động/hành vi mà các class implement nó cần dùng đến.

Khi 2 class có implement phương thức giống nhau, tách ra interface

4. Tách GUI và Domain data ra thành class riêng

Bạn nên tách biệt việc sử lý sự kiện trên GUI và xử lý Data bên dưới ra thành 2 class riêng.

Tách sự kiện và logic ra làm 2 class

Kết luận

  • Việc tái cấu trúc các lớp 1 cách hợp lý giúp bạn không cần phải nhớ một số lượng lớn các thuộc tính & phương thức trong 1 class
  • Trong nhiều trường hợp, việc chia nhỏ các lớp lớn thành các lớp con sẽ tránh được sự trùng lặp về code và chứng năng

F G+ T

tuandph

Khởi đầu với .NET từ năm 2013 đến nay. Hiện tại mình đang làm full-stack developer. Yêu thích lập trình & chia sẽ kiến thức. Thời gian rảnh thường làm những tool vui vui và viết lách kể lệ sự đời.