2009-02-05 25 views
5

Tôi đang làm việc trên trang web 10 trang với một cơ sở dữ liệu back-end. Có hơn 500 đối tượng đang được sử dụng, cố gắng triển khai mẫu MVP trong ASP.Net. Tôi đang truy tìm mã thực thi từ một trang duy nhất, ngón tay của tôi đã được trên F-11 trong Visual Studio trong khoảng 40 phút, có vẻ như không có kết thúc, có thể là 1000 phương pháp gọi cho một trang web! Nếu nó chỉ là 50 đối tượng có thể là một thứ, tuy nhiên, việc thực thi mã rắn thông qua tất cả các vật thể này giống như hàng triệu con kiến ​​đang điên cuồng trong căn nhà bụi bẩn khổng lồ của họ, với những đường hầm đối tượng. Do đó, một mẫu chống mới được sinh ra: AntFarm.AntFarm anti-pattern - các chiến lược để tránh, thuốc giải độc để giúp chữa lành từ

AntFarm còn được gọi là "OO-Madnes", "OO-Fever", OO-ADD hoặc chỉ đơn giản là thiết kế mẫu junkie.

Đây không phải là lần đầu tiên tôi nhìn thấy điều này, cũng như các cộng sự của tôi tại các công ty khác. Có vẻ như phong cách này đang được tích cực thúc đẩy, hoặc trong mọi trường hợp là một sự hiểu lầm của rất nhiều OO/DP gospels đi xung quanh ...

Tôi muốn giới thiệu một anti-pattern cho anti-pattern: GST hoặc "Get Stuff Done" AKA "Nhận Sh ** được thực hiện" AKA GRD (GetRDone). Mô hình này tập trung vào những gì nó nói, hoàn thành công việc một cách đơn giản. Tôi có thể cố gắng phác thảo nó nhiều hơn trong một bài sau, hoặc hãy chia sẻ ý tưởng của bạn về mẫu giải độc này.

Dù sao, tôi đang ở giữa một ví dụ tuyệt vời về AntFarm chống mẫu khi tôi viết (như phần thưởng, không có tài liệu hoặc nhận xét). Xin vui lòng chia sẻ suy nghĩ của bạn về cách thức chống mẫu này đã trở thành như thế nào, cách chúng ta có thể tránh nó, và làm thế nào để có thể hoàn tác hoặc xử lý mẫu này trong một hệ thống trực tiếp mà bạn phải làm việc!

+0

Các đối tượng có được thử nghiệm không? –

+0

câu hỏi hay, tôi nghĩ nhóm dev tin rằng họ đang thực hiện thử nghiệm đơn vị ... giống như nhiều mẫu khác mà họ đã triển khai, họ sẽ bắt đầu với ý tưởng, và sau đó trong sức nóng của trận chiến đôi khi nó bắt đầu tan vỡ. Mặc dù vậy, với kiến ​​trúc phức tạp này, tôi không chắc rằng việc kiểm thử không tự nó sẽ giúp ích nhiều đến thế. – alchemical

Trả lời

8

Tôi nghĩ rằng Parnas khá nhiều đóng đinh nó trong On the Criteria to be used in Decomposing Systems into Modules. Mỗi mô-đun nên ẩn một quyết định thiết kế, một quyết định có thể thay đổi trong tương lai. Nói chung, một mô-đun không có gì để ẩn thường chỉ là trên không. Anh ấy không nói chính xác về lớp học, nhưng tôi nghĩ lý do vẫn được áp dụng.

1

Cảm ơn Glomek bài viết dành cho không gian vấn đề thú vị, là cốt lõi của OO, tức là cách thiết kế đối tượng của bạn ... để thành công hay thất bại, nhờ liên kết.

Ồ vâng, thiết kế chống mẫu có thể được gọi là "Ant Hill", đó là mô tả rõ ràng hơn tôi nghĩ. Tôi tin rằng nó khá hoàn hảo ngay bây giờ, và dường như đang phát triển ... Tôi vẫn tự hỏi làm thế nào chúng ta có thể thoát khỏi nó nói chung, và viết mã đơn giản hơn, rõ ràng hơn để hoàn thành công việc chỉ với độ phức tạp tối thiểu .

3

Nếu là thực sự là do trên thiết kế (và có vẻ như nó) sau đó đây là một số từ đồng nghĩa cho bạn:

Gas Factory
Rube Goldberg máy
Heath Robinson contraption

Nhưng tên cá nhân của tôi cho điều này "cố gắng quá F # $% 3n cứng". Lời chia buồn của tôi.

Chúc mừng Adrian

+0

đó là một cách tuyệt vời để đặt nó (mô tả sau)! – alchemical

+0

Bạn quên "Enterprisey" – GazTheDestroyer

2

Nhiều tệp mà bạn sẽ làm. Bẩn thỉu. 500 đối tượng cho 10 trang web có vẻ là một tỷ lệ điên rồ. Bạn đã xem xét việc chạy phân tích mã trên giải pháp chưa? Có thể cung cấp cho bạn một số số liệu thống kê thú vị để chống lại.

Ngoài ra tôi muốn gọi KISS chống mẫu.

0

Vấn đề ở đây là mẫu thiết kế của bạn là chính nó, không phải OO. Bắt đầu với một mẫu không OO, cố gắng thực hiện nó như là "đối tượng", bạn kết thúc với một mớ hỗn độn.

Chỉ vì hệ thống được viết trong OOPL không làm cho hệ thống OO.

0

Nếu bạn cho rằng trang trại kiến ​​là cách hiệu quả để khám phá một không gian vấn đề phức tạp (trang trại kiến) thông qua việc sử dụng các tác nhân đơn giản (kiến) thì điều này bắt đầu trông ít chống khuôn mẫu. Các phê bình của OOP dựa trên sự phức tạp của việc "lắp tất cả trong đầu" luôn bỏ qua (a) khó để phù hợp với mọi thứ trong đầu của bạn (bất kể OO của nó hay không) và (b) rằng OO chủ động làm giảm sự cần thiết phải có tất cả trong đầu của bạn anyway

+0

Vì vậy, người ủng hộ bạn sử dụng 50 đối tượng để tạo một trường phái trang web cơ bản của tư tưởng? Có khá nhiều bạn trong số đó ... – alchemical

+0

Một chuỗi liên kết cơ bản sẽ giúp bạn vượt qua 50 đối tượng trong mọi khả năng, hãy để một mình tất cả các bản mẫu được yêu cầu để giúp bạn xử lý các yêu cầu http. Về số lượng có thể chấp nhận được ... Tôi sẽ không đặt một con số vào số lượng đối tượng vì lý do tương tự, tôi sẽ không đặt một số liệu về số lượng phần tử bạn có thể có trong trang được hiển thị của bạn, những gì trang đang làm. – CurtainDog

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