贪婪的条件,还是滥用的异常?

时间:2019-03-14 21:41:49

标签: exception coding-style

我有两个备用代码段,打算(大约)做同样的事情:

  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;}

第一种情况是严格的,仅允许程序员明确准备的两个结果选项:要么给出null(i),要么给出解析的值(ii),要么给出解析的结果(iii)回到null。

请参阅Closed/Open questions described on Wikipedia,以了解我的意思。

第二个代码片段不是很贪婪,不会吞下任何可能的异常,因此值是程序员期望的两个(三个):成功解析的值(a),或者仍然有允许的选项任何意外结果,作为显式捕获的Exception(还将空输入/输出情况(b)与解析错误异常(c)合并,将解析非空输入,但不可处理),但仍然允许第四个在编程(d)时完全无法想象的情况下,仍然让它冒出来是未捕获的异常。

  • 输入通常可以是两个,即null或对象。

  • 另一方面,输出可能会更复杂:

    • 在IF之后的硬编码null;
    • 成功解析的值;
    • 或例外:
      • 特定解析的对象类型完全错误。
      • 可解析的对象类型,但是其中的值有很多错误……

所以问题:

  • 第一个是太幼稚,太贪婪,吞咽太多,还是相反建议采用聚集/吞咽方式?

  • 第二个是滥用异常机制,还是只是标准的普通用法?

这些已知的特殊情况/选项是如何解决问题的?这些甚至可能太笼统了,以至于有一些规则,哲学方法或良好实践来判断/识别何时确切使用第一种或第二种?那么规则是什么,建议呢?谢谢。

0 个答案:

没有答案