Trong quá trình coding chắc hẳn chúng ta sẽ gặp phải những vấn đề trong code. Sau đây mình sẽ cố gắng phân loại nó ra thành từng loại để sau này nếu có gặp phải chúng ta sẽ biết nó thuộc loại nào.
Code smell
Code smell là dấu hiệu nhận biết rằng việc refactor lại code là cần thiết. Trong quá trình refactor chúng ta cố gắng tránh xa những code smell này. Với việc không có code smell sẽ đảm bảo rằng tiến độ của chúng ta bằng hoặc nhanh hơn hiện tại.
Việc thiếu quan tâm tới refactor code định kỳ sẽ dẫn đến việc sau một thời gian implement toàn bộ project sẽ bị tê liệt vì không thể code/maitenance gì nữa cả.
Do đó, việc loại bỏ code smell ngay khi nó còn số lượng nhỏ là cực kỳ cần thiết.
Bloaters
Bloaters là hiện tượng mà số lượng code, method và class tăng lên đến một con số khổng lồ. Gây khó khăn cho việc implement với project đó.
Thường thường hiện tượng này không xuất hiện ngay lập tức, mà nó xuất hiện theo thời gian khi mà chương trình phát triển (càng ngày càng có nhiều class, method được sinh ra)
Và sẽ thật hiểm họa nếu như toàn bộ dev team không nhận ra và loại bỏ Bloaters này.
Long Method
Một method chứa rất nhiều dòng code bên trong. Thường thường, bất kỳ một method nào dài hơn 10 dòng code thì bạn bên bắt đầu đặt câu hỏi (như vậy tốt chưa, có nên refactor) cho method đó.
Nguyên nhân:
Theo như một thói quen hàng ngày, một vài dòng code sẽ được thêm vào method đó khi có bussiness change. Nhưng không có dòng code nào được remove ra. Vì viết code là dễ hơn đọc code. Do đó, cái smell này cứ tồn tại ở đó trong vô hình cho đến khi nó trở nên cồng kềnh và xấu xí đến mức không thể chấp nhận được.
“Về tâm lý học hành vi”, Thường thường khi coding chúng ta sẽ chọn viết tiếp vào method có sẵn cho tiện hơn là tạo một method mới. Chúng ta vẫn thường tự an ủi bản thân rằng “Nó chỉ có 2 dòng code thôi mà, mắc gì phải tạo method mới, code luôn vào đây cho khỏe…”. Và do đó cứ 2 dòng, 2 dòng rồi lại 2 dòng.. đến một lúc nhìn lại thì ôi thôi code của method đó giống như 1 dĩa Spaghetti rối rắm và khó bảo trì.
Cách xử lý:
Hãy nhớ quy tắc này, Nếu bạn cảm thấy cần thêm comment vào một vài chỗ trong method
. Thì chính lúc đó bạn nên nghĩ tới việc move đoạn code đó ra 1 method mới. Cho dù chỉ là một dòng code (nếu nó khó hiểu và cần 1 dòng comment để giải thích). Và nếu như method có 1 cái tên đầy đủ ý nghĩa. Bạn sẽ hiểu ngay mà không cần nhìn vào body của method đó (việc này tiết kiệm rất nhiều thời gian đúng không nào?)