Có một mô hình chống chính thức để mô tả kịch bản?


10

Một số mã được viết để tạo Bảng tính Excel (Office Interop).

  • Mã thực hiện rất kém.
    • Một hệ thống con được thiết kế để tạo các tệp vào ban đêm. Hiệu suất không phải là một mối quan tâm vào ban đêm.
      • Một hàm được tạo để chọn tệp chính xác từ 100 tệp khác nhau có sẵn tùy thuộc vào một bộ tham số đã chọn.
      • Vì các tệp vật lý tồn tại, một hệ thống lưu trữ được thêm vào để sao lưu các tệp này (Không có lý do để lưu trữ. Các tệp này phải được tạo nhanh chóng).
      • Hệ thống này không bao gồm tệp cấu hình, thay vào đó, nó có chức năng "chọn máy chủ" được mã hóa cứng, đơn giản chỉ phản ánh trên máy chủ mà mã đang chạy.
      • Một nhiệm vụ theo lịch trình là cần thiết để hỗ trợ và chạy dịch vụ này.

Điều này sôi xuống với một vấn đề duy nhất. Mã ban đầu thực hiện quá kém để chạy trong môi trường sản xuất.

Nếu vấn đề về hiệu năng đã được giải quyết, hệ thống con và hệ thống lưu trữ sau đó, "chức năng nhà máy chọn tệp", điểm lỗi được mã hóa cứng và việc duy trì tác vụ theo lịch trình và điểm lỗi được thêm vào không cần phải tồn tại.

Đây là một "thất bại tầng" nếu bạn muốn. Vấn đề ban đầu dẫn đến nhiều mã xấu hơn, nhiều giải pháp xấu hơn và chi phí không cần thiết. Có một mô hình chống chính thức hoặc thuật ngữ chung để mô tả nó?


1
Mã không thể mở rộng? Nếu nhà cung cấp dịch vụ lưu trữ của bạn sẽ ngừng hoạt động trong một tháng và bạn cần di chuyển môi trường sản xuất sang các máy chủ mới, liệu có cần phải phát hành phần mềm và hoảng loạn khẩn cấp chung không? Tôi nghĩ bạn biết câu trả lời ...
maple_shaft

1
Ồ, nghe có vẻ như một ứng dụng tạo báo cáo tôi đã viết khoảng 12 năm trước. Chà, ngoại trừ việc thiếu cấu hình và mã hóa cứng. Việc lưu trữ có thể là một yêu cầu pháp lý giống như đối với tôi, dù sao cũng vô dụng. Hiệu suất ban đầu kém nhưng việc tạo một DB báo cáo riêng được tối ưu hóa đúng cách đã biến mất. Chạy các báo cáo về DB giao dịch cao là khởi đầu của nhiều ý tưởng tồi.
jfrankcarr

Câu trả lời:


23

Dòng dung nham?

Trong thuật ngữ lập trình máy tính, dòng dung nham là một vấn đề trong đó mã máy tính được viết trong điều kiện dưới tối ưu được đưa vào sản xuất và được thêm vào trong khi vẫn ở trạng thái phát triển.

Từ Perl Design Wiki: Lava Flow là "khi mã ... xuất hiện và trở thành vĩnh viễn, nó trở thành một đặc điểm kiến ​​trúc của sự đa dạng khảo cổ học. Mọi thứ được xây dựng trên cấu trúc mà không có câu hỏi và không hy vọng thay đổi những gì bên dưới chúng. mã hiện tại được coi là một sự tò mò lịch sử. "

Thông thường, việc đưa hệ thống vào kết quả sản xuất là cần duy trì khả năng tương thích ngược (vì nhiều thành phần bổ sung hiện phụ thuộc vào nó) với thiết kế ban đầu, không hoàn chỉnh.

Dòng dung nham thường bị trầm trọng hơn bởi những thay đổi trong nhóm phát triển làm việc trong một dự án. Khi công nhân quay vòng trong và ngoài dự án, kiến ​​thức về mục đích của các khía cạnh của hệ thống có thể bị mất, và thay vì làm sạch các phần này, chúng được xử lý xung quanh, làm tăng sự phức tạp và lộn xộn của hệ thống.

Dòng dung nham được coi là một mô hình chống, một hiện tượng thường gặp dẫn đến thiết kế kém.


3
Tôi đã thấy điều này trước đây (ok ok tôi thấy nó gần như mỗi ngày) nhưng tôi không bao giờ mới biết tên của nó.
Kevin

3
Cảm ơn. Tôi chưa bao giờ nghe nó được gọi như vậy. Tôi thường gọi mô hình là Ngôi nhà bí ẩn Winchester.
jfrankcarr

@jfrankcarr: Tôi thích tên của bạn hơn. rất thông minh.
Kevin

Tôi không nghĩ đây là ý nghĩa của dòng chảy Lava. Ý tưởng là mã không còn được sử dụng đã tắc nghẽn như dung nham trên khung cảnh của mã thực. Trong trường hợp mã vẫn được sử dụng, có lẽ tốt hơn là nên làm khác đi ngay từ đầu.
psr

@psr - Phần "" khi mã ... xuất hiện và trở thành vĩnh viễn, nó trở thành một đặc điểm kiến ​​trúc của sự đa dạng khảo cổ. Mọi thứ được xây dựng trên đỉnh cấu trúc mà không có câu hỏi và không có hy vọng thay đổi những gì bên dưới chúng. Mã hiện tại được coi là một sự tò mò lịch sử. "Rất phù hợp với những gì đã xảy ra.
P.Brian.Mackey

3

Tôi không chắc đây là một mô hình chống. Như với tất cả các mô hình chống đối, chúng tôi phải nói với bạn rằng bất cứ ai nghĩ rằng đó là một ý tưởng tốt đã bị nhầm lẫn, nhưng trong trường hợp này nghe có vẻ hợp lý và tôi sẽ tin lời bạn, vì vậy đó không phải là vấn đề.

Vấn đề là để hữu ích, một mô hình chống cần phải mô tả một số loại cạm bẫy chung và làm thế nào nó có thể tránh được. Trong trường hợp này, tôi đoán rằng sẽ tìm ra một cách giải quyết mã hoạt động kém khi bạn có thể làm cho nó hoạt động tốt hơn.

Vấn đề với điều đó như là một mô hình chống, IMHO, là việc biết về nó dường như không có nhiều giá trị. Bất cứ ai đã làm điều này có lẽ đã hiểu rằng sẽ rất tốt nếu biết cách làm cho nó hoạt động tốt hơn, vì vậy họ không phải biết làm thế nào để làm điều đó. Vì vậy, đã nghe về tình hình chung như là một mô hình chống thực sự sẽ không giúp được gì.

Theo như một thuật ngữ chung để mô tả nó, "thất bại xếp tầng", như bạn đề xuất, hoạt động khá tốt. Thuật ngữ tôi thích cho những người không đủ tiêu chuẩn thực hiện một nhiệm vụ không có ý nghĩa ở nơi đầu tiên là săn bắn sủa , nhưng điều đó có vẻ quá khắc nghiệt đối với tình huống này. (Nhưng dù sao tôi cũng sẽ ném liên kết một cách vô cớ, vì đó là mô tả tốt nhất về một doanh nghiệp cam chịu mà tôi biết).


+1 Nhiều điểm tốt. Bạn có thể đúng. Tôi đã thấy quá trình lặp đi lặp lại nhiều lần tại địa điểm đặc biệt này. Vì vậy, đó là động lực của tôi để mô tả nó như là một mô hình chống. Thay vì để khắc phục vấn đề đặc biệt này.
P.Brian.Mackey

3

Không chắc chắn nếu điều này có ích, nhưng tự động hóa văn phòng thường là một trường hợp đặc biệt:

Tự động hóa văn phòng thường được thực hiện theo cách này nếu nó phải được tự động tắt khỏi máy tính để bàn của người dùng (đặc biệt là các trang web .net vì tài liệu tự động hóa văn phòng cảnh báo chính xác cho bạn rằng sẽ có rò rỉ xấu trong các công cụ can thiệp văn phòng nếu chúng không chạy. buộc phải viết các quy trình không đầu để tạo tài liệu văn phòng với bộ công cụ đó, chúng tôi đã gọi các dịch vụ hiến tế vì bạn phải giết chúng định kỳ để lấy lại bộ nhớ.

Khác với việc lưu trữ những gì bạn đang mô tả không may là một cách thực hành tốt nhất trong một số trường hợp.

Liên kết: http://support.microsoft.com/kb/257757


+1 - Đó là một nhận xét thú vị. Tôi sẽ ghi nhớ điều này. Các dịch vụ cần phải ở lại sau đó. Mặc dù hiệu suất là khủng khiếp. 1 phút để tạo bảng tính có 5 cột và dưới 100 hàng. Có 100 bảng tính ...
P.Brian.Mackey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.