2011-02-05 18 views
5

Có vẻ như bất cứ khi nào tôi sử dụng Mẫu lệnh, nó luôn dẫn đến số lượng lớp học lớn hơn đáng kể so với khi tôi không sử dụng nó. Điều này có vẻ khá tự nhiên, cho rằng chúng tôi đang thực hiện các đoạn mã có liên quan với nhau trong các lớp riêng biệt. Nó sẽ không làm phiền tôi nhiều nếu tôi không hoàn thành với 10 hoặc 12 lớp con Command cho những gì tôi có thể xem xét một dự án nhỏ mà sẽ chỉ sử dụng 6 hoặc 7 lớp khác. Có 19 hoặc hơn các lớp học cho một dự án lớp 7 bình thường có vẻ gần như sai.Mẫu lệnh dẫn đến vụ nổ lớp

Một điều khác thực sự làm phiền tôi là kiểm tra tất cả các lớp con Lệnh đó là một nỗi đau. Tôi cảm thấy chậm chạp sau khi tôi nhận được vài lệnh cuối cùng, như thể tôi đang di chuyển chậm hơn và không còn nhanh nhẹn nữa.

Điều này nghe có quen thuộc với bạn không? Tôi có làm sai không? Tôi chỉ cảm thấy rằng tôi đã mất đi sự nhanh nhẹn trong dự án này, và tôi thực sự không biết làm thế nào để liên tục thực hiện và thử nghiệm với tốc độ mà tôi đã có một vài ngày trước.

Trả lời

5

Mẫu thiết kế là mẫu chung để giải quyết các vấn đề theo cách chung chung. Sự cân bằng chính xác là những gì bạn đang thấy. Điều này xảy ra vì bạn cần tùy chỉnh cách tiếp cận chung. Tuy nhiên, 12 lớp lệnh có vẻ không giống với tôi nhiều.

Với mẫu lệnh, hy vọng các lệnh đơn giản (chỉ là phương thức thực thi, phải không?) Và do đó dễ kiểm tra. Ngoài ra, chúng phải có thể kiểm tra trong sự cô lập, tức là bạn có thể kiểm tra các lệnh dễ dàng với ít hoặc không phụ thuộc.

Lợi ích bạn nên nhìn thấy hai lần:

1) Bạn nên đã thấy cụ thể, cách tiếp cận phức tạp của bạn đơn giản bằng cách sử dụng mô hình (s) mà bạn đã chọn. tức là cái gì đó đã trở nên xấu xí một cách nhanh chóng bây giờ sẽ thanh lịch hơn.

2) Bạn nên đi nhanh hơn, do cách tiếp cận đơn giản và dễ dàng kiểm tra các thành phần riêng lẻ của bạn.

Bạn có thể sử dụng các mẫu khác, như tổng hợp và sử dụng thiết kế OO tốt để tránh trùng lặp mã (nếu bạn đang sao chép mã ...) không?

+0

Tôi không phải là mã trùng lặp. Chúng khá đơn giản thực hiện các phương thức thực hiện các nhiệm vụ riêng biệt. Nó chỉ là số lượng lớn các lớp làm phiền tôi - vì tôi chỉ có khoảng 4 hoặc 5 lớp miền. – Mike

+0

@mike yeah 12 lớp học không nhiều. Nếu đơn giản, bạn có thể dễ dàng kiểm tra chúng. Tôi cũng nghĩ rằng một khi mô hình được đặt ra và bạn đã quen với nó, bạn sẽ đi nhanh hơn – hvgotcodes

+0

Ngoài ra, nó không có ý nghĩa để kiểm tra chúng trong cô lập. Ở lớp đó trong kiến ​​trúc của tôi, chúng phải tuân theo bộ quy tắc kinh doanh đầy đủ. Đó cũng là một khu vực khá khó chịu. – Mike

4

Điều đó dường như không có nhiều lớp lệnh, nhưng tôi đồng ý với bạn rằng nó có mùi một chút nếu chúng chiếm hơn 60% số lớp học của bạn. Nếu dự án là phức tạp, đủ để công nhận việc sử dụng mẫu lệnh, tôi nghi ngờ bạn sẽ tìm thấy một số lớp học cầu xin để được chia nhỏ. Nếu không, có lẽ mẫu lệnh quá mức cần thiết.

Các câu trả lời khác ở đây có những gợi ý tuyệt vời để giảm độ phức tạp của lệnh, nhưng tôi ưu tiên sự đơn giản nơi tôi có thể tìm thấy nó (ala the bowling game).

+0

Tôi sợ phải thả mẫu Lệnh. Đó là nơi tôi phân tích cú pháp đầu vào văn bản, khớp nó với các regex và thực hiện công việc. Đó là một lượng nhỏ công việc, nhưng có chức năng có ý nghĩa và gắn kết. Bạn có nghĩ rằng công đức giảm mô hình? – Mike

+0

Tôi nghĩ rằng âm thanh như một đối số tuyệt vời cho việc sử dụng mẫu lệnh! Tôi sẽ xem xét phần còn lại của các lớp học của bạn và đảm bảo rằng tất cả chúng đều có cùng ý nghĩa về chức năng có ý nghĩa, gắn kết, nhưng có vẻ như bạn đang đi đúng hướng. –

+0

Tôi quyết định gắn bó với nó và hoàn thành dự án ngay hôm nay. Hóa ra tốt hơn tôi nghĩ hôm qua - đặc biệt là khi tôi bước lùi lại và thực thi 120 bài kiểm tra tự động qua các lệnh đó. :) – Mike

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