Tôi thường sử dụng tiện ích Boost typedef mạnh mẽ để cải thiện sự an toàn của các chương trình của tôi. Ví dụ: bằng cách viết mã như sau:Sử dụng typedef mạnh làm phương án thay thế nhẹ hơn cho thư viện Tham số tăng cường?
BOOST_STRONG_TYPEDEF(int, X)
BOOST_STRONG_TYPEDEF(int, Y)
BOOST_STRONG_TYPEDEF(int, Width)
BOOST_STRONG_TYPEDEF(int, Height)
struct Rect {
Rect(X x, Y y, Width w, Height h);
};
// Usage:
Rect rect(X(10), Y(20), Width(800), Height(600));
Kiểu chữ mạnh ở đây cải thiện cả khả năng đọc và an toàn của mã. (Trình biên dịch sẽ báo lỗi nếu các đối số được cung cấp theo thứ tự sai, mà sẽ không có được các trường hợp nếu các đối số đều int
.)
Câu hỏi của tôi là:
- Is it ok để sử dụng BOOST_STRONG_TYPEDEF cho mục đích này? (Tài liệu là very brief.)
- Có lý do quan trọng nào để thích thư viện tham số tăng hơn?
phụ thuộc vào ý của bạn là 'ok', nó biên dịch và chạy tôi giả định, vậy điều gì là sai với điều đó. Tôi thấy logic của bạn đằng sau điều này, nhưng có vẻ như 'sai' đối với tôi. Có một lý do bạn có thể đặt tên biến và paramaters, do đó, có một số một cách rõ ràng cast có 'int' đến một' Width' chỉ để vượt qua nó để thiết lập tham số 'width' có vẻ sai. Mặc dù có thể có ích để có 'set (width w);' v.v. chỉ với 'int' bạn không thể làm điều đó.Tham số tăng cường – thecoshman
dành cho các đối số được đặt tên (và thậm chí là tùy chọn), trong khi BOOST_STRONG_TYPEDEF * sẽ tạo một loại "tên" mới sẽ thay thế cho loại ban đầu nhưng vẫn thuộc loại riêng biệt *. – Gigi