Cart

C++ Coding Standards: 101 Rules, Guidelines, and Best Practices, 1st edition

BRAND: PEARSON

Publisher:Addison-Wesley Professional
Author: Herb Sutter; Andrei Alexandrescu
Edition: (October 25, 2004) © 2005
eBook ISBN:9780132654425
Print ISBN: 9780321113580
Type: 1 Year Subscription. Dành cho Cá nhân  

Publisher:
| eBook ISBN:
eBook edition. 1 Year Subscription. Dành cho Cá nhân  |  Trường ĐH, Nhóm, Thư Viện: Gọi 0915920514 để báo giá Pearson, Vital Source eBook hoặc mua Sách In  

Số lượng:
Tổng tiền:
Giá có thể thay đổi bất kỳ khi nào.
Thời hạn giao hàng: 03 ngày làm việc với sách eBook và 30 ngày với sách In. Gọi để được Tư vấn Giáo Trình.

Mô tả sản phẩm


Mỗi nhóm phát triển phần mềm nên có và tuân theo một tiêu chuẩn mã hóa.

Còn tốt hơn nữa khi những gì tiêu chuẩn mã hóa yêu cầu thực sự nhất quán,

hợp lý, đúng đắn.

Các tiêu chuẩn mã hóa có nhiều ưu điểm:

*Họ cải thiện chất lượng mã. Điều này xảy ra tự động khi theo dõi một

bộ hướng dẫn tốt, đơn giản.

*Chúng cải thiện tốc độ phát triển vì lập trình viên không cần phải

luôn đưa ra quyết định bắt đầu từ những nguyên tắc đầu tiên.

*Họ nâng cao tinh thần đồng đội bằng cách loại bỏ những cuộc tranh luận không cần thiết về những vấn đề vụn vặt

vấn đề và bằng cách giúp các thành viên trong nhóm dễ dàng đọc và duy trì ý kiến ​​của nhau

mã số.

Các tiêu chuẩn mã hóa được giới thiệu trong cuốn sách này là một tập hợp các hướng dẫn cho

viết mã C++ chất lượng cao.

***Chúng là những kết luận chắt lọc từ kinh nghiệm tập thể phong phú về C++

cộng đồng. Cho đến nay, khối kiến ​​thức này chỉ được cung cấp dưới dạng

văn hóa dân gian hoặc rải rác khắp các cuốn sách.


Preface.

1. Organizational and Policy Issues.

    Don't sweat the small stuff. (Or: Know what not to standardize.).

    Compile cleanly at high warning levels.

    Use an automated build system.

    Use a version control system.

    Invest in code reviews.

2. Design Style.

    Give one entity one cohesive responsibility.

    Correctness, simplicity, and clarity come first.

    Know when and how to code for scalability.

    Don't optimize prematurely.

    Don't pessimize prematurely.

    Minimize global and shared data.

    Hide information.

    Know when and how to code for concurrency.

    Ensure resources are owned by objects. Use explicit RAII and smart pointers.

3. Coding Style.

    Prefer compile- and link-time errors to run-time errors.

    Use const proactively.

    Avoid macros.

    Avoid magic numbers.

    Declare variables as locally as possible.

    Always initialize variables.

    Avoid long functions. Avoid deep nesting.

    Avoid initialization dependencies across compilation units.

    Minimize definitional dependencies. Avoid cyclic dependencies.

    Make header files self-sufficient.

    Always write internal #include guards. Never write external #include guards.

4. Functions and Operators.

    Take parameters appropriately by value, (smart) pointer, or reference.

    Preserve natural semantics for overloaded operators.

    Prefer the canonical forms of arithmetic and assignment operators.

    Prefer the canonical form of ++ and --. Prefer calling the prefix forms.

    Consider overloading to avoid implicit type conversions.

    Avoid overloading &&, ||, or , (comma).

    Don't write code that depends on the order of evaluation of functionarguments.

5. Class Design and Inheritance.

    Be clear what kind of class you're writing.

    Prefer minimal classes to monolithic classes.

    Prefer composition to inheritance.

    Avoid inheriting from classes that were not designed to be base classes.

    Prefer providing abstract interfaces.

    Public inheritance is substitutability.

    Inherit, not to reuse, but to be reused.

    Practice safe overriding.

    Consider making virtual functions nonpublic, and public functions nonvirtual.

    Avoid providing implicit conversions.

    Make data members private, except in behaviorless aggregates (C-stylestructs).

    Don't give away your internals.

    Pimpl judiciously.

    Prefer writing nonmember nonfriend functions.

    Always provide new and delete together.

    If you provide any class-specific new, provide all of the standard forms (plain, in-place, and nothrow).

6. Construction, Destruction, and Copying.

    Define and initialize member variables in the same order.

    Prefer initialization to assignment in constructors.

    Avoid calling virtual functions in constructors and destructors.

    Make base class destructors public and virtual, or protected and nonvirtual.

    Destructors, deallocation, and swap never fail.

    Copy and destroy consistently.

    Explicitly enable or disable copying.

    Avoid slicing. Consider Clone instead of copying in base classes.

    Prefer the canonical form of assignment.

    Whenever it makes sense, provide a no-fail swap (and provide it correctly).

7. Namespaces and Modules.

    Keep a type and its nonmember function interface in the same namespace.

    Keep types and functions in separate namespaces unless they're specifically intended to work together.

    Don't write namespace usings in a header file or before an #include.

    Avoid allocating and deallocating memory in different modules.

    Don't define entities with linkage in a header file.

    Don't allow exceptions to propagate across module boundaries.

    Use sufficiently portable types in a module's interface.

8. Templates and Genericity.

    Blend static and dynamic polymorphism judiciously.

    Customize intentionally and explicitly.

    Don't specialize function templates.

    Don't write unintentionally nongeneric code.

9. Error Handling and Exceptions.

    Assert liberally to document internal assumptions and invariants.

    Establish a rational error handling policy, and follow it strictly.

    Distinguish between errors and non-errors.

     Design and write error-safe code.

    Prefer to use exceptions to report errors.

    Throw by value, catch by reference.

    Report, handle, and translate errors appropriately.

    Avoid exception specifications.

10. STL: Containers.

    Use vector by default. Otherwise, choose an appropriate container.

    Use vector and string instead of arrays.

    Use vector (and string::c_str) to exchange data with non-C++ APIs.

    Store only values and smart pointers in containers.

    Prefer push_back to other ways of expanding a sequence.

    Prefer range operations to single-element operations.

    Use the accepted idioms to really shrink capacity and really erase elements.

11. STL: Algorithms.

    Use a checked STL implementation.

    Prefer algorithm calls to handwritten loops.

    Use the right STL search algorithm.

    Use the right STL sort algorithm.

    Make predicates pure functions.

    Prefer function objects over functions as algorithm and comparer arguments.

    Write function objects correctly.

12. Type Safety.

    Avoid type switching; prefer polymorphism.

    Rely on types, not on representations.

    Avoid using reinterpret_cast.

    Avoid using static_cast on pointers.

    Avoid casting away const.

    Don't use C-style casts.

    Don't memcpy or memcmp non-PODs.

    Don't use unions to reinterpret representation.

    Don't use varargs (ellipsis).

    Don't use invalid objects. Don't use unsafe functions.

    Don't treat arrays polymorphically.

Bibliography.

Summary of Summaries.

Index.

TỔNG QUAN SÁCH

Mỗi nhóm phát triển phần mềm nên có và tuân theo một tiêu chuẩn mã hóa.

Còn tốt hơn nữa khi những gì tiêu chuẩn mã hóa yêu cầu thực sự nhất quán,

hợp lý, đúng đắn.

Các tiêu chuẩn mã hóa có nhiều ưu điểm:

*Họ cải thiện chất lượng mã. Điều này xảy ra tự động khi theo dõi một

bộ hướng dẫn tốt, đơn giản.

*Chúng cải thiện tốc độ phát triển vì lập trình viên không cần phải

luôn đưa ra quyết định bắt đầu từ những nguyên tắc đầu tiên.

*Họ nâng cao tinh thần đồng đội bằng cách loại bỏ những cuộc tranh luận không cần thiết về những vấn đề vụn vặt

vấn đề và bằng cách giúp các thành viên trong nhóm dễ dàng đọc và duy trì ý kiến ​​của nhau

mã số.

Các tiêu chuẩn mã hóa được giới thiệu trong cuốn sách này là một tập hợp các hướng dẫn cho

viết mã C++ chất lượng cao.

***Chúng là những kết luận chắt lọc từ kinh nghiệm tập thể phong phú về C++

cộng đồng. Cho đến nay, khối kiến ​​thức này chỉ được cung cấp dưới dạng

văn hóa dân gian hoặc rải rác khắp các cuốn sách.

MỤC LỤC

Preface.

1. Organizational and Policy Issues.

    Don't sweat the small stuff. (Or: Know what not to standardize.).

    Compile cleanly at high warning levels.

    Use an automated build system.

    Use a version control system.

    Invest in code reviews.

2. Design Style.

    Give one entity one cohesive responsibility.

    Correctness, simplicity, and clarity come first.

    Know when and how to code for scalability.

    Don't optimize prematurely.

    Don't pessimize prematurely.

    Minimize global and shared data.

    Hide information.

    Know when and how to code for concurrency.

    Ensure resources are owned by objects. Use explicit RAII and smart pointers.

3. Coding Style.

    Prefer compile- and link-time errors to run-time errors.

    Use const proactively.

    Avoid macros.

    Avoid magic numbers.

    Declare variables as locally as possible.

    Always initialize variables.

    Avoid long functions. Avoid deep nesting.

    Avoid initialization dependencies across compilation units.

    Minimize definitional dependencies. Avoid cyclic dependencies.

    Make header files self-sufficient.

    Always write internal #include guards. Never write external #include guards.

4. Functions and Operators.

    Take parameters appropriately by value, (smart) pointer, or reference.

    Preserve natural semantics for overloaded operators.

    Prefer the canonical forms of arithmetic and assignment operators.

    Prefer the canonical form of ++ and --. Prefer calling the prefix forms.

    Consider overloading to avoid implicit type conversions.

    Avoid overloading &&, ||, or , (comma).

    Don't write code that depends on the order of evaluation of functionarguments.

5. Class Design and Inheritance.

    Be clear what kind of class you're writing.

    Prefer minimal classes to monolithic classes.

    Prefer composition to inheritance.

    Avoid inheriting from classes that were not designed to be base classes.

    Prefer providing abstract interfaces.

    Public inheritance is substitutability.

    Inherit, not to reuse, but to be reused.

    Practice safe overriding.

    Consider making virtual functions nonpublic, and public functions nonvirtual.

    Avoid providing implicit conversions.

    Make data members private, except in behaviorless aggregates (C-stylestructs).

    Don't give away your internals.

    Pimpl judiciously.

    Prefer writing nonmember nonfriend functions.

    Always provide new and delete together.

    If you provide any class-specific new, provide all of the standard forms (plain, in-place, and nothrow).

6. Construction, Destruction, and Copying.

    Define and initialize member variables in the same order.

    Prefer initialization to assignment in constructors.

    Avoid calling virtual functions in constructors and destructors.

    Make base class destructors public and virtual, or protected and nonvirtual.

    Destructors, deallocation, and swap never fail.

    Copy and destroy consistently.

    Explicitly enable or disable copying.

    Avoid slicing. Consider Clone instead of copying in base classes.

    Prefer the canonical form of assignment.

    Whenever it makes sense, provide a no-fail swap (and provide it correctly).

7. Namespaces and Modules.

    Keep a type and its nonmember function interface in the same namespace.

    Keep types and functions in separate namespaces unless they're specifically intended to work together.

    Don't write namespace usings in a header file or before an #include.

    Avoid allocating and deallocating memory in different modules.

    Don't define entities with linkage in a header file.

    Don't allow exceptions to propagate across module boundaries.

    Use sufficiently portable types in a module's interface.

8. Templates and Genericity.

    Blend static and dynamic polymorphism judiciously.

    Customize intentionally and explicitly.

    Don't specialize function templates.

    Don't write unintentionally nongeneric code.

9. Error Handling and Exceptions.

    Assert liberally to document internal assumptions and invariants.

    Establish a rational error handling policy, and follow it strictly.

    Distinguish between errors and non-errors.

     Design and write error-safe code.

    Prefer to use exceptions to report errors.

    Throw by value, catch by reference.

    Report, handle, and translate errors appropriately.

    Avoid exception specifications.

10. STL: Containers.

    Use vector by default. Otherwise, choose an appropriate container.

    Use vector and string instead of arrays.

    Use vector (and string::c_str) to exchange data with non-C++ APIs.

    Store only values and smart pointers in containers.

    Prefer push_back to other ways of expanding a sequence.

    Prefer range operations to single-element operations.

    Use the accepted idioms to really shrink capacity and really erase elements.

11. STL: Algorithms.

    Use a checked STL implementation.

    Prefer algorithm calls to handwritten loops.

    Use the right STL search algorithm.

    Use the right STL sort algorithm.

    Make predicates pure functions.

    Prefer function objects over functions as algorithm and comparer arguments.

    Write function objects correctly.

12. Type Safety.

    Avoid type switching; prefer polymorphism.

    Rely on types, not on representations.

    Avoid using reinterpret_cast.

    Avoid using static_cast on pointers.

    Avoid casting away const.

    Don't use C-style casts.

    Don't memcpy or memcmp non-PODs.

    Don't use unions to reinterpret representation.

    Don't use varargs (ellipsis).

    Don't use invalid objects. Don't use unsafe functions.

    Don't treat arrays polymorphically.

Bibliography.

Summary of Summaries.

Index.

-%
0₫ 0₫
0915920514
0915920514