v2.0.0
Roman 2.0.0
Мажорный релиз с изменениями, ломающими обратную совместимость.
⚠️ Breaking changes
- Разбор строк теперь строгий по умолчанию. Конструктор
Roman(string),Parse(string)и
TryParse(string, out)используютRomanStyle.Strictи отвергают неканонические формы
(например,"IIII") сFormatException. Раньше поведение по умолчанию было лояльным.
RomanStyle.Strictстал значением по умолчанию перечисления (0). - Арифметика бросает
OverflowExceptionвместоArgumentOutOfRangeException. При выходе
результата+,-,*,/за диапазон 1–3999 операнды сами по себе валидны — из диапазона
выходит результат, поэтому семантически корректенOverflowException(без надуманного
paramName). Проверкиnullпо-прежнему бросаютArgumentNullException.
Migration
- Нужен прежний лояльный разбор — используйте перегрузки с
RomanStyle.Lenient:
Roman.Parse("IIII", RomanStyle.Lenient)/Roman.TryParse("IIII", RomanStyle.Lenient, out _). - Ловите
OverflowException(вместоArgumentOutOfRangeException) на переполнении арифметики.
Прочее
- Внутренний рефакторинг: единый метод нормализации строки перед разбором.
- Обновлены README (EN/RU) и тесты; чистка форматирования.