When considering interfaces in the context of C++, software engineers typically think about C++ language constructs: namespaces, base classes, function prototypes, and other entities defined by the C++ standard.
However, the challenge for C++ library authors is to provide not just carefully-crafted code, but also well-considered projects that deliver functionality to users. Providing useful and reusable libraries means stepping outside the C++ syntax to consider other kinds of interfaces provided by our C++ projects.
This talk goes beyond the C++ syntax to fill in these gaps through an exploration of the other kinds of interfaces and contracts that are implicitly and explicitly provided by C++ projects.
During this discussion, contract-based thinking will be applied to the parts of C++ projects that are not C++ source code. Both conceptual tools and pragmatic recommendations will be suggested for use in maintaining C++ projects and rescoping the role of a C++ software engineer.
View Slides
Bret likes making authoring and maintaining C++ codebases simpler and more intuitive by treating projects more like cattle and less like pets. He is especially interested in the software development lifecycle, development automation, modern build systems, packaging, code transformation, software governance, and code analysis.
Bret is currently an engineer in Bloomberg's developer experience department. He has worked in embedded C++ and safety critical C++ for previous employers.