Chà, biện pháp tôi sử dụng, hoặc muốn nghĩ rằng tôi sử dụng, là:
Đối với mỗi yêu cầu chức năng độc lập, một dòng, một dòng, mang theo hoặc để lại nó, hãy chụp nhanh cơ sở mã trước khi thực hiện nó. Sau đó thực hiện nó, bao gồm cả việc tìm và sửa bất kỳ lỗi nào được giới thiệu trong quy trình. Sau đó chạy một diff
giữa cơ sở mã trước và sau. Các diff
sẽ cho bạn thấy một danh sách của tất cả các chèn, xóa, và sửa đổi mà thực hiện sự thay đổi. (Giống như chèn 10 dòng mã liên tiếp là một thay đổi.) Có bao nhiêu thay đổi? Thông thường, số đó càng nhỏ, mã càng dễ bảo trì.
Tôi gọi đó là sự dư thừa của mã nguồn, vì nó giống như sự dư thừa của mã sửa lỗi. Thông tin được chứa trong 1 đoạn, nhưng được mã hóa thành N khối, tất cả phải được thực hiện cùng nhau, để thống nhất.
Tôi nghĩ rằng đây là ý tưởng đằng sau DRY, nhưng nó chung chung hơn một chút. Lý do tốt cho số đó là thấp, nếu N thay đổi để thực hiện một yêu cầu điển hình và với tư cách là một lập trình viên dễ hiểu, bạn chỉ thực hiện đúng N-1 hoặc N-2 trong số đó, bạn đã đưa vào 1 hoặc 2 lỗi. Trên nỗ lực lập trình O (N), những lỗi đó phải được phát hiện, định vị và sửa chữa. Đó là lý do tại sao N nhỏ là tốt.
Duy trì không nhất thiết có nghĩa là có thể đọc được, đối với một lập trình viên chưa học cách làm việc của mã. Tối ưu hóa N có thể yêu cầu thực hiện một số điều tạo ra một lộ trình học tập cho các lập trình viên.
Đây là một ví dụ.
Một điều có ích là nếu lập trình viên cố gắng dự đoán những thay đổi trong tương lai và để lại hướng dẫn trong phần bình luận của chương trình.
Tôi nghĩ rằng khi N được giảm đủ xa (tối ưu là 1) thì mã nguồn sẽ đọc giống như ngôn ngữ dành riêng cho tên miền (DSL). Chương trình không "giải quyết" vấn đề nhiều như nó "giải quyết" vấn đề, bởi vì lý tưởng là mỗi yêu cầu chỉ được trình bày lại dưới dạng một đoạn mã.
Thật không may, tôi không thấy mọi người học cách làm điều này rất nhiều. Thay vào đó, họ dường như nghĩ rằng các danh từ tinh thần nên trở thành các lớp và động từ trở thành phương thức, và tất cả những gì họ phải làm là biến quây. Theo kinh nghiệm của tôi, điều đó dẫn đến mã có từ 30 trở lên.