As a dedicated fan of Design by Contract, I search to maximize the value of what I see as its two major contributions, communication and verification. The problem is that i.e. C# does not support executable comments. Information to a client programmer may be specified in a summary comment (will appear in a tooltip) and verified by a Debug.Assert, like this:
/// Pre: booking != null
private void ConnectTo(Booking booking)
Debug.Assert(booking != null);
However, this introduces an undesired redundancy. So how to convey in particular method preconditions to a method caller without this reduncandy?
The technical precondition actualArgument != null is very common. Perhaps a naming pattern or naming convention might do, for instance anActualWhatever, the "actual" part stressing that the variable should actually refer to an object. I could get rid of the informatory comment, since the same information is conveyed through the name of the formal parameter:
private void ConnectTo(Booking anActualBooking)
Debug.Assert(anActualBooking != null);
I think I will test this idea for a while.