.NET で Code Contracts を使い始めたばかりで、このようなガード句がありました
if (!file.Exists(path)) throw FileNotFoundException();
そしてそれを
Contract.Requires(File.Exists(path));
コントラクトは I/O の問題に対処するため、これが正しいかどうかはわかりませんが、これが問題かどうかはわかりません。
基本的な質問は次のとおりです。コントラクトを使用して I/O の懸念 (または外部/非ユニットの懸念) を確実にすることに問題はありますか?