Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

ifs-at-the-start-of-a-method

Even for a simple if: DRY! You should have put those in reusable functions with nice understandable names ages ago :]



do you know what contracts are?

Typical contracts are 'assert (arg != null)' or 'assert(arg1.length == arg2.length)' or 'assert (hour >= 0 and hour <= 23)'


yes I know what they are. Use them all the time. But since the post is about if I imagine it's about things like

  if( x < 0 || x > 5 )
    throw new ArgumentOutOfRange();
  if( y == nullptr )
    thwrow new NullRefException();
which should imo be something like

  Contract.AssertInRange( x, 0, 5 );
  Contract.AssertNotNull( y );


I imagine you could do even better with something like PostSharp or Fody.

    public void MyFunction([InRange(0, 5)] int x, [NotNull] object y)
    {
        // ...
    }
I just checked, and in fact Fody can do something just like this [1].

The only downside I see is contracts like this would be hard to write concisely:

    if (useFirstObject == true)
        Contract.AssertNotNull(firstObject);
    else
        Contract.AssertNotNull(secondObject);
[1] https://github.com/Fody/NullGuard


It is possible to write your own contract abbreviators with Code Contracts so I would hope such functionality gets added to the new language. The post does mention however that object invariants are not supported so I do wonder how much Code Contracts are actually influencing it.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: