Tôi đã nghe thấy cụm từ bị ném lên và đối với tôi, những cuộc tranh luận nghe có vẻ hoàn toàn điên rồ (xin lỗi nếu tôi là người rơm ở đây, đó không phải là ý định của tôi), nói chung nó đi theo hướng:
Bạn không muốn tạo ra một sự trừu tượng trước khi bạn biết trường hợp chung là gì, nếu không (1) bạn có thể đặt những thứ trừu tượng không thuộc về mình, hoặc (2) bỏ qua những điều quan trọng.
(1) Đối với tôi điều này nghe có vẻ như lập trình viên không đủ thực dụng, họ đã đưa ra giả định rằng mọi thứ sẽ tồn tại trong chương trình cuối cùng không có, vì vậy họ đang làm việc với mức độ trừu tượng thấp, vấn đề không phải là trừu tượng sớm, đó là sự lắng đọng sớm.
(2) Bỏ qua những thứ quan trọng là một điều, hoàn toàn có thể một thứ gì đó được bỏ qua từ thông số mà sau này hóa ra lại quan trọng, giải pháp cho vấn đề này không phải là đưa ra sự lãng phí và lãng phí tài nguyên của chính bạn khi bạn phát hiện ra bạn đoán sai, đó là để có thêm thông tin từ khách hàng.
Chúng ta nên luôn luôn làm việc từ trừu tượng xuống cụ thể vì đây là cách làm việc thực dụng nhất, và không phải là cách khác.
Nếu chúng ta không làm như vậy thì chúng ta có nguy cơ hiểu nhầm khách hàng và tạo ra những thứ cần phải thay đổi, nhưng nếu chúng ta chỉ xây dựng sự trừu tượng mà khách hàng đã xác định bằng ngôn ngữ của họ, chúng ta sẽ không bao giờ gặp rủi ro này (ít nhất là không có khả năng như một cú đánh trong bóng tối với một chút thận trọng), vâng, có thể khách hàng thay đổi suy nghĩ về các chi tiết, nhưng những điều trừu tượng họ sử dụng để truyền đạt những gì họ muốn có xu hướng vẫn còn hiệu lực.
Dưới đây là một ví dụ, giả sử khách hàng muốn bạn tạo robot đóng gói vật phẩm:
public abstract class BaggingRobot() {
private Collection<Item> items;
public abstract void bag(Item item);
}
Chúng tôi đang xây dựng một cái gì đó từ sự trừu tượng mà khách hàng đã sử dụng mà không đi sâu vào chi tiết hơn với những điều chúng tôi không biết. Điều này cực kỳ linh hoạt, tôi đã thấy điều này được gọi là "trừu tượng sớm" khi trong thực tế, sẽ sớm hơn để giả định cách thức đóng gói được thực hiện, giả sử sau khi thảo luận với khách hàng, họ muốn có nhiều hơn một mặt hàng được đóng gói cùng một lúc . Để cập nhật lớp học của tôi, tất cả những gì tôi cần là thay đổi chữ ký, nhưng đối với một người bắt đầu từ dưới lên có thể liên quan đến việc đại tu hệ thống lớn.
Không có thứ gọi là trừu tượng sớm, chỉ có sự lắng đọng sớm. Điều gì là sai với tuyên bố này? Đâu là sai sót trong lý luận của tôi? Cảm ơn.