表驱动的简单应用

来源:互联网 发布:张艺兴sheep知乎 编辑:程序博客网 时间:2024/06/05 02:54

上周顿哥给我们将了表驱动法的应用,刚好项目中也用上了,在这里对它的最简单的应用小结下。

记得当时顿哥给我们举了个最简单的实例,就是写一个方法,通过传入月份来获取传入月份的天数(二月算28天)。

当时我的想法是用一个Switch case语句来实现。脑袋里还没有表的概念。下面举出粗略的实现代码。

采用逻辑语句(switch 或 if else)实现如:

public int getDays(int month){int days = 0;switch (month){case 2:days = 28;break;case 4:case 6:case 9:case 11:days = 30;break;default:days = 31;break;}return days;}


若采用表来实现,具体如:

public final int[] Days ={ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };public int getDays(int month){return Days[month];}

这样实现的优缺点是什么,如何去评价一段代码的好坏,我现在的理解有三方面:

第一点:代码易读性,尽量让代码逻辑清晰明了。

第二点:代码可维护性和可拓展性。就像安哥所说,把可能需要修改的地方放在一起尽量放在一起,

便于后期修改和维护。

第三点:高内聚,低耦合,代码块功能尽量单一,可移植性要强。

按照如上三点来分析上面两种实现方式,

就易读性来说,由于这只是最简单的应用,代码没什么逻辑。反而感觉用Switch更加直观。

但就可维护性和可拓展性来说,显然用数组来实现更易拓展,和维护。

只需要控制好数组的下标对应的值,当然在使用数组时,一定要注意越界的问题。

就可移植性来说,这也没什么可比性,因为两种一般只用于特定环境,

不过这两种思路的移植性需要好好吸收下。

在我们项目中用表驱动法来取代Switch语句功能,大大简化代码,同时又便于后期维护,修改和拓展。


记录下刚接触表驱动法的一点收获和心得。










原创粉丝点击