CodeContract og linq - kan det betale sig at benytte CodeContracts?
På arb idag har jeg brugt en god sjat timer på at forsøge at implementere code contracts i et par mindre projekter.CodeContracts er hurtigt at komme ud over stepperne med, men det muligvis manglende sammenspil mellem code contracts og linq har gjort, at jeg tvivler på, om det er det hele værd:
Først har jeg en metode med denne syntaks, som forsikrer, at outputtet ikke er null:
ClassA Convert(ClassB b)
{
Contract.Ensures(Contracts.Result<ClassA>() != null);
...
}
Hernæst forsøger jeg at udføre følgende:
// otherElements er bevist != null.
IEnumerable<ClassA> elements = otherElement.Select(e => Convert(e));
// Det er på nuværende tidspunkt ikke bevist, at elements ikke er NULL.
Den øverste metoder er muligvis slet ikke interessant. Det jeg nu vil spørge om er, om det virkelig kan passe, at Linq-metoderne ikke benytter Contracts,, siden jeg manuelt skal bevise, at min IEnumerable<ClassA> ikke er null?
Og er der nogen, der har generelle erfaringer med brugen af Code contracts?
På forhånd tak.