Changes between Version 11 and Version 12 of BestPracticeHandbook
- Timestamp:
- May 6, 2015, 11:41:57 PM (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
BestPracticeHandbook
v11 v12 27 27 [[PageOutline]] 28 28 29 == 1. PRACTICE: Strongly consider using git and [https://github.com/ GitHub] to host a copy of your library and its documentation ==29 == 1. CONVENIENCE: Strongly consider using git and [https://github.com/ GitHub] to host a copy of your library and its documentation == 30 30 31 31 There are many source code control systems, with subversion and CVS being the two most recently popular of yesteryear. Probably the current most popular source code control system is Git, and despite its (Mingw i.e. non-native) port on Microsoft Windows being a bit flaky, it is very useful once mastered. … … 90 90 91 91 92 == 2. DESIGN: Strongly consider versioning your library's namespace using inline namespaces and requesting users to alias a versioned namespace instead of using it directly ==92 == 2. COUPLING: Strongly consider versioning your library's namespace using inline namespaces and requesting users to alias a versioned namespace instead of using it directly == 93 93 94 94 C++ 11 adds a new feature called inline namespaces which are far more powerful than they first appear: … … 390 390 391 391 392 == 9. DESIGN : Consider breaking up your testing into per-commit CI testing, 24 hour soak testing, and parameter fuzz testing ==392 == 9. DESIGN/QUALITY: Consider breaking up your testing into per-commit CI testing, 24 hour soak testing, and parameter fuzz testing == 393 393 394 394 When a library is small, you can generally get away with running all tests per commit, and as that is easier that is usually what one does. … … 477 477 478 478 479 == 11. QUALITY: Consider having Travis send your unit test code coverage results to Coveralls.io == 480 481 == 12. QUALITY: Consider creating a status dashboard for your library with everything you need to know showed in one place == 482 483 == 13. DESIGN: Consider enabling multiple versions of your library to coexist within the same translation unit == 484 485 == 14. DESIGN: Consider making (more) use of namespace composure as a design pattern == 486 487 479 == 11. CONVENIENCE: Consider having Travis send your unit test code coverage results to Coveralls.io == 480 481 == 12. CONVENIENCE: Consider creating a status dashboard for your library with everything you need to know shown in one place == 482 483 == 13. COUPLING: Consider enabling multiple versions of your (header only) library to coexist within the same translation unit == 484 485 == 14. DESIGN: Consider making (more) use of C++ 11 namespace composure as a design pattern == 486 487 == 15. FUTURE PROOFING: Consider using a precompiled header to feed your (multi-abi) library into your unit tests == 488 489 Good proxy for supporting C++ Modules down the road, usually a massive build time improvement too especially on low end CPUs. 490 491 == 16. COUPLING: Consider allowing your library users to dependency inject your dependencies on other libraries == 492 493 == 17. 494 495 == 18. 496 497 == 19. FUTURE PROOFING: Consider being C++ resumable function ready == 498 499 Never block. Never call anything which blocks. 500 501 Everything i/o async. Boost.Fiber. 502 503 Automatic WinRT friendly. 504 505 == 20. COUPLING/SOAPBOX: Essay about pros and cons of defaulting to standalone capable (Boost) C++ 11/14 libraries with no external dependencies == 506 507 monolithic vs modular 508 git submodules vs biicode