cuốn sách gpt4 ai đã làm

ruby-on-rails - Có cách nào để đóng gói tất cả các loại đá quý mà đá quý của tôi phụ thuộc vào không?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 16:30:10 31 4
mua khóa gpt4 Nike

Tôi đang viết một viên đá quý có nhiều phụ thuộc đá quý, một trong số đó phụ thuộc vào một viên đá quý phá vỡ khả năng tương thích ngược với các phiên bản mới. Điều này khiến tôi phải suy nghĩ - tôi không muốn viên ngọc mà tôi đang xây dựng trở thành "viên ngọc đó" gây khó khăn cho mọi người khi cập nhật ứng dụng của họ. Tôi cũng không muốn buộc mọi người sử dụng đá quý của mình phải sử dụng phiên bản cụ thể của đá quý mà nó phụ thuộc vào phần còn lại của ứng dụng của họ.

Một mặt, tôi có thể viết lại tất cả mã trong các phần phụ thuộc này, gói chúng với viên ngọc của mình rồi loại bỏ tất cả các phần phụ thuộc lại với nhau, nhưng điều đó có vẻ hơi tẻ nhạt. Có cách nào để tôi có thể đơn giản đưa trực tiếp các phần phụ thuộc đá quý vào đá quý của mình rồi bọc chúng trong một mô-đun để phiên bản đóng gói của tôi không xung đột với phiên bản được phần còn lại của ứng dụng sử dụng không?

câu trả lời hay nhất

Tôi không nghĩ những gì bạn muốn có thể thực hiện được với các công cụ Ruby hiện có. Tuy nhiên, nếu khả năng tương thích ngược khi dựa vào phần phụ thuộc hoàn toàn là vấn đề về cú pháp/cách sử dụng chứ không phải là sự khác biệt ở mức độ thấp giữa các phiên bản thì bạn không phải nhập và duy trì mã của gem cũ. Bạn có một tùy chọn khác: tạo một lớp "shim" trong đá quý của bạn để cung cấp chức năng bạn cần từ giao diện mới hoặc cũ của các phần phụ thuộc của bạn.

Trong thực tế nó có thể trông như thế này, ví dụ giả sử nó là Thingy Hàm tạo của lớp đã thay đổi:

mô-đunPhụ thuộcShim

chắc chắn new_Thingy( new_style_args )
nếu điều_is_new
Thingy.new( new_style_args )
khác
Thingy.new( Convert_args_to_old_style( new_style_args ) )
end
end

# Convert_args_to_old_style() không được hiển thị

riêng tư

chắc chắn điều_is_old
Thingy::PHIÊN BẢN < '1.3.4'
end

chắc chắn điều_is_new
Thingy::VERSION >= '1.3.4'
end
end

Khả năng trừu tượng hóa tốt hơn là có thể, nhưng khó dự đoán vì tôi không biết bản chất của sự khác biệt giữa cái cũ và cái mới cũng như mức độ liên kết chặt chẽ giữa mã của bạn với các phần phụ thuộc của bạn.

Điều này rõ ràng là khó khăn nếu có những thay đổi cơ bản giữa các phiên bản và viên ngọc của riêng bạn sử dụng nhiều sự phụ thuộc. Nhưng ngay cả như vậy, có lẽ vẫn ít đau đớn hơn việc triển khai lại và duy trì sự phụ thuộc vào viên ngọc của riêng bạn.

Tôi khuyên bạn nên cân nhắc việc giữ viên ngọc của mình với các phiên bản phụ thuộc mới nhấthầu hếtHãy tương thích và dựa trên sự hiểu biết của bạn về người dùng, về lâu dài sẽ loại bỏ hỗ trợ cho các phần phụ thuộc cũ. Có thể có những lý do chính đáng để tất cả những người liên quan rời bỏ sự phụ thuộc cũ.

Giới thiệu về Ruby-on-Rails - Có cách nào để đóng gói tất cả các loại đá quý mà đá quý của tôi phụ thuộc vào không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/17548103/

31 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress