C ++ hiệu quả vẫn hiệu quả?


139

Từ những gì tôi thấy trong bài viết này, tôi quyết định bắt đầu đọc cuốn sách C ++ hiệu quả .

Nhưng bây giờ có nhiều tính năng mới vì C ++ 11 và một vài thực tiễn tốt đã thay đổi, tôi không chắc liệu đó có thực sự là một ý tưởng hay hay không. Sự ra đời của C ++ 11 có phản đối bất kỳ lời khuyên nào có trong C ++ hiệu quả không? Nếu vậy, những chủ đề nào tôi nên tránh?


4
Tác giả đã đưa ra một số bình luận trong một bài viết scottmeyers.blogspot.co.uk/2013/01/ và những người khác trên trang web, về cơ bản là có, nhưng có nhiều điều để xem xét.
jcoder

2
Chỉ cần nhìn vào mục lục: pearson.ch/1471/9780321334879/ Ấn . Nhiều mục vẫn còn hiệu lực, một số có thể được cải thiện với các tham chiếu giá trị r và những thứ mới khác, nhưng nhìn chung nó vẫn hiệu quả.
Zeta

Câu hỏi này là một sự phù hợp kém cho SO. (1) Nội dung được hỏi không nằm trong câu hỏi, nó nằm trong tài nguyên ngoài trang web (và thậm chí không được liên kết). (2) Hoặc giải quyết từng đề xuất trong sách là một câu trả lời riêng biệt, trong trường hợp đây là câu hỏi danh sách, yêu cầu quá nhiều câu trả lời, hoặc nếu không một câu trả lời sẽ thảo luận về toàn bộ cuốn sách, trong trường hợp câu hỏi này quá rộng. Điều đó nói rằng, đặt câu hỏi giống hệt nhau về bất kỳ khuyến nghị duy nhất sẽ là tuyệt vời.
Ben Voigt

2
(1) Tôi đang tham khảo một cuốn sách được đề cập trong một trong những câu hỏi phổ biến nhất trong SO. (2) Đó là một khiếu nại ok, nhưng bạn có thể rộng rãi với hầu hết mọi câu hỏi. hoặc bạn có thể hẹp như bạn muốn. Tôi nghĩ rằng các câu trả lời khá hay và hẹp hơn hầu hết các câu hỏi trong SO, vì vậy tôi không nghĩ rằng một danh sách chi tiết là cần thiết. CHỦ ĐỀ: đoán xem ai có câu hỏi bắt đầu bằng "Ai đó có thể đánh bại hiệu suất của số nguyên của tôi với mã chuỗi std ::, được liên kết bên dưới không?"
Đức Capuano

Câu trả lời:


93

Đây là những gì Scott Meyers đã nói về nó trên blog của mình

Điều này có thể khiến bạn tự hỏi liệu thông tin và lời khuyên trong phiên bản C ++ 0x trước C ++ hiệu quả này có còn phù hợp hay không. Tôi vui mừng báo cáo rằng nó làm. Đáng ngạc nhiên là như vậy, trên thực tế. Trải qua gần hai năm nghiên cứu chi tiết về C ++ 0x, tôi dự kiến ​​sẽ rên rỉ một chút khi tôi xem xét mục lục của cuốn sách này với C ++ 0x trong tâm trí. Chắc chắn một số mặt hàng sẽ không phù hợp. Nhưng lời khuyên tôi tìm thấy đã chứng minh âm thanh. Các nhà phát triển C ++ 0x có nên thích consts, enums và inline cho #defines(Mục 2)? Họ nên. Họ có nên ngăn chặn các trường hợp ngoại lệ rời khỏi tàu khu trục (Mục 8) không? Chắc chắn rồi. Họ có nên sử dụng các đối tượng để quản lý tài nguyên? Khai báo dữ liệu thành viên riêng? Xem xét lựa chọn thay thế cho các chức năng ảo? Mã độc lập tham số yếu tố ra khỏi mẫu? (Mục 13, 22, 35 và 44.) Vâng, vâng, vâng, vâng! Mục tiêu của tôi luôn là mục tiêu của C ++ hiệu quả để tóm tắt lời khuyên trong cuốn sách và tóm tắt đó vẫn có thể áp dụng cho việc phát triển C ++ 0x như đối với sự phát triển của C ++ truyền thống. C ++ 0x là một ngôn ngữ lớn hơn, và trong một số trường hợp, nó là một ngôn ngữ khác, nhưng các kỹ thuật cốt lõi để sử dụng hiệu quả của Old old C ++ cũng là cốt lõi để sử dụng C ++ 0x hiệu quả.

Điều này không có nghĩa là C ++ hiệu quả này là một kết hợp hoàn hảo cho C ++ 0x. Cuốn sách không thảo luận về các tính năng mới đối với C ++ 0x, vì vậy, các mục về việc sử dụng hiệu quả các tính năng đó bị thiếu. C ++ 0xified hiệu quả C ++ chắc chắn sẽ có các Mục dành cho các hoạt động di chuyển, khởi tạo thống nhất và các biểu thức lambda và có lẽ nó có cả một chương về việc sử dụng hiệu quả API đồng thời. Một cuốn sách như vậy cũng sẽ chứa các ví dụ khác nhau, ví dụ: những cuốn sách sử dụng biến tự động, dựa trên phạm vi cho các vòng lặp, bộ khởi tạo mặc định trong lớp, cũng như mẫu biến đổi thỉnh thoảng. Trong phạm vi mà cuốn sách này không được hỗ trợ cho C ++ 0x, các lỗi là do thiếu sót, không phải là hoa hồng.

CẬP NHẬT : tiêu đề mới C ++ hiện đại hiệu quả đã được bán từ tháng 11 năm 2014 từ O'ReillyAmazon (và nhiều người khác mà bạn có thể google).


45

Vâng, chắc chắn vẫn đáng đọc. Có một cuốn sách mới mà Scott đang thực hiện: C ++ 11 hiệu quả , tập trung vào mã chỉ C ++ 11. Các Effective C ++ vẫn còn rất phù hợp và không được thay thế bởi các cuốn sách mới. Mua nó, đọc nó, thưởng thức :)


1
Tôi thấy các cuốn sách xây dựng lẫn nhau, vì vậy, C ++ hiệu quả là nền tảng quan trọng. Nếu bạn chỉ đọc một trong hai, thì đó phải là C ++ hiệu quả. C ++ hiện đại hiệu quả là bí truyền hơn nhiều (và thành thật mà nói, phần lớn C ++ khác xa so với 'hiện đại' dù sao).
Andy Krouwel

21

Một, cuốn sách tất nhiên vẫn còn hiệu lực cho C ++ 03.

Hai, Meyers đang viết hoặc đã viết, tùy thuộc vào thời điểm bạn đang đọc câu này, Hiệu quả C ++ 11.

Ba, nói một cách khái quát, những điểm của cuốn sách này sẽ vẫn còn hiệu lực. C ++ vẫn ủng hộ tốc độ hơn sự an toàn và nhiều vấn đề trong C ++ hiệu quả xoay quanh vấn đề này.

Các chỉ loại điểm tôi mong chờ để được hợp lệ là những người mà nói "Đừng làm điều này, làm điều này để thay thế." "Đừng làm điều này" vẫn sẽ có hiệu lực. Nhưng C ++ sẽ giải quyết được một số vấn đề. Đặc biệt, mọi khuyến nghị sử dụng boost đều không được chấp nhận, vì C ++ 11 đã bao gồm nhiều tính năng mà Meyers đặc biệt đề cập đến người đọc để Boost cho.


1
Và tất nhiên tr1, vì tôi tin rằng mọi yếu tố của tr1anh ấy đã đề cập đã đưa nó vào tiêu chuẩn C ++ 11.
Kyle Strand
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.