Протокол парсера номеров

277
23 декабря 2016, 11:48

Задача такая: существуют определенные строковые представления спец. номеров. Нужно сделать класс с методами bool IsCorrect(string number) SomeObject Parse(string number) string Extract(string someString) bool Contains(string someString)

Класс является вспомогательным, и находится внутри сборки.

Вопрос в том что должны делать методы в случае некорректного аргумента ? Например если метод IsCorrect принимает null, должен ли он проверять входной параметр на null или подразумевается что пользователи класса должны сами позаботиться об этом т.к. класс внутренним ? Или еще такая ситуация, методы Parse/Extract приняли некорректный параметр (номер не соответствует формату) что должен тогда делать метод, проверять входной параметр на корректность и бросать спец. исключение в случае если номер некорректный или пользователь класса заранее должен проверить передаваемый номер на короектность ?

Answer 1

Вопросы, которые упоминаются в вопросе очень философские и все решают их по своему.

Есть такие способы.

  1. Не париться. Делать как получается/как проще. без коментариев.
  2. Делать как получается, но описывать поведение в документации. То есть написать явно - метод Parse должен получить не пустую строку и при этом валидную. Иначе поведение не определено.
  3. Стелить соломку. Мой любимый. Суть в том, что делаем много различных функций/методов, которые могут проверять входные параметры. Теперь, в дебаг режиме эти методы вызываются всегда для всех входных параметров каждого метод. В релизе это все отключается. Для этого даже есть чудесная штука - Assert. Но я часто делаю свой макрос для этого, который управляется с конфига/командной строки. В этом случае, если что то пошло не так, можно включить проверки и споймать нужное место у заказчика. Такие себе юнит тесты на живом заказчике. Конечно, эта функциональность активно пишет в лог все проверки (даже правильные. и все параметры записывает).
READ ALSO
Ошибка: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена."

Ошибка: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена."

Добрый день, подскажите пожалуйста, с чем может связана ошибка "Попытка чтения или записи в защищенную памятьЭто часто свидетельствует о том,...

1194
Запуск UWP приложения из другой программы

Запуск UWP приложения из другой программы

Есть UWP приложение, его нужно запустить из другой программы, запускexe не удаётся

525