表驱动方法

本文介绍了如何使用表驱动方法重构复杂的代码逻辑,通过举例说明了表驱动方法的优势,以及在处理一年中每月天数问题上的应用。同时探讨了Java枚举的高级用法,不仅可以用作常量替代品,还能定义抽象方法和拥有类的属性,结合EnumMap实现高效的表驱动。这种重构方式显著提高了代码的可维护性。
摘要由CSDN通过智能技术生成

       上周接本上都浸泡在表驱动方法里,重构了一块多年的代码,说是多年,其实也就是一年半左右的样子:-)不过当我看到那些代码的时候,震惊到了。代码相当杂乱,整个功能模块就是一个大的hard code,解决问题的方式十分的hack,这里取hack的贬义~代码最初是很简单的,稍微hard一点的解决方案确实不是很刺眼,尤其对于应用来说,追求功能的发布速度几乎是第一要义,所以当初开发的时候也没有注意设计,怎么方便怎么来。可是后来pm各种加feature,尤其是换了好几个pm后,这块的逻辑就已经抗不住各种折腾了。我之前尝试过重构一次,不过当初才疏学浅(其实现在也没好到哪去==!)基本上只是整理了一下代码,没能完成真正意义上的重构。这次由于要加入新的功能,实在是加不进去了。所以只能硬着头皮重构。幸好,最近在开始阅读《代码大全》,按照导读,正好一开是就看了表驱动方法,如获至宝!又顺带阅读了下《java编程思想》关于枚举的一章。一时叹息,当初怎么没有好好读读书啊!表驱动方法基本上解决了我长久对于复杂逻辑处理的困惑。这里mark 一下。(例子均来源于《代码大全》代码可能有我自己修改在其中。)

       所谓的表驱动方法其实很简单,就是构造一张表,然后从中查找出需要的结果。这个道理我也早就懂,可是从来没有真正掌握真正奥义。比如说,我们想知道一年中的每个月的天数,不关心润年的情况。如果是我,可能会不假思索就写出下面的代码

public int getDayNumber(int month) {
   switch (month
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值