Tên của antipotype đối diện với phát minh lại bánh xe là gì? [đóng cửa]


101

Antipotype " Tái tạo bánh xe " là một mô hình khá phổ biến - thay vì sử dụng một giải pháp sẵn sàng, hãy tự viết lại từ đầu. Cơ sở mã phát triển không cần thiết, các giao diện hơi khác nhau làm cùng một việc nhưng hơi khác nhau, thời gian bị lãng phí để viết các hàm (và gỡ lỗi!) Có sẵn. Chúng ta đều biết điều này.

Nhưng có một cái gì đó ở phía đối diện của quang phổ. Khi thay vì viết hàm riêng của bạn đó là hai dòng mã, bạn nhập khung / API / thư viện, khởi tạo nó, định cấu hình, chuyển đổi ngữ cảnh thành kiểu dữ liệu mà khung công tác chấp nhận, sau đó gọi một hàm duy nhất thực hiện chính xác những gì bạn cần, hai dòng logic kinh doanh dưới một gigabyte của các lớp trừu tượng. Và sau đó, bạn cần cập nhật thư viện, quản lý các phụ thuộc xây dựng, giữ đồng bộ giấy phép và mã khởi tạo của nó dài hơn mười lần và phức tạp hơn so với khi bạn chỉ "phát minh lại bánh xe".

Lý do có thể khác nhau: quản lý hoàn toàn phản đối "phát minh lại bánh xe" bất kể chi phí là gì, một người nào đó thúc đẩy công nghệ ưa thích của họ mặc dù có sự chồng chéo với các yêu cầu, vai trò của một mô-đun chính trước đây của hệ thống, hoặc kỳ vọng mở rộng và rộng hơn việc sử dụng khung mà không bao giờ đến hoặc chỉ hiểu sai "trọng lượng" một vài hướng dẫn nhập / bao gồm / tải mang "phía sau hậu trường".

Có một tên chung cho loại phản hạt này không?

(Tôi không cố bắt đầu một cuộc thảo luận khi nó đúng hay sai, hoặc nếu đó là một phản mẫu thực sự hay bất cứ ý kiến ​​nào , đây là một câu hỏi danh pháp đơn giản và khách quan.)

Chỉnh sửa: các đề xuất "trùng lặp" được đề xuất về việc áp đảo mã riêng để làm cho nó "sẵn sàng cho mọi thứ", hoàn toàn tách biệt với các hệ thống bên ngoài. Điều này có thể trong một số trường hợp bắt nguồn từ nó, nhưng nói chung nó bắt nguồn từ "ác cảm với việc phát minh lại bánh xe" - tái sử dụng mã bằng mọi giá; nếu một giải pháp "làm sẵn" cho vấn đề của chúng tôi tồn tại, chúng tôi sẽ sử dụng nó, bất kể nó phù hợp đến mức nào và với chi phí nào. Giáo điều ủng hộ việc tạo ra các phụ thuộc mới so với sao chép mã, với tổng chi phí cho việc tích hợp và bảo trì các phụ thuộc này khi so sánh với chi phí tạo và bảo trì mã mới.


52
Phụ thuộc địa ngục . Đó là điều gần nhất mà tôi có thể nghĩ ra.
Machado

5
@Machado: Thật tuyệt, mặc dù tôi muốn nói Dependency Hell là kết quả trực tiếp của sự phong phú của mô hình chống đối này; trong trường hợp các hệ thống cực kỳ phức tạp, nó có thể là kết quả đơn giản của sự phức tạp.
SF.

27
Tôi sẽ gọi nó là "creep phụ thuộc" tương tự Feature_creep hoặc Scope_creep nơi ngày càng có nhiều tính năng không mong muốn ban đầu được thêm vào sản phẩm.
k3b

21
Tias fiasco pad trái là một ví dụ thực tế của hội chứng này trong hành động.
SF.

13
Tôi khuyên chúng ta nên bắt đầu gọi chung cái này là LeftPad.
RubberDuck

Câu trả lời:


9

Không. Không có tên chống mẫu thường được sử dụng bao gồm những gì bạn đang mô tả.


4
Nó xuất hiện với số lượng ý tưởng, đề xuất và thảo luận mà nó khơi dậy, điều này thực sự chính xác.
SF.

3
Tôi cảm thấy bẩn khi làm điều này.
SF.

Huh? "Không có XXX" là một tuyên bố rất mạnh mẽ và rất khó để chứng minh, đặc biệt là xem xét có một số ứng cử viên được đề cập trong các ý kiến.
AnoE

1
@AnoE "Có một tên chung cho loại phản hạt này không?" Bằng chứng trong các bình luận và câu trả lời cho thấy rất nhiều ngụ ý rằng không có. Đúng, nó không trả lời tiêu đề, nhưng nó trả lời chính câu hỏi.
Kroltan

@AnoE Bạn không thể chứng minh một tiêu cực, hon. Có lẽ thuật ngữ này đang ẩn náu dưới một tảng đá ở Borneo ở đâu đó và chúng ta vẫn chưa rơi vào nó? Có 10 câu trả lời thay vì 1 với hàng triệu lượt upvote là bằng chứng đủ cho tôi.

49

Búa vàng

Búa vàng là một công cụ được chọn chỉ vì nó lạ mắt. Nó không hiệu quả về chi phí cũng như hiệu quả trong việc thực hiện nhiệm vụ dự định.

nguồn: xkcd 801

(Mặc dù số phiếu giảm, tôi vẫn đứng trước câu trả lời này. Nó có thể không hoàn toàn ngược lại với việc phát minh lại bánh xe về mặt ngữ nghĩa, nhưng nó phù hợp với mọi ví dụ được đề cập trong câu hỏi)


5
Được nâng cấp và bạn cũng có thể lấy nguồn từ wikipedia: en.wikipedia.org/wiki/Anti-potype , en.wikipedia.org/wiki/Law_of_the_instrument
Pierre.Sassoulas

3
Tôi sẽ downvote này nếu tôi có đại diện. Nó không trả lời toàn bộ câu hỏi, nhưng đưa ra một thuật ngữ (chính xác) chỉ trả lời một trong các tình huống được đề xuất.
David

3
Ngược lại được yêu cầu. Điều này giống như nhấn mạnh rằng "Becquerel" (bức xạ, đơn vị là s ^ -1) có thể được sử dụng cho âm nhạc thay vì Hertz (hz, đơn vị là s ^ -1) vì cả hai đều có nghĩa là "mỗi giây".
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen Tôi đã nghe một số âm nhạc khá nguy hiểm trong thời của tôi.

34

Robert Martin sử dụng thuật ngữ " Khung giới hạn" để chỉ hậu quả tiêu cực rõ ràng nhất của mô hình chống này. Vì tôi không nghĩ rằng có bất kỳ tên chung nào cho mẫu đó, một tham chiếu đến hậu quả này có thể đủ cho hầu hết các mục đích.


1
Các khung tồn tại để tăng tốc quá trình phát triển. Chúng giống như một tên lửa tăng cường: được sử dụng ngay khi sử dụng. Giải pháp là - phát hành phiên bản một, bây giờ chúng ta đã ở đâu? Đúng vậy, đang phát triển phần mềm. Kế tiếp! Bảo trì là một mối quan tâm riêng biệt, và tôi nghĩ, nên không quan trọng trong những ngày này. Lấy khuôn khổ tiếp theo để giải pháp tiếp theo, đăng vội vàng.

18

Trang wikipedia này trên " Invented Here " mô tả một tình huống hơi khác nhưng có kết quả cuối cùng rất giống nhau. Mô tả sự ác cảm của một nhóm đối với việc tạo mã của riêng họ khi chức năng tương đương có thể được tìm thấy ở đó.

Tôi sẽ tranh luận rằng tên này là một chút sai lệch mặc dù. Làm cho cảm giác khi đặt trong bối cảnh với nó đối diện Không được phát minh Ở đây IMHO gần như là một từ đồng nghĩa với Phát minh lại bánh xe.


13

Tôi đã nghe " Mua Versus Build " và " Được phát minh ở đây " dưới dạng tên chống mẫu cho sự thiên vị chống lại việc phát triển những thứ trong nhà, ngay cả khi có ý nghĩa để làm như vậy. (Và mặc dù cụm từ "mua so với xây dựng" được cho là chỉ ra sự lựa chọn giữa các lựa chọn khả thi, tôi thấy nó thường được đề cập khi ai đó tin rằng "mua" là lựa chọn chính xác.)



8

Bloat là một thuật ngữ rộng, nhưng nó có thể bao gồm những gì bạn mô tả. Phần mềm của chúng tôi trở nên quá phức tạp (cồng kềnh) vì tất cả các biến đổi và trừu tượng bổ sung cần thiết, và cả sự phức tạp và phụ thuộc đều góp phần làm giảm hiệu suất / ít hiệu quả hơn và tiêu thụ tài nguyên cao hơn (đĩa, băng thông).

Nếu chúng ta muốn, chúng ta có thể làm rõ với một thuật ngữ như phụ thuộc cồng kềnh .


5

Tôi nghĩ rằng sử dụng búa tạ để bẻ đai ốc là khá gần. Đó là điều có thể, nhưng nó cần một lượng công việc không phù hợp để bẻ khóa một hạt theo cách đó, mà không có bất kỳ tác dụng phụ không mong muốn nào có thể xảy ra. (Và có cả một túi hạt để bẻ khóa ...)

Cụm từ này cũng có lợi thế là nó không tính toán thuật ngữ, vì vậy nó có thể rất hữu ích trong việc truyền đạt manh mối cho ai đó không có bất kỳ.

Nhân tiện, có một sự khác biệt được rút ra với địa ngục phụ thuộc . Nếu ai đó đã bao bọc tất cả các phức tạp bên trong một đóng gói, điều đó tạo ra các giao diện đơn giản, rõ ràng, dễ sử dụng và cung cấp hình phạt trong chu kỳ CPU hoặc việc sử dụng bộ nhớ là không quá mức, và việc sửa đổi mã được đóng gói trong tương lai là không thể xảy ra cần thiết, sau đó một đối số còn lại chống lại việc sử dụng nó là địa ngục phụ thuộc mà nó có thể gây ra.


5

Tôi không nghĩ rằng có một sự tương tự chính xác, nhưng tôi sẽ nói rằng quá mức hoặc quá mức đến gần nhất.

Ít nhất, tôi sẽ lập luận rằng đây là những gì đang thực sự xảy ra khi tôi gặp phải điều gì đó tương tự như những gì bạn mô tả.

Sử dụng thư viện thay vì viết mã của riêng bạn để thực hiện chức năng tương tự hầu như không bao giờ có hại.

Ngay cả trong ví dụ giả thuyết của bạn, sử dụng thư viện để thay thế "hai dòng mã" có thể không cần thiết, nhưng không chắc sẽ gây cho bạn nhiều đau buồn - nếu đó thực sự là một thư viện có ý định làm điều tương tự như hai dòng mã của bạn .

Một thư viện để làm một điều đơn giản cũng sẽ đơn giản. Nó không có khả năng cung cấp cho bạn những đau đầu mà câu hỏi của bạn ngụ ý.

Sử dụng một thư viện phức tạp để làm một cái gì đó đơn giản có lẽ ngụ ý rằng bạn đang cố gắng làm nhiều hơn là thực hiện các chức năng cần thiết.

Chẳng hạn như xây dựng các tính năng không cần thiết, chuẩn bị cho một tương lai có thể không bao giờ đến, v.v.

Vấn đề ở đây là không thực sự thất bại trong việc phát minh lại bánh xe cho mỗi gia nhập .


4

Nếu bạn chưa phát minh lại bánh xe, rất có thể một người đang sử dụng một bộ bánh xe hiện có được cung cấp bởi nhà cung cấp hoặc bên thứ 3.

Nếu đây là một mô hình chống, thì nó thường được gọi là khóa nhà cung cấp.


6
Tôi không thực sự cảm thấy đó là điều tương tự. Khóa nhà cung cấp là một kết quả tiêu cực cụ thể tùy thuộc vào giải pháp của nhà cung cấp, việc sử dụng của nhà cung cấp có hiệu quả về mặt chi phí hay không khi lựa chọn được đưa ra. OP hỏi nhiều hơn về một thuật ngữ để chọn giải pháp của bên thứ ba khi chi phí tích hợp cao hơn chi phí chỉ đơn giản là phát triển một giải pháp mới từ đầu (và khóa nhà cung cấp có thể thậm chí không xảy ra, trong trường hợp nó sẽ xảy ra được giá rẻ để phát triển một giải pháp mới thay vì dựa vào nhà cung cấp).
Ben

@Ben - Ok, tôi thích Khung ràng buộc hơn là khóa nhà cung cấp tốt hơn. Câu hỏi này là loại ý kiến ​​dựa trên và đây là điều đầu tiên xuất hiện trong đầu tôi.
Jon Raynor

0

An ninh công việc?
Bạn đề cập đến tất cả nỗ lực giữ mọi thứ đồng bộ, v.v. Một số người thà quản lý mã của người khác hơn là viết mã của riêng họ. Các nhà quản lý, đặc biệt.

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.