Zoran is Principal consultant at Coding Helmet Consultancy, speaker and author of 100+ articles, and independent trainer on .NET technology stack. He can often be found speaking at conferences and user groups, promoting object-oriented development style and clean coding practices and techniques that improve longevity of complex business applications.
Statelessness of functions and statefulness of objects is an old mantra which is still robbing many programmers of an opportunity to see some higher truths. Through a series of code puzzles, you will learn that state is everywhere, and yet, useful the most when we are not aware of its presence. Strange as it may sound, we will discover stateful functions and stateless objects, and both will prove immensely useful.
C# 8 is bringing the long-awaited feature - nullable (and non-nullable) reference types - which we can leverage to ensure that unattended null references cannot sneak into our functions and objects. Yet, closing the door for nulls is only the first step. We will revisit often overlooked patterns, polymorphic models and optional objects. With these tools enforced by latest language features, you will never want to return to using null references.
Mixing functional programming and metaprogramming into good-old object-oriented C# is not new. Still, so many programmers don't see it clearly yet. In this session, we will walk through fundamental elements of programming, from plain functions and ending in function and object composition. You will be amused to learn how modern the latest C# language has become, and how it can be applied to design rock-solid object and functional models.
C# 8 is with us, and it brings long awaited non-nullable reference types syntax. We are about to part ways with earlier programming habits based on unrestricted use of null references. How shall we adapt? Will it feel like standing naked in the rain? Not necessarily; there are several techniques, which we will outline in this talk, that we can apply to strengthen our object-oriented programming skills and to replace all nulls with proper objects.