Tôi là một tín đồ lớn của việc thiết kế cho vấn đề trong tay và không thổi phồng thiết kế của bạn bằng cách cố gắng đoán tất cả các trường hợp mà bạn phải phục vụ vì "một ngày nào đó chúng ta có thể cần nó".
Về cơ bản, đưa ra một danh sách các yêu cầu cụ thể, thiết kế theo đó, tuy nhiên, điều này không có nghĩa là bạn không nên:
- làm cho các khía cạnh của thiết kế của bạn có thể cấu hình thay vì mã hóa cứng các khía cạnh đó trong giải pháp của bạn. Thông qua các tham số được truyền trong thời gian chạy hoặc thông qua cấu hình bên ngoài được đọc khi khởi động (hoặc sau khi HUP'ing).
- thắt mã của bạn với số ma thuật,
- tránh nhìn vào nếu có một cái gì đó đã được viết mà bạn có thể sử dụng lại, có thể sau khi điều chỉnh giải pháp hiện có để đưa ra một cách tiếp cận phù hợp với tình huống hiện tại cũng như cho (các) yêu cầu mới.
Vấn đề chính với việc thiết kế cho "tương lai có thể" là bạn luôn chỉ đoán. Có thể đưa ra những phỏng đoán có giáo dục, nhưng "khi bị xô đẩy" thì đó vẫn chỉ là một loạt những phỏng đoán.
Bằng cách này, bạn cũng có khả năng thực sự siết chặt giải pháp của mình để phù hợp với (các) trường hợp chung thay vì giải quyết vấn đề cụ thể trong tay như được xác định bởi (các) yêu cầu đã biết của bạn.
Nói gì vậy? "Khi tất cả những gì bạn có là một cái búa, mọi thứ bắt đầu trông giống như một cái đinh".
Tôi ước tôi có một pound cho mỗi lần tôi nghe ai đó nói, "Nhưng đó là một giải pháp thích nghi hơn cho những trường hợp chung mà chúng ta có thể thấy trong tương lai."