最新章節(jié)
書(shū)友吧品牌:中圖公司
上架時(shí)間:2021-07-02 18:10:02
出版社:Packt Publishing
本書(shū)數(shù)字版權(quán)由中圖公司提供,并由其授權(quán)上海閱文信息技術(shù)有限公司制作發(fā)行
- Summary 更新時(shí)間:2021-07-02 18:29:27
- Feature envy
- Data class
- Primitive obsession
- Dead code
- Large class
- Conditional complexity
- Duplicate code
- Long parameter list
- Long method
- Comment smell
- Code smell
- Dependency inversion
- Interface segregation
- Liskov substitution principle
- Open closed principle
- Single responsibility principle
- SOLID design principle
- What is agile?
- Code smell
- Code refactoring
- Code Smells and Clean Code Practices
- Summary
- Mismatched use of new and free or malloc and delete
- Fixing the memory leaks
- Detecting memory leaks
- Detecting uninitialized memory access
- Detecting memory access to already released memory locations
- Detecting memory access outside the boundary of an array
- The Memcheck tool
- Debugging memory leaks with Valgrind
- GDB commands quick reference
- Debugging your application using GDB
- Debugging tools
- Debugging strategies
- Effective debugging
- Debugging Techniques
- Summary
- It's testing time!
- Let's build and run our BDD test case
- BDD - a test-first development approach
- Dry running your cucumber test cases
- Executing our test case
- Integrating our project in cucumber-cpp CMakeLists.txt
- Writing our first Cucumber test case
- The recommended cucumber-cpp project folder structure
- Spoken languages supported by Gherkin
- Feature file
- Building and executing the test cases
- Installing the cucumber-cpp framework prerequisite software
- Installing cucumber-cpp in Ubuntu
- The Gherkin language
- C++ BDD frameworks
- TDD versus BDD
- Behavior-driven development
- Behavior-Driven Development
- Summary
- Testing a piece of legacy code that has dependency
- TDD in action
- Using Google test framework in Visual Studio IDE
- Writing our first test case using the Google test framework
- How to build google test and mock together as one single static library without installing?
- Installing Google test framework on Ubuntu
- Google test framework
- Unit testing frameworks for C++
- Is TDD even applicable for embedded or products that involve hardware?
- Does TDD work for complex legacy projects?
- Is code coverage metrics good or bad?
- Does it take more efforts for a developer to write a unit test?
- Common myths and questions around TDD
- TDD
- Test-Driven Development
- Summary
- What did you learn?
- How to compile and run
- Exception handling with the concurrency library
- How to compile and run
- Binding the thread procedure and its input to packaged_task
- How to compile and run
- Using tasks with a thread support library
- How to compile and run
- Concurrency tasks
- How to compile and run
- Asynchronous message passing using the concurrency support library
- How to compile and run
- Concurrency
- Semaphore
- What did you learn?
- How to compile and run
- Conditional variable
- Shared mutex
- What did you learn?
- How to compile and run
- What is a deadlock?
- How to compile and run
- Let's use mutex
- How to compile and run
- What would happen if threads weren't synchronized?
- Synchronizing threads
- What did you learn?
- How to compile and run
- Using std::thread in an object-oriented fashion
- How to compile and run
- How to write a multithreaded application using the native C++ thread feature
- Does C++ support threads natively?
- How to compile and run
- Creating threads with the pthreads library
- Introduction to POSIX pthreads
- Multithreaded Programming and Inter-Process Communication
- Summary
- Writing a simple math application combining multiple layouts
- Using stacked layout in Qt applications
- Signals and slots
- Writing a GUI application with a grid layout
- Writing a GUI application with a box layout
- Writing a GUI application with a vertical layout
- Writing a GUI application with a horizontal layout
- Layouts
- Writing our first Qt GUI application
- Qt Widgets
- Writing our first Qt console application
- Qt Core
- Installing Qt 5.7.0 in Ubuntu 16.04
- Qt
- Developing GUI Applications in C++
- Summary
- Circular dependency
- weak_ptr
- Code walkthrough
- shared_ptr
- Code walkthrough
- unique_ptr
- Code walkthrough - Part 2
- Code walkthrough - Part 1
- auto_ptr
- Smart pointers
- Issues with raw pointers
- Memory management
- Smart Pointers
- Summary
- Partial template specialization
- Code walkthrough
- Explicit class specializations
- Code walkthrough
- Class template
- Code walkthrough
- Overloading function templates
- Code walkthrough
- Function templates
- Generic programming
- Template Programming
- Summary
- Commonly used APIs in a priority queue
- Priority queue
- Commonly used APIs in a queue
- Queue
- Commonly used APIs in a stack
- Stack
- Container adapters
- Unordered multimaps
- Unordered multisets
- Unordered maps
- Unordered sets
- Multimap
- Multiset
- Commonly used APIs in a map
- Code walkthrough
- Map
- Commonly used APIs in a set
- Code walkthrough
- Set
- Associative containers
- Commonly used APIs in a deque
- Deque
- Commonly used APIs in a forward_list container
- Code walkthrough
- Forward list
- Commonly used APIs in a list
- List
- Pitfalls of a vector
- Code walkthrough
- Commonly used vector APIs
- Code walkthrough
- Vector
- Commonly used APIs in an array
- Code walkthrough
- Array
- Sequence containers
- Functors
- Containers
- Iterators
- Algorithms
- The Standard Template Library architecture
- Standard Template Library
- Summary
- Inline variables
- Template type auto-deduction for class templates
- If and Switch local scoped variables
- Structured binding
- The std::invoke( ) method
- Simplified static_assert
- New rules for type auto-detection from braced initializer list
- Easier nested namespace syntax
- Key features in C++17
- What features are deprecated or removed in C++17?
- What's new in C++17?
- C++17 background
- C++17 Features
- Questions
- Piracy
- Errata
- Downloading the example code
- Customer support
- Reader feedback
- Conventions
- Who this book is for
- What you need for this book
- What this book covers
- Preface
- Dedication
- Customer Feedback
- Why subscribe?
- www.PacktPub.com
- About the Reviewer
- About the Author
- Credits
- Mastering C++ Programming
- Copyright
- Title Page
- cover
- cover
- Title Page
- Copyright
- Mastering C++ Programming
- Credits
- About the Author
- About the Reviewer
- www.PacktPub.com
- Why subscribe?
- Customer Feedback
- Dedication
- Preface
- What this book covers
- What you need for this book
- Who this book is for
- Conventions
- Reader feedback
- Customer support
- Downloading the example code
- Errata
- Piracy
- Questions
- C++17 Features
- C++17 background
- What's new in C++17?
- What features are deprecated or removed in C++17?
- Key features in C++17
- Easier nested namespace syntax
- New rules for type auto-detection from braced initializer list
- Simplified static_assert
- The std::invoke( ) method
- Structured binding
- If and Switch local scoped variables
- Template type auto-deduction for class templates
- Inline variables
- Summary
- Standard Template Library
- The Standard Template Library architecture
- Algorithms
- Iterators
- Containers
- Functors
- Sequence containers
- Array
- Code walkthrough
- Commonly used APIs in an array
- Vector
- Code walkthrough
- Commonly used vector APIs
- Code walkthrough
- Pitfalls of a vector
- List
- Commonly used APIs in a list
- Forward list
- Code walkthrough
- Commonly used APIs in a forward_list container
- Deque
- Commonly used APIs in a deque
- Associative containers
- Set
- Code walkthrough
- Commonly used APIs in a set
- Map
- Code walkthrough
- Commonly used APIs in a map
- Multiset
- Multimap
- Unordered sets
- Unordered maps
- Unordered multisets
- Unordered multimaps
- Container adapters
- Stack
- Commonly used APIs in a stack
- Queue
- Commonly used APIs in a queue
- Priority queue
- Commonly used APIs in a priority queue
- Summary
- Template Programming
- Generic programming
- Function templates
- Code walkthrough
- Overloading function templates
- Code walkthrough
- Class template
- Code walkthrough
- Explicit class specializations
- Code walkthrough
- Partial template specialization
- Summary
- Smart Pointers
- Memory management
- Issues with raw pointers
- Smart pointers
- auto_ptr
- Code walkthrough - Part 1
- Code walkthrough - Part 2
- unique_ptr
- Code walkthrough
- shared_ptr
- Code walkthrough
- weak_ptr
- Circular dependency
- Summary
- Developing GUI Applications in C++
- Qt
- Installing Qt 5.7.0 in Ubuntu 16.04
- Qt Core
- Writing our first Qt console application
- Qt Widgets
- Writing our first Qt GUI application
- Layouts
- Writing a GUI application with a horizontal layout
- Writing a GUI application with a vertical layout
- Writing a GUI application with a box layout
- Writing a GUI application with a grid layout
- Signals and slots
- Using stacked layout in Qt applications
- Writing a simple math application combining multiple layouts
- Summary
- Multithreaded Programming and Inter-Process Communication
- Introduction to POSIX pthreads
- Creating threads with the pthreads library
- How to compile and run
- Does C++ support threads natively?
- How to write a multithreaded application using the native C++ thread feature
- How to compile and run
- Using std::thread in an object-oriented fashion
- How to compile and run
- What did you learn?
- Synchronizing threads
- What would happen if threads weren't synchronized?
- How to compile and run
- Let's use mutex
- How to compile and run
- What is a deadlock?
- How to compile and run
- What did you learn?
- Shared mutex
- Conditional variable
- How to compile and run
- What did you learn?
- Semaphore
- Concurrency
- How to compile and run
- Asynchronous message passing using the concurrency support library
- How to compile and run
- Concurrency tasks
- How to compile and run
- Using tasks with a thread support library
- How to compile and run
- Binding the thread procedure and its input to packaged_task
- How to compile and run
- Exception handling with the concurrency library
- How to compile and run
- What did you learn?
- Summary
- Test-Driven Development
- TDD
- Common myths and questions around TDD
- Does it take more efforts for a developer to write a unit test?
- Is code coverage metrics good or bad?
- Does TDD work for complex legacy projects?
- Is TDD even applicable for embedded or products that involve hardware?
- Unit testing frameworks for C++
- Google test framework
- Installing Google test framework on Ubuntu
- How to build google test and mock together as one single static library without installing?
- Writing our first test case using the Google test framework
- Using Google test framework in Visual Studio IDE
- TDD in action
- Testing a piece of legacy code that has dependency
- Summary
- Behavior-Driven Development
- Behavior-driven development
- TDD versus BDD
- C++ BDD frameworks
- The Gherkin language
- Installing cucumber-cpp in Ubuntu
- Installing the cucumber-cpp framework prerequisite software
- Building and executing the test cases
- Feature file
- Spoken languages supported by Gherkin
- The recommended cucumber-cpp project folder structure
- Writing our first Cucumber test case
- Integrating our project in cucumber-cpp CMakeLists.txt
- Executing our test case
- Dry running your cucumber test cases
- BDD - a test-first development approach
- Let's build and run our BDD test case
- It's testing time!
- Summary
- Debugging Techniques
- Effective debugging
- Debugging strategies
- Debugging tools
- Debugging your application using GDB
- GDB commands quick reference
- Debugging memory leaks with Valgrind
- The Memcheck tool
- Detecting memory access outside the boundary of an array
- Detecting memory access to already released memory locations
- Detecting uninitialized memory access
- Detecting memory leaks
- Fixing the memory leaks
- Mismatched use of new and free or malloc and delete
- Summary
- Code Smells and Clean Code Practices
- Code refactoring
- Code smell
- What is agile?
- SOLID design principle
- Single responsibility principle
- Open closed principle
- Liskov substitution principle
- Interface segregation
- Dependency inversion
- Code smell
- Comment smell
- Long method
- Long parameter list
- Duplicate code
- Conditional complexity
- Large class
- Dead code
- Primitive obsession
- Data class
- Feature envy
- Summary 更新時(shí)間:2021-07-02 18:29:27