Breaking Dependencies: The SOLID Principles
Breaking Dependencies: The SOLID Principles Klaus Iglberger, CppCon 2020 klaus.iglberger@gmx.de2 Klaus Iglberger C++ Trainer since 2016 Author of the C++ math library (Co-)Organizer Single-Responsibility Principle (SRP) A Circle changes if … … the basic properties of a circle change; … the Screen changes; … the Printer changes; … the ByteStream changes; … the implementation details of SOLID principles to reduce coupling and facilitate change Separate concerns via the SRP to isolate changes Design by OCP to simplify additions/extensions Adhere to the LSP when using abstractions Minimize0 码力 | 96 页 | 2.14 MB | 5 月前3Thinking Functionally In C++
1:Functional Code Categories • Actions • Depend on when or how many times they are called. Observable changes occur. • puts("hello world"); • LaunchRocket(); • x = 4; • Calculations • Depend only on their are called. Calling them with the same inputs always results in the same output. No observable changes occur. • std::plus(2,4) • IsEven(integer); • std::all_of(begin(integers), end(integers), IsEven) birthday card with the gift card options that will be put on their desk at the beginning of the day!Breaking down a problem Barb's bakery wants to give their employees a fun gift on their birthday. They0 码力 | 114 页 | 3.14 MB | 5 月前3Adventures with Legacy Codebases: Tales of Incremental Improvement
● Adopt new Poetry + pyproject.toml project templates ○ New linters ○ New type-checking ○ Code changes needed to adopt ● A goal to increase test coverage ○ “Refactoring” to make code more testable“X% analysis ● Always provide a clang-format file ● git-hooks to automatically apply formatting to changes ● Formatting verified in CIImproving with static analysis …with ASAN, UBSAN, and TSANhttps://www E2EMoving up the testing pyramid Unit Tests DSP Regression VST3Changing legacy APIs should you?Breaking changes ● class templatechecked_value ● class template boost::optional ● Platform 0 码力 | 77 页 | 4.34 MB | 5 月前3Django CMS 2.4.x Documentation
Release 2.4.3-support 2 Contents CHAPTER 1 Install Warning: Version 2.4 introduces some significant changes that require action if you are upgrading from a previous version. Please refer to Upgrading from USE_THOUSAND_SEPARATOR = True, which caused placeholders pri- mary keys to be formatted according to locale, breaking frontend editing. Fix show_placeholder in preview mode show_placeholder no longer uses cached content release notes 1.3.1 What’s new in 2.4 Warning: Upgrading from previous versions 2.4 introduces some changes that require action if you are upgrading from a previous version. You will need to read the sections0 码力 | 104 页 | 709.98 KB | 6 月前3Django CMS 2.4.x Documentation
document refers to version 2.4.3-support Install Warning Version 2.4 introduces some significant changes that require action if you are upgrading from a previous version. Please refer to Upgrading from USE_THOUSAND_SEPARATOR = True, which caused placeholders primary keys to be formatted according to locale, breaking frontend editing. Fix show_placeholder in preview mode show_placeholder no longer uses cached content 2.4 release notes What’s new in 2.4 Warning Upgrading from previous versions 2.4 introduces some changes that require action if you are upgrading from a previous version. You will need to read the sections0 码力 | 156 页 | 727.78 KB | 6 月前3Continuous Regression Testing for Safer and Faster Refactoring
code change can break our software, how could we stay productive and safely introduce frequent changes? Implement high-level tests and continuously run them at scale to cover real-world system behaviors prone to capturing non-deterministic data. are prone to capturing unimportant data. may leave out changes not captured in the output. fail to compare captured data in their original type. Good tests pass testing27 Aurora Innovation About Touca Find the unintended side-effects of your day-to-day code changes Trusted By: Backed By:28 Aurora Innovation Agenda What is continuous regression testing How0 码力 | 85 页 | 11.66 MB | 5 月前3Django CMS 2.3.x Documentation
USE_THOUSAND_SEPARATOR = True, which caused placeholders pri- mary keys to be formatted according to locale, breaking frontend editing. 1.3 2.3.7 release notes Warning: Upgrading from previous versions 2.3.7 now requires namespace. Plugin cancel button fixed The cancel button in plugin change forms no longer saves the changes, but actually cancels. Tests refactor Tests can now be run using setup.py test or runtests.py (the improved. • Internationalized strings in JavaScript now get escaped. 1.7.2 Backwards incompatible changes New minimum requirements for dependencies • django-reversion must now be at version 1.6 • django-sekizai0 码力 | 92 页 | 666.41 KB | 6 月前3Django CMS 3.11.10 Documentation
can double-click on the paragraph of the text to change it, add formatting, and save it again. Any changes that are made after publishing are saved to a draft and will not be visible until you re-publish com/django-cms/djangocms-admin-style] for a consistent user experience with django CMS and Django admin. 3. It changes into the project directory and runs the migrate command to create the database: 4. It prompts for list of polls in the sideframe, with add_sideframe_item(). After refreshing the page to load the changes, you can now see the list of polls directly from the menu. Also useful would be an option to create0 码力 | 493 页 | 1.44 MB | 6 月前0.03Django CMS 4.1.x Documentation
can double-click on the paragraph of the text to change it, add formatting, and save it again. Any changes that are made after publishing are saved to a draft and will not be visible until you re-publish com/django-cms/djangocms-admin-style] for a consistent user experience with django CMS and Django admin. 3. It changes into the project directory and runs the migrate command to create the database: 4. It prompts for list of polls in the sideframe, with add_sideframe_item(). After refreshing the page to load the changes, you can now see the list of polls directly from the menu. Also useful would be an option to create0 码力 | 518 页 | 1.66 MB | 6 月前3Back to Basics: Debugging Techniques
under a well-defined set of conditions • In contrast, a non-deterministic defect is a defect that changes its symptoms from run-to-run under a well-defined set of conditions 8CppCon 2021 – Back to Basics: root cause of the defect and its relationship to the whole • Repair • Resolve the defect without breaking anything else 13CppCon 2021 – Back to Basics: Debugging Techniques Copyright © 2021 Bob Steagall Gaining enough knowledge about a problem and the surrounding code, that you believe you can make changes to carry out a repair • At a minimum, you should have • Located the incorrect lines of code •0 码力 | 44 页 | 470.68 KB | 5 月前3
共 151 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16