C++Now 2021 has ended
Back To Schedule
Wednesday, May 5 • 7:00am - 8:30am
Preconditions, Postconditions, Invariants: How They Help Write Robust Programs

Log in to save this to your schedule, view media, leave feedback and see who's attending!

This is going to be a high-level overview of certain notions related to program correctness: (a) function contract, (b) precondition, (c) postcondition, (d) invariant.
Even if you are not familiar with these terms you are probably using them already, as they are key to writing correct programs.

In this talk we will see:
1. How thinking in these terms helps us write code more consciously and with fewer bugs.
2. How these terms are reflected today in code (spoiler: comments, assert() and "contract-encoding" types).
3. How different tools, like static analyzers or IDEs, can be improved if things like preconditions can be expressed directly in code.
4. What the difference is between a bug and a symptom of a bug, and how to fix bugs rather than conceal their symptoms.

No prior knowledge of the subject is assumed. By the end of the talk:
1. You will appreciate and be willing to apply the Design by Contract methodology, even if it means putting more asserts() and comments in your code.
2. You should be able to tell why a "contract" is not a sum of preconditions, postconditions and invariants.
3. You will understand how "contract-encoding" types and preconditions/invariants are complementary features.

avatar for Andrzej Krzemieński

Andrzej Krzemieński

Principal Software Engineering, Sabre Polska
Andrzej is a software developer since 2004. He works mostly with C++ in commercial software, which includes safety-related and high-performance systems. He is a member of the C++ Standards Committee and a Boost developer. He is also a co-organizer of C++ User Group Krakow. Known to... Read More →

Wednesday May 5, 2021 7:00am - 8:30am MDT