最近在整理过去的程序时发现,很多程序设计的看起来很合理,没有任何违反原则的问题出现。但实质确是没有能够做到、更清晰、更简洁、更易读。
      下面我们来看一个比较常见的问题。

      比较常见的问题多发生在“比较内置函数”的正确、合理的使用上。
Picture
      比较内置函数有一个共同的特点,就是比较的结果通常给出的是一个布尔量。对于这样的一位二进制输出,通常我们在它的后面会引入一个“case"结构,不同的处理程序代码分别放在case结构的真、假结构内。对于初学者(包括我)这是一个习惯性的选择。
      这样的选择是正确的、合理的,没有任何逻辑上和语法上的错误。
但是没有能够做到、更清晰、更简洁、更易读。

      下面我们来看一个实际的例子。


Picture
      在这个实际的例子中,我们是通过判断输入数据是否等于“零”来控制某个控件的显示颜色。
      显然当输入数据不为零时,控件的颜色为“绿色”,可是当输入数据为零时,控件应该是什么颜色呢?在另一个case框中,目前我们根本无法看到。

       这就是我们所遇到的问题,从程序设计的正确性和合理性来看,完美无缺、无可挑剔。但是在简洁性和易读性上出了问题。这对未来的程序维护和共享都是不利的。

      其实对于这样简单的处理程序代码,有更好的解决方法。

Picture
      我们可以利用“比较函数选板中的”选择(Select)“内置函数来处理类似这样的问题。具体设计方法见下图。


Picture
      它与采用case结构的方法,从功能上实现的都是一样的,所不同的就是程序代码更直观、更易读,也简洁了许多。

      要告诉大家的是:这种方法也存在着局限性,当处理环节所需的是多参数、相对比较复杂代码时,它就不太适用了。而在case结构中,则完全可以包含更多、更复杂的程序代码。


      最近看到“选择”内置函数的另一种应用就是用于“错误簇”的合并。

Picture
      利用“选择”内置函数也可以实现两组错误簇的合并,参见左图。

      并且它存在着优先级的关系,显然error in 比error in2 的优先级要高。

Picture



Leave a Reply.


Google Analytics