Tôi đang thảo luận với một người bạn về thiết kế. Ông đề xuất một giải pháp, và tôi đề xuất một giải pháp khác. Cảm giác của tôi là cả hai đều đúng, nó chỉ là vấn đề "thích màu xanh dương" nhưng tôi tự hỏi liệu bạn có biết chiến lược tốt để phân biệt giữa thiết kế tốt và xấu, miễn là cả hai đều giải quyết vấn đề. Tính đơn giản không phải là một tiêu chí, bởi vì nó nằm trong con mắt của kẻ thù. Trong trường hợp của chúng tôi, tôi ủng hộ thiết kế của mình một cách đơn giản nhất, và anh ấy làm tương tự cho riêng mình, chỉ vì mỗi bộ não của chúng ta phát triển con đường riêng của mình và bây giờ cảm thấy thoải mái với giải pháp tìm thấy.Làm cách nào để nhận ra sai từ thiết kế chính xác?
Trả lời
Làm tương đương với hallway usability testing - giải thích cả thiết kế cho những người ngẫu nhiên và cố gắng đánh giá mức độ dễ hiểu của từng thiết kế đối với họ. Sau đó so sánh kết quả.
Đó là tất nhiên, một biện pháp chủ quan cao. Bạn có lẽ sẽ được tốt hơn off chỉ đồng ý không đồng ý.
Thông thường, một thiết kế tốt có thể được tham chiếu đến các quy tắc thiết kế chung, tùy thuộc nếu đó là thiết kế giao diện người dùng, thiết kế cơ sở dữ liệu, vv
Nếu cả hai hướng dẫn thiết kế thiết kế theo của bạn/quy tắc, sau đó cả hai đều có thể được tốt.
Ý kiến cá nhân của tôi là có thể có nhiều thiết kế "chính xác", nhưng đôi khi tùy thuộc vào cách mọi thứ phát triển, có thể chính xác hơn so với cách khác. Một số điều cần xem xét:
- Thiết kế nào dễ đọc hơn/dễ hiểu hơn?
- Thiết kế nào có thể kiểm tra hơn?
- Thiết kế nào linh hoạt hơn/dễ dàng được tái cấu trúc hơn trong tương lai?
- Thiết kế nào có thể mở rộng hơn để bao gồm các tình huống có thể xảy ra trong tương lai? (mặc dù cảnh giác với việc rơi vào bẫy kỹ thuật)
Những thiết kế sẽ thực hiện tốt hơn? Tôi nghĩ rằng hiệu suất nên được xem xét khi đánh giá hai thiết kế differnt. Đây không phải là tối ưu hóa sớm. Hiệu suất là critcial cho bất kỳ ứng dụng phụ thuộc cơ sở dữ liệu. – HLGEM
Tôi không đồng ý với giả định của bạn rằng "sự đơn giản là trong con mắt của kẻ thù". Có rất nhiều phương pháp để thiết lập một đoạn mã đơn giản như thế nào. Cyclomatic complexity là số liệu được thiết lập tốt được viết cách đây nhiều thập kỷ, cũng như Halstead Volume và các số liệu gần đây hơn như "maintainability index" đang chứng tỏ là các công cụ hữu ích.
Có lẽ thay vì gạt bỏ sự đơn giản, bạn có thể sử dụng nó để giành chiến thắng tranh cãi của bạn;)
Tôi không cần phải giành chiến thắng tranh cãi của mình, tôi cần phải học điều gì đó, và điều này đòi hỏi phải có sự tương tác. Không quan trọng ai là đúng và ai sai. Điều quan trọng là tôi học được một nhà thiết kế tốt hơn. –
Có một số yếu tố chất lượng khá sử dụng rộng rãi mà bạn có thể sử dụng để tập trung nói chuyện của bạn. "Tốt hơn" là mơ hồ.
Đơn giản được xác định rõ. Nó không phải là một sở thích, hoặc một mục mắt-of-the-beholder. Đó là một số liệu đơn giản.
Dưới đây là một tập hợp các thuộc tính chất lượng mà bạn có thể sử dụng để đánh giá thiết kế.
http://my.safaribooksonline.com/9780470031469/a_taxonomy_of_quality_attributes
http://www.clarrus.com/documents/Software%20Quality%20Attributes.pdf
http://www.sei.cmu.edu/pub/documents/95.reports/pdf/tr021.95.pdf
Viết xuống tất cả các "trường hợp sử dụng" của bạn và ít nhất, đảm bảo rằng mỗi thiết kế đáp ứng các yêu cầu tối thiểu.Nếu có thể, hãy bắt đầu viết một số cách triển khai và cố gắng hình dung các điểm mở rộng và xem thiết kế nào linh hoạt hơn.
Nếu cả hai thiết kế đáp ứng tất cả các yêu cầu, một thử thách lớn vì đơn giản là phải có người kia đang phát triển viết để tận dụng thiết kế của bạn. Nếu bạn nghĩ rằng thiết kế của bạn là thanh lịch, nhưng mã để giao tiếp nó bắt đầu để có được thực sự lộn xộn, nó có thể không đơn giản và thanh lịch như bạn nghĩ ban đầu.
- 1. Cách chính xác để thừa kế từ std :: exception
- 2. Làm cách nào để xác thực thiết kế phần mềm?
- 3. Làm cách nào để thiết kế CSS cho hộp thoại xác nhận thả nổi ở giữa?
- 4. Mẫu thiết kế xác nhận dữ liệu
- 5. Làm cách nào để xác định chính xác cách viết hoa chính xác cho một từ?
- 6. các mẫu thiết kế OO sử dụng để xác nhận
- 7. Làm cách nào để kết hợp chức năng chính của Java vào thiết kế của bạn?
- 8. Làm cách nào để có được tài liệu thiết kế?
- 9. Làm cách nào để 'tự' chính xác hoạt động trong các lớp được kế thừa?
- 10. Android Làm cách nào để nhận giá trị chính xác từ Chuyển đổi?
- 11. Làm cách nào để sắp xếp chính xác đầu ra thành các cột?
- 12. Làm cách nào để cải thiện thiết kế này?
- 13. Nhận loại lỗi chính xác từ DbValidationException
- 14. Làm cách nào để xác định chính xác Freebase
- 15. Tôi làm cách nào để có được DisplayMetrics chính xác từ một AppWidget trong Android?
- 16. Tôi làm cách nào để thiết lập miền của mình chính xác trên MailGun?
- 17. Làm cách nào để thiết kế một lớp bằng Python?
- 18. Làm cách nào để thay đổi màu của từ sai chính tả?
- 19. Thiết kế API - phân bổ đầu ra?
- 20. Làm cách nào để thiết kế và xác minh các hệ thống phân tán?
- 21. Lọ nào chính xác là cần thiết để nhúng Neo4j?
- 22. Làm cách nào để thiết kế và triển khai xác thực mật khẩu cho IOS?
- 23. Làm cách nào để gọi IL2JS chính xác?
- 24. Làm thế nào để kiểm tra null hoặc sai trong Scala chính xác?
- 25. Đã đặt JAVA_HOME không chính xác. Làm thế nào để thiết lập lại nó?
- 26. Làm thế nào để tìm chính xác từ bằng cách sử dụng một regex trong Java?
- 27. nhận Mã ZPL Từ nhà thiết kế ngựa vằn?
- 28. Tôi có thiết kế giao diện WCF RESTful này một cách chính xác không?
- 29. Làm cách nào để xác thực đầu ra của XmlSerializer?
- 30. IntentService: Làm thế nào để enqueue một cách chính xác?
"Một criterium, hoặc crit, là một cuộc đua xe đạp được tổ chức vào một khóa học ngắn (thường là ít hơn 5 km), thường chạy trên các đường phố trung tâm thành phố khép kín-off." -- Tôi không biết điều đó. :-) – Ken
Rất tiếc ... số ít tiêu chí là gì?!? –
cố định, nhờ :)) –