Tôi biết tình huống này rất rõ. Khi tôi gặp khó khăn theo cách đó, tôi cố gắng đưa ra những quan điểm khác nhau về dự án.
1.) Quan điểm của người dùng / khách hàng - sử dụng phản hồi
Thật không may, chúng tôi bị cuốn vào mã của chúng tôi theo cách mà chúng tôi không thể nhìn thấy lỗ hổng của chính mình vì chúng tôi sử dụng các ứng dụng của mình theo cách chúng tôi đã mã hóa chúng. Nhìn vào cách mọi người sử dụng nó và cố gắng tìm ra hướng dẫn người dùng trực quan nhất sẽ là gì. Chơi xung quanh với các nguyên mẫu UI. Điều này có vẻ thú vị, nhưng nếu bạn phát hiện ra rằng bạn sẽ buộc phải mã hóa lại phần lớn mã của mình chỉ bằng cách thay đổi logic sử dụng hơn thời gian để bắt đầu chu trình thiết kế lại.
2.) Thực hiện phân tích chức năng mã của bạn và trực quan hóa nó
Một số IDE và khung công tác thúc đẩy bạn, ví dụ như trộn UI và mã phụ trợ. Nếu bạn để điều này xảy ra, một ngày nào đó bạn sẽ phải đối mặt với tình huống rằng cơ sở mã của bạn khó có thể được duy trì vì sự phụ thuộc mơ hồ và khó phá vỡ. Đặc biệt là trộn mã UI với mã khác có thể dẫn đến mã spaghetti và chức năng dự phòng. Chia mã của bạn trong các khối chức năng, ví dụ như các lớp cơ sở dữ liệu, các lớp truyền thông, các lớp UI, các lớp lõi, v.v. và đưa ra các khối chức năng nói tên. Sau đó, trực quan hóa chức năng bằng một công cụ đồ họa (tôi sử dụng công cụ bản đồ tư duy) để tìm hiểu xem cấu trúc của bạn có hợp lý và mô đun đủ để bạn có thể sử dụng lại các khối mã lớn cho các dự án khác nhau và bạn có thể thay thế chúng bằng các phiên bản mới hơn mà không cần Đau lớn.
Cách tốt nhất để làm điều này theo kinh nghiệm của tôi là tạo một tài liệu trực quan hóa tất cả các phụ thuộc giữa các lớp của bạn và các cuộc gọi của chúng từ mã của bạn. Kết quả là một hình dung của thiết kế giao diện của bạn. Nếu bản đồ mã này trông giống như một cụm hoàn chỉnh *** thì đã đến lúc hành động. Nếu chưa xảy ra, bạn nên nghĩ về một quy ước đặt tên phù hợp đại diện cho cấu trúc mã của bạn theo cách bạn không phải suy nghĩ về cách gọi nó và những gì nó làm.
3.) Sử dụng các phương pháp phổ biến để đảm bảo chất lượng
Yêu thích của tôi là FMEA. Về mặt mã hóa, điều này có nghĩa là không chỉ phân tích những gì đã sai trong quá khứ mà còn nghĩ về những gì có thể sai. Một ví dụ khá phổ biến là kết nối mạng bị mất đột ngột. Sau khi thực hiện xong, bạn có thể phân loại các điều kiện lỗi theo các hậu quả như mất dữ liệu, sự cố, tính toán sai và phán đoán tác động đối với người dùng. Nếu chưa được thực hiện, việc xác định lỗi và các lớp ngoại lệ được sắp xếp hợp lý có thể giúp bạn giữ mã của mình sạch sẽ và thẳng. Cách tốt nhất là triển khai những thứ đó trong mỗi mã mới trước khi bắt đầu viết bất cứ thứ gì khác. (Chà, tôi có tội không phải lúc nào cũng làm theo lời khuyên này.)
Ngoài ra, nó giúp tôi tạo và thường xuyên cập nhật "danh sách đề xuất cải tiến" cho mã của riêng tôi. (Thành thật mà nói, vẫn còn rất nhiều mã trong các dự án của tôi, tôi chắc chắn không tự hào.) Tôi cũng cố gắng dành thời gian để thu thập và xem mã thực tiễn tốt nhất từ tài liệu API, hội nghị nhà phát triển hoặc tạp chí nhà phát triển.
Cho đến thời điểm này, không cần phải chạm vào mã của bạn. Nó chỉ đơn giản là nhận thức được những gì đang sai và tìm cách xác định cách cải thiện mã của bạn.
Cuối cùng một số lời khuyên cho công việc hàng ngày từ một cái rắm cũ. Cố gắng tránh cắn nhiều hơn bạn có thể ăn. Điều này dẫn đến quá nhiều áp lực cho mã hóa sạch. Bạn hiếm khi có được thời gian để làm điều đó đúng, nhưng bạn sẽ phải dành thời gian để sửa các lỗi sau đó.
Không có gì là lâu dài như giải pháp tạm thời, nhưng khi nó bị hỏng thường là muộn để khắc phục kịp thời. Ví dụ là các bản hack khó chịu hoặc các ngoại lệ lạ mà tôi đã sử dụng để làm cho một cái gì đó hoạt động mặc dù ví dụ như một lỗ hổng trong khung hoặc hệ điều hành cơ bản. Và sau đó, lỗ hổng đã được sửa hoặc phiên bản mới chỉ cần bỏ API API
Nếu bạn bị mắc kẹt và bị buộc phải tìm cách giải quyết hơn là đưa ra nhận xét và ghi chú cần được xem xét lại theo thời gian. Thông thường chúng ta ngày càng tốt hơn vì học được điều gì đó mới. Nếu bạn tìm thấy một cách tốt hơn để thực hiện nó nhanh nhất có thể. Nếu không, bạn có thể thấy mình mã hóa cách giải quyết cho cách giải quyết và ngoại lệ một ngày nào đó. (Anh ta không có tội lỗi giữa các bạn, hãy để anh ta ném byte đầu tiên vào tôi.)