Пилю потихоньку библиотеку для работы с определённым форматом файла (если получится нормально сделать выложу на гитхаб под mit лицензией). Возник логичный вопрос про валидацию файлов.
С одной стороны есть стандарт который говорит как должно быть, с другой стороны есть несколько велосипедов на дельфях которые уже используются (некоторые аж 15 годиков) и кое-что грубо нарушают. Юзеры страдать от этого не должны, но и поощрять нарушение стандарта не хочется.
Таким образом, проводить валидацию при чтении файла полностью согласно стандарту я не могу иначе я не буду читать файлы в которых нарушения незначительные. Но я должен поощрить тех разработчиков которые разрабатывают продукт для конечного юзера, добавив им валидацию ввода. А как собственно по-феншую это делать?
Лепить проверки к многим функциям и полям? Скажем пусть у нас будет поле Email тогда делать функцию CheckEmail которая будет проверять email и возвращать true или false или делать email не полем а функцией SetEmail типа bool и возвращать false если вместо email-а написали «абырвалг» но в любом случае загружать этот «абырвалг» по крайней мере до тех пор пока не потребуется сохранять файл? Или вообще проводить только конечную проверку всего файла?
Понятно что с одним email-ом и разработчик клиентского приложения справился бы легко, но там таких полей штук 100 и далеко не каждый разраб готов всё это проверять со стороны готового приложения.
Да чтобы иметь представление, всё дело происходит на языке программирования C#, но писать проверки в сеттерах (что может придти в голову если читать по диагонали) я не должен, т.к. даже кривой файл надо бы уметь читать, так что сыпать эксепшенами при присвоении переменным значений не вариант.