Khi tôi đang thiết kế cho một nhiệm vụ, tôi tiếp tục chiến đấu với cảm giác khó chịu này, ngoài việc là một phác thảo chung, cuối cùng nó sẽ bị bỏ qua ít nhiều. Tôi sẽ cho bạn một ví dụ:
Tôi đã viết một frontend cho một thiết bị có hoạt động đọc / ghi. Nó có ý nghĩa hoàn hảo trong sơ đồ lớp để cung cấp cho nó chức năng đọc và ghi. Tuy nhiên, khi bắt đầu thực sự viết chúng, tôi nhận ra rằng chúng có cùng một chức năng chỉ với một dòng mã được thay đổi (đọc và gọi hàm viết), vì vậy để tránh trùng lặp mã, tôi đã kết thúc việc thực hiện một hàm do_io với một tham số phân biệt giữa hoạt động. Tạm biệt thiết kế ban đầu.
Đây không phải là một sự thay đổi khủng khiếp, nhưng nó cũng xảy ra thường xuyên và có thể xảy ra ở những phần quan trọng hơn của chương trình, vì vậy tôi không thể tự hỏi liệu có một điểm nào để thiết kế chi tiết hơn một phác thảo chung, ít nhất là khi nó nói đến kiến trúc của chương trình (rõ ràng khi bạn chỉ định API, bạn phải đánh vần mọi thứ).
Đây có thể chỉ là kết quả của sự thiếu kinh nghiệm của tôi khi thiết kế, nhưng mặt khác, chúng tôi có những phương pháp nhanh nhẹn nói rằng "chúng tôi từ bỏ kế hoạch từ xa, mọi thứ sẽ thay đổi trong vài ngày nữa", thường là vậy tôi cảm thấy thế nào
Vì vậy, chính xác tôi nên "sử dụng" thiết kế như thế nào?
do_io
dường như là một chi tiết thực hiện nội bộ của lớp đó. Giao diện công cộng sẽ và có lẽ vẫn nênread(...)
vàwrite(...)
vì nó dài dòng hơn nhiều về ý định của cuộc gọi.