2009-08-25 16 views
5

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?

+1

"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

+0

Rất tiếc ... số ít tiêu chí là gì?!? –

+0

cố định, nhờ :)) –

Trả lời

4

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 ý.

1

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.

6

Ý 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)
+0

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

4

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;)

+2

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. –

2

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://www.softwarearchitectures.com/go/Discipline/DesigningArchitecture/QualityAttributes/tabid/64/Default.aspx

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

1

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.

Các vấn đề liên quan