前言:

if,相信是童鞋们使用的最频繁的关键字了,而且很多时候,我们使用的if都是在无意识的状态下随手而为。键入if,两下回车(我使用了resharper,可以自动编排if的格式),再信手写下我们需要的逻辑,一段可以“正常运行”的代码就被我们实现了。尽管这段逻辑比较复杂,但在那个时间段,我们对这段业务的前后流程已经有了很长时间的思考,所以可以比较轻松的写出来。但问题来了,一段时间之后,我们发现这里需要修正下,更或者是为了提高鲁棒性,需要为某个变量考虑更多的情况——即进一步添加更多的if。然后,看着那大段大段的if else,我们蛋疼之余,也会小小的钦佩,当时我是怎么写出这么牛逼的代码的?

  • dictionary代替选择类if语句

if本身没有选择的功能,为了实现这点,有的人是这样写的:

 if (orderinfo.State == 1)
{
result = "已预定";
}
else if (orderinfo.State == 2)
{
result = "已售出";
}
else if 。。。

或者

result = orderInfo.State ==  ? "待确认" : orderInfo.State ==  ? "执行中" : orderInfo.State ==  ? "已完成" : orderInfo.State ==  ? "已解除" : "";

既琐碎,可读性也不高,而且效率还低(当然,这种情况数据量一般不大)

如果用dictionary,

      public Dictionary<int, string> OrderStatedDictionary = new Dictionary<int, string>()
{
{, ""},
{, "已预订"},
{, "已售出"},
{, "待确认"},
};

调用的时候,用OrderStatedDictionary[]的方式,这样无疑代码会美观很多。

  • 避免if的多层嵌套

两段代码比较

 public string GetNowState(int p1, int p2 , int p3)
{
if (CheckMethod1(p1))
{
if (CheckMethod2(p2))
{
if (CheckMethod3(p3)))
{
return GetResult1();
}
}
}
return "";
}
        public string GetNowState(int p1, int p2, int p3)
{
if (!CheckMethod1(p1))
{
return "";
}
if (!CheckMethod2(p2))
{
return "";
}
if (CheckMethod3(p3)) )
{
return GetResult1();
}
return "";
}
}

前者有三层的if嵌套,而后者的逻辑着完全是一条线串下来,代码量少无所谓,但一旦行数超过50行了,哪种代码更容易看不用多说。

  • 待续。。。。

哎~! 本来我总结了很多的,只是前段时间太忙,一直没时间写, 现在刚从上家公司辞职,还要过几天才去新公司报道,才有时间写点东西,结果居然一时想不起来了,只记得这两点了,以后再补充。

也欢迎大家把自己的总结贴一下。

最新文章

  1. Color Transfer between Images code实现
  2. Javascript获取URL参数值
  3. [CF676C]Vasya and String(尺取法,原题)
  4. MyBatis(3.2.3) - Multiple results as a map
  5. 常用SQL Server分页方式
  6. OpenSSL命令---req
  7. [置顶] java Gui 键盘监听事件
  8. JSON.stringify 语法解释
  9. 【Java基础】 Java动态代理机制
  10. 浅谈layer.open的弹出层中的富文本编辑器为何不起作用!
  11. RabbitMQ学习笔记(五) Topic
  12. LeetCode 7最长公共前缀
  13. vuex2.0+两个小例子
  14. C#实体对象序列化成Json,并让字段的首字母小写
  15. Python min() 函数
  16. HyperLogLog in Practice: Algorithmic Engineering of a State of The Art Cardinality Estimation Algorithm
  17. 11.Git分支管理
  18. 【BZOJ4200】【NOI2015】小园丁与老司机(动态规划,网络流)
  19. webpack.dev.conf.js详解
  20. Django创建一个简单的blog

热门文章

  1. 学习ASP.NET Core, 怎能不了解请求处理管道[6]: 管道是如何随着WebHost的开启被构建出来的?
  2. TortoiseGit 文件比对工具使用 Beyond Compare 和 DiffMerge
  3. $ORACLE_HOME变量值末尾多“/”惹的祸
  4. Spring之初体验
  5. 在vim中使用查找命令查找指定字符串
  6. java使用websocket,并且获取HttpSession,源码分析
  7. [原] KVM虚拟机网络闪断分析
  8. RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密
  9. 代码的坏味道(16)——纯稚的数据类(Data Class)
  10. SSIS 包部署 Package Store 后,在 IS 中可以执行,AGENT 执行却报错