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

推荐订阅源

V
Visual Studio Blog
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
The Cloudflare Blog
D
DataBreaches.Net
J
Java Code Geeks
G
Google Developers Blog
L
LangChain Blog
N
Netflix TechBlog - Medium
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
小众软件
小众软件
量子位
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
博客园_首页
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
腾讯CDC

博客园 - 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);
}
在这个内存便宜、编译器自动优化代码的年代,这种优雅的写法,会节省很多无谓的劳动。