tôi sẽ không làm điều đó theo cách này. Lý do cho các thành viên di chuyển để tồn tại ở nơi đầu tiên là hiệu suất. Làm điều này cho nhà xây dựng di chuyển của bạn giống như bắn phá ra megabucks cho một siêu xe và sau đó cố gắng để tiết kiệm tiền bằng cách mua khí thường xuyên.
Nếu bạn muốn giảm số lượng mã bạn viết, chỉ cần không viết thành viên di chuyển. Lớp học của bạn sẽ sao chép tốt trong ngữ cảnh di chuyển.
Nếu bạn muốn mã của mình có hiệu suất cao, hãy điều chỉnh công cụ xây dựng di chuyển của bạn và chuyển bài tập càng nhanh càng tốt. Thành viên di chuyển tốt sẽ nhanh chóng, và bạn nên ước lượng tốc độ của mình bằng cách đếm số lượt tải, cửa hàng và chi nhánh. Nếu bạn có thể viết một cái gì đó với 4 tải/cửa hàng thay vì 8, làm điều đó! Nếu bạn có thể viết một cái gì đó mà không có nhánh thay vì 1, hãy làm điều đó!
Khi bạn (hoặc khách hàng của bạn) đưa lớp học của bạn vào một số std::vector
, một số lô di chuyển có thể được tạo trên loại của bạn. Ngay cả khi di chuyển của bạn là sét nhanh ở 8 tải/cửa hàng, nếu bạn có thể tăng tốc nhanh gấp hai lần hoặc thậm chí nhanh hơn 50% chỉ với 4 hoặc 6 lần tải/cửa hàng, thì đó là thời gian tốt.
Cá nhân tôi bị bệnh khi nhìn thấy con trỏ chờ đợi và sẵn sàng đóng góp thêm 5 phút để viết mã của tôi và biết rằng nó càng nhanh càng tốt.
Nếu bạn vẫn không thuyết phục điều này đáng giá, hãy viết cả hai cách và sau đó kiểm tra hội đồng được tạo ở mức tối ưu hóa đầy đủ. Ai biết được, trình biên dịch của bạn chỉ có thể đủ thông minh để tối ưu hóa thêm tải và cửa hàng cho bạn. Nhưng vào thời điểm này, bạn đã đầu tư nhiều thời gian hơn nếu bạn vừa viết một hàm khởi động được tối ưu hóa ngay từ đầu.
Nguồn
2013-06-15 00:23:01
Có một số lời khuyên tốt ở đây nhưng tôi nghĩ rằng bỏ qua câu trả lời này để đưa vào tài khoản rằng chi phí của mã trùng lặp là nhiều hơn chỉ 5 phút dành cho nó một lần thứ hai - mã dup có chi phí đáng kể hơn nhiều so với khả năng đọc, khả năng bảo trì và độ bền vững. Cụ thể khi có mã trùng lặp, nó mời một loại lỗi rất phổ biến: đó là, khi một cái gì đó được sửa hoặc thay đổi trong một phiên bản của mã và không phải trong một mã khác. Bị cắn bởi nhiều lần hơn tôi quan tâm trong cuộc sống của tôi, tôi sẽ không lặp lại mã trừ khi có một lý do * rất * mạnh mẽ đã được chứng minh. –
Hiệu suất là một trong những lý do nhưng không phải là lý do duy nhất hoặc quan trọng nhất. Hầu hết thời gian khi tôi viết một nhà xây dựng di chuyển và điều hành chuyển nhượng di chuyển là bởi vì lớp của tôi có quyền sở hữu duy nhất của một tài nguyên. Thường thì hiệu suất không phải là một vấn đề, vì vậy trong những trường hợp này có ý nghĩa để tránh trùng lặp. – opetroch
@ user779446: Cảm ơn bạn đã chia sẻ các ưu tiên của mình. Đây là của tôi: http://howardhinnant.github.io/coding_guidelines.html –