I just released version 2.0 of Light.GuardClauses. This version brings new features and some breaking changes. Let’s check them out!
Everything on Category: Software Engineering
Last year in May, I published Light.GuardClauses, a .NET Portable Class Library that lets you perform easy precondition checks at the beginning of your methods. Last Wednesday, I released v1.3 which brings the following new features to you…
My .NET Threading in Detail talk that I gave at the .NET Developer Group Ulm last Wednesday is now online. If you happen to speak German, you can watch it on my YouTube Channel.
My new talk about .NET Threading that I held last Monday at the .NET User Group Regensburg is now online. In it, we’ll take a look behind the curtain of threads, the thread pool, tasks and async await as well as lock-free programming.
My previous two posts about Bertrand Meyer’s Design by Contract (DbC) were mainly introductions to pre- and post-conditions and class invariants and how they can be implemented in C# – in this one we’ll check out what implications DbC has if it is combined with the inheritance mechanism of object-oriented programming languages.
If you happen to speak German, you can watch the video of my latest talk at the .NET User Group Regensburg which I held on last Monday, the 25th. of January. In it, we discuss the basics of Design by Contract with its Pre- and Post-Condtions, Class Invariants, and Variants and Invariants for loops as well as a framework called Code Contracts that provides functionality to introduce DbC in .NET. Furthermore, we check out alternatives to Code Contracts and the importance of executable specifications.
In one of my last posts, I discussed the basics of Bertrand Meyer’s Design by Contract, namely pre- and post-conditions on methods. These Boolean assertions are used to check if the caller supplied valid arguments and performed the call while the target object was in a valid state, as well as to verify that the method produced the correct return value and/or side effects after it executed completely. This allows us to give semantical meaning to methods on our objects.
In one of his recent posts, Mark Seemann argued that you should not use the internal modifier for types and their members, because this decreases the testability of your code. While I totally agree with him on the subject, I want to highlight another reason for not using internal: the extensibility of your reusable code bases.
In my video series on the Dependency Inversion Principle that you can watch on YouTube now, I talk a lot about object-oriented abstractions and how we can use them to structure our code in a loosely coupled way. But I didn’t really specify what ‘Abstraction’ actually means in terms of Computer Science.
During the past weeks, I have been releasing videos on the Dependency Inversion Principle (DIP) which was originally published by Uncle Bob in 1996. I’m happy to announce that my video series is finished – you can watch it on YouTube now.