惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
F
Fortinet All Blogs
J
Java Code Geeks
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
M
MIT News - Artificial intelligence
腾讯CDC
Last Week in AI
Last Week in AI
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
博客园 - 叶小钗
Recent Announcements
Recent Announcements
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
人人都是产品经理
人人都是产品经理
L
LangChain Blog
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - erik168

C#事件的定义与触发[查找] join语法 DataAdpater的Fill研究 关于event的浏览器兼容问题-from佛 - erik168 - 博客园 javascript实现xslt转换xml - erik168 - 博客园 幻方算法 2个JS细节 DOM模型设置属性细节 - erik168 - 博客园 js的Hashtable类(转) - erik168 - 博客园 几个关于javascript的细节 .net的同步 .net线程基础知识 C#开发ActiveX控件 从数据库中查询所有表及所有字段的SQL语句(转) 保存javascript运行状态 解决IE访问域外信息警告对话框弹出 创建XmlHttpRequest - erik168 - 博客园 vi概况 [资料查找结果]一些SHELL要知道的东西 - erik168 - 博客园
表驱动法
erik168 · 2006-12-03 · via 博客园 - erik168

《CodeComplete》中定义:从表里面查找信息而不使用if、else等逻辑语句的编程模式。
使用表驱动法,生成代码比复杂逻辑代码更简单更容易修改。
比如计算每个月中的天数的js(修改自《CodeComplete》中的VB代码):
switch(month){
case 1,3,5,7,8,10,12:
day=31;break;
case 4,6,9,11:
day=30;break;
case 2:
day=28;break;
}
使用表驱动法:
var days=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
day=days[month-1];

而在我看来,表驱动法不仅仅可以用在复杂逻辑的简化。比如一个表格要构建很多单元格,就要不断的copy&paste那些createElement和appendChild。而使用表驱动法,可以如下构建:
var TDs=new Array(......);
var trEle=document.createElement("tr");
var tdEle;
for(var i=0;i<TDs.length;i++){
tdEle=document.createElement("td");
tdEle.innerHTML=TDs[i];
trEle.appendChild(tdEle);
}
在这个内存便宜、编译器自动优化代码的年代,这种优雅的写法,会节省很多无谓的劳动。