năm Bính Ngọ·Ghi chú № 4
Deprecated
安Sài Gòn · · suy ngẫm · nghề lập trình · code và đời
Trong code, có một thứ tôi thích: từ deprecated.
Khi một hàm cũ không còn nên dùng nữa, người ta không xóa nó ngay. Người ta đánh dấu @deprecated, để lại một dòng chú thích: “hàm này sẽ bị bỏ trong phiên bản sau, hãy dùng hàm X thay thế”. Vậy là nó vẫn còn đó. Vẫn chạy được. Vẫn phục vụ những ai chưa kịp cập nhật. Nó được rút lui trong danh dự.
Tôi nghĩ về điều đó nhiều, dạo gần đây.
Có những phiên bản của tôi đã deprecated từ lâu rồi. Cái thằng hai mươi ba tuổi tin rằng phải làm việc đến hai giờ sáng mỗi đêm mới là nghiêm túc. Cái thằng hai mươi sáu nghĩ rằng nhảy việc mỗi mười tám tháng là chiến lược, rồi ở lại một chỗ mười năm. Cái thằng ba mươi tin rằng nếu cố gắng đủ, mình sẽ trở thành ai đó hoàn toàn khác.
Tôi từng muốn xóa hẳn những phiên bản đó. Xóa khỏi bộ nhớ, khỏi history, khỏi cách mình nói về bản thân. Như khi mình git reset --hard rồi force push lên main, cho nó biến mất luôn.
Nhưng đời không cho phép force push.
Và cũng không nên.
Bây giờ tôi học cách đối xử với những phiên bản cũ của mình như cách codebase tốt đối xử với hàm deprecated. Không xóa. Không xấu hổ. Chỉ ghi chú nhẹ: “phiên bản này từng cần thiết, nhưng giờ có cách tốt hơn.” Những cái tôi cũ đó đã viết ra cái tôi bây giờ. Họ deploy bản đầu tiên của cuộc đời này. Bản đó có nhiều bug. Nhưng nó chạy được, và nhờ vậy mới có bản kế tiếp.
Refactor không phải là phủ nhận. Refactor là nói: cảm ơn, đoạn này từng làm được việc, giờ tôi viết lại cho gọn hơn.
Có một lần tôi đọc git log của một dự án mình làm năm hai mươi bảy. Code xấu kinh khủng. Tên biến tệ, hàm dài, comment thì hỗn loạn. Phản xạ đầu tiên là cười. Phản xạ thứ hai là khó chịu. Phản xạ thứ ba, phải mất một lúc mới đến, là một sự dịu đi rất lạ. Thằng cu đó đang cố gắng. Nó không biết những gì tôi biết bây giờ. Nó đang viết bằng tất cả những gì nó có lúc đó.
Tôi đóng laptop lại, không xóa repo.
Khi nào tôi bốn mươi, tôi đoán mình sẽ nhìn cái thằng ba mươi tư đang gõ những dòng này cũng theo cách đó. Sẽ thấy nó ngây ngô ở chỗ nào đó. Sẽ muốn refactor một vài đoạn. Nhưng tôi mong là tôi sẽ không xóa nó. Tôi mong là tôi sẽ chỉ ghi vào lề: deprecated, nhưng có lý do.