首先声明,不是要消除if

而是,减少一些不必要的if判断,使得代码更优雅,更重要的是提高可维护性

most easy

use Ternary:

var result = condiction? trueResult : falseResult;

缺点:case 超过2个就不容易了

use switch

in static type language

  • use heritance

usage (c++):

  SonClasss son = new FatherClass()
son.doSomething()

in Son class

  protected void doSomething(){
//here override the FatherClass implement
print("I did something different from my father");
}
  • use polypeptide

in dynamic type language

also: you can use heritance way in class:

  //es5
function Son(){};
util.inherits(Son, Father);
Son.prototype.doSomething(){
console.log("I did something different from my father");
}
//usage:
var son = new Son();
son.doSomething();
  //es6 use extends
//

in dynamic lange, your choice become something different and sometimes difficult

  • use array
  //usage:
//req.query = {"name":"Wade", "surname": "Deng"}
SonClass son = new ClassFactory(req.query.name);
son.doSomething(); //ClassFactory implement , if else hidden in ClassFactory
function ClassFactory(name){
this.name = name;
this.subClass = name == "Wade" ? new subClass(name) : new sub2Class(name);
}
  • use key-value json
SonClass.prototype.doSomething(actionName){
var do = {
'cry' :{ console.log('cry');}
'eat' :{ console.log('eat');}
}
return do(actionName);
}

However , sometime reading a few if else statements is easy.

ref

[anti-if-else-patterns](http://www.techug.com/anti-if-the-missing-patterns)

no more ifs alternatives

anti-anti-if

如何写更少的 if else的更多相关文章

  1. redux-amrc:用更少的代码发起异步 action

    很多人说 Redux 代码多,开发效率低.其实 Redux 是可以灵活使用以及拓展的,经过充分定制的 Redux 其实写不了几行代码.今天先介绍一个很好用的 Redux 拓展-- redux-amrc ...

  2. 编写更少bug的程序的六条准则

          如何编写更少bug的程序?  尽可能避免常见的程序错误.              沟通设计先行 + 编写可复用代码 + 做得更多 + 做的更少 + 创造“编程心流”+ 严格的程序测试   ...

  3. Powerful Sleep(神奇的睡眠-睡眠生物钟的秘密:如何睡得更少却睡得更好)阅读笔记

    睡眠机制 我们活着的时候,大脑会产生脑电波.脑电图仪器通过贴在人头上的一些电极读出脑电波的活动,然后把活动用图表显示出来. 睡眠过程可以分为5个过程,划分依据与大脑发出的脑电波类型. 当人清醒时,大脑 ...

  4. 引擎渲染速度测试--我js代码写得少你不要骗我

    上一张图,很多人都看过的 地址:http://aui.github.io/artTemplate/test/test-speed.html 这个地址是在看artTemplate的时候看到的,很早都看过 ...

  5. Quality Over Quantity: 更少一些,更好一些_第1页_福布斯中文网

    Quality Over Quantity: 更少一些,更好一些_第1页_福布斯中文网     Quality Over Quantity: 更少一些,更好一些    2013年04月09日     ...

  6. 如何让手游更省带宽,耗电量更少?TBR渲染架构解析!

    如何让手游更省带宽,耗电量更少?渲染或是其中一个可突破的点.本文中,腾讯游戏学院专家Hailong将从为大家解析TBR渲染架构的特点. 什么是TBR? 全称是Tile Based Rendering, ...

  7. .NET 事件总线,简化项目、类库、线程、服务等之间的通信,代码更少,质量更好。‎

    Jaina .NET 事件总线,简化项目.类库.线程.服务等之间的通信,代码更少,质量更好.‎ 安装 Package Manager Install-Package Jaina .NET CLI do ...

  8. Python代码这样写更优雅(转)

    1.变量交换 大部分编程语言中交换两个变量的值时,不得不引入一个临时变量: >>> a = 1>>> b = 2>>> tmp = a>&g ...

  9. 五年Java经验,面试还是说不出日志该怎么写更好?——日志规范与最佳实践篇

    本文是一个系列,欢迎关注 查看上一篇文章可以扫描文章下方的二维码,点击往期回顾-日志系列即可查看所有相关文章 概览 上一篇我们讨论了为什么要使用日志框架,这次我们深入问题的根源,为什么我们需要日志? ...

随机推荐

  1. MOS管应用概述(四):基本参数

    mos管的基本参数,大家熟悉的必然是Ids电流,Ron导通电阻,Vgs的阈值电压,Cgs.Cgd.Cds这几项,然而在高速应用中,开关速度这个指标比较重要.<ignore_js_op> 上 ...

  2. JDBC连接ORACLE的三种URL格式

    格式一: Oracle JDBC Thin using an SID jdbc:oracle:thin:@host:port:SID 例如: jdbc:oracle:thin:@localhost:1 ...

  3. js 发送http请求

    // 1.创建 XHR对象(IE6- 为ActiveX对象) // 2.连接及发送请求 // 3.回调处理 function createXMLHttpRequest() {     var xhr; ...

  4. MVP 实践

    今天有时间看了看google的官方文档,下载todo源码,仔细研读了一下,觉得其思想对开发还是有很大帮助的.个人认为,MVP通过Activity与业务逻辑的解耦,其作为Controller的职责更加单 ...

  5. seckill(1)秒杀系统主要步骤

  6. Linux 安装python3.4

    不要动现有的python2环境! 不要动现有的python2环境! 不要动现有的python2环境! 默认yum好用 默认环境不全 1. 安装环境 yum -y install zlib zlib-d ...

  7. 在IDEA中以TDD的方式对String类和Arrays类进行学习

    要求 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 sort binarySearch 提交运行结果截图和码云代码链接,截图没有水印的需要单独找老师验收 ...

  8. Linux中挂载详解以及mount命令用法

    转自:https://blog.csdn.net/daydayup654/article/details/78788310 挂载概念 Linux中的根目录以外的文件要想被访问,需要将其“关联”到根目录 ...

  9. python学习第五次笔记

    python学习第五次笔记 列表的缺点 1.列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢. 2.列表只能按照顺序存储,数据与数据之间关联性不强 数据类型划分 数据类型:可变数据 ...

  10. WEB学习笔记2-结构组织和文件命名

    常用的前端文件的组织结构: .js(放置javascript代码) .lib(放置框架javascript文件) .custom.js .css(放置CSS样式代码) .lib(放置框架CSS文件) ...