# 39: Cải Thiện Code Bằng Cách Loại Bỏ Chúng

Sống tối giản để tận hưởng nhiều hơn. Đó là một câu châm ngôn nhỏ,nhưng nó thật sự đúng trong một số trường hợp.

Một trong những cách cải thiện codebase mà tôi đã làm trong vài tuần qua đó là loại bỏ một số phần của nó.

Chúng tôi đã viết phần mềm dựa trên những nguyên lí XP, bao gồm YAGNI (You Aren’t Gonna Need It). Bản chất của con người là như vậy, chúng ta chắc chắn đã không đạt được mục tiêu được yêu cầu trong vài nhiệm vụ.

Tôi đã quan sát và nhận ra rằng sản phẩm đã mất quá nhiều thời gian trong việc hoàn thành các nhiệm vụ nhất định — những công việc đơn giản đáng lẽ phải được thực hiện một cách gần như tức thời. Điều này là do chúng đã được thực hiện quá mức; được trang hoàng thêm những chiếc chuông và còi không cần thiết, những thứ mà tại thời điểm đó có vẻ như là một ý tưởng hay.

Thế nên tôi đã đơn giản hóa mã code, cải thiện sự thi hành của sản phẩm, và giảm bớt mức độ phức tạp của toàn bộ code một cách đơn giản hơn bằng cách loại bỏ những tính chất khó chịu từ codebase. Nó thực sự hữu ích, các đơn vị kiểm tra đã nói với tôi rằng tôi chẳng làm hỏng bất cứ thứ gì trong suốt quá trình hoạt động.

Một trải nghiệm đơn giản và hoàn toàn hài lòng.

Vậy thì tại sao những dòng code không cần thiết đó lại xuất hiện ngay từ đầu? Tại sao một người lập trình nào đó lại cảm thấy những dòng code viết thêm ấy hữu dụng, và làm thế nào nó vượt qua được sự đánh giá trước đó hoặc quá trình kết nối? Chắc chắn có một cái gì đó như là:

  • Những thứ được thêm có một chút thú vị, và người lập trình muốn viết nó. (Nhắc nhở: Viết code bởi vì nó làm tăng giá trị, chứ không phải vì chúng giải trí).
  • Có người nghĩ rằng mã code đó sẽ có ích cho sau này, nên tốt hơn hết là viết chúng ngay bây giờ. (Nhắc nhở: Đó không phải là YAGNI. Đừng viết chúng nếu bạn không sử dụng ngay lập tức).
  • Chúng không xuất hiện để đoạn code trở nên “đặc biệt”, vì vậy sẽ dễ dàng thực hiện nó hơn là đến gặp khách hàng để xem liệu chúng có thực sự hữu dụng hay không. (Nhắc nhở: Sẽ luôn luôn mất nhiều thời gian để viết và duy trì những dòng code phụ. Và khách hàng thì khá dễ để tiếp cận. Một vài dòng code phụ theo thời gian sẽ làm quá trình hoạt động tăng trưởng nhanh và trở thành một mảng công việc cần được bảo trì.)
  • Những lập trình viên đặt ra những yêu cầu không được ghi chép hay thảo luận để bào chữa cho tính năng bổ sung. Thực ra những nhu cầu đó không hề có thật. (Nhắc nhở: Những lập trình viên không đặt ra những yêu cầu hệ thống mà là khách hàng.)

Ngay bây giờ bạn đang làm việc gì vậy? Có phải tất cả chúng đều cần thiết không?