слишком жадное состояние или неправильно используемое исключение? - PullRequest
1 голос
/ 15 марта 2019

У меня есть два альтернативных фрагмента кода с намерением сделать (приблизительно) одно и то же:

  1. Закрытое условие, с 3 случаями входных данных, в результате которых получаются только 2 случая выходных данных.:

    this.showDropdowns ? parseInt(this.uploadForm.get('location').value, 10) : null;

  2. Кондиционирование с открытым концом, с 3 возможными случаями входных данных, в результате которых получаются 3 рекомбинированных (таблицы не совпадающих) случая выходов:

    try {parseInt(this.uploadForm.get('location').value, 10)} catch (ParseIntError e) {return null;}

Первый случай является строгим, он допускает только две результирующие опции, явно подготовленные программистом: либо дает ноль (i), либо анализируемое значение (ii)), или разбор падает (iii) обратно на ноль.

См. Закрытые / Открытые вопросы, описанные в Википедии , чтобы понять, что я имею в виду.

второй фрагмент кода не такой уж жадный, не проглатывает ни одного возможного исключения, поэтому программистом ожидаются два (три) значения: успешно проанализированное значение (a), или все еще есть разрешенная опция для любого неожиданного результата,в явном видеy поймал Exception (также объединяет нулевой регистр ввода / вывода (b) с исключением ошибки синтаксического анализа (c), ненулевой ввод, который должен быть проанализирован, но не обработан), но все еще допускает четвертый случай того, что совершенно невообразимо вмомент программирования (d), все еще позволяющий ему всплыть как необработанное исключение.

  • Входных данных может быть всего два, в общем случае: ноль или объект.

  • Выводы, с другой стороны, могут быть более сложными:

    • с жестко заданным нулем после IF;
    • успешно проанализированное значение;
    • или Исключения:
      • Абсолютно неправильный тип объекта для конкретного анализа.
      • Синтаксический тип объекта, но неверные значения в нем, во многих отношениях ...

Итак, вопросы:

  • Первый слишком наивен и слишком жаден, слишком много глотает или наоборотРекомендуется агрегация / глотание?

  • WМожет ли второе неправильно использовать механизм исключений или просто стандартное простое использование?

Являются ли эти известные отличительные случаи / варианты, как решить проблемы?Они могут быть даже настолько общими, что существуют некоторые правила, философские инструкции или хорошие практики, чтобы судить / распознавать, когда именно использовать 1-й или 2-й?Так каковы правила, рекомендации?Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...