优化if-else的想法
Posted kafeibuhuizui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化if-else的想法相关的知识,希望对你有一定的参考价值。
在日常代码中,总是不能避开if-else,虽然它很好,可是需要至少三行代码,真的很丑,而且业务代码里,动辄十几个if-else,实在不方便代码阅读。所以我有一个不成熟的想法,在有限的业务范围内,用Dictionary<K,V> 代替。
首先写一个Dictionary<K,V>的扩展:
/// <summary> /// 如果V是值类型,要考虑默认值 /// </summary> /// <typeparam name="K"></typeparam> /// <typeparam name="V"></typeparam> /// <param name="keyValues"></param> /// <param name="k"></param> /// <returns></returns> public static V IsContains<K, V>(this Dictionary<K, V> keyValues, K k) { if (keyValues.ContainsKey(k)) return keyValues[k]; else return default(V); }
然后把if的条件作为Key,返回值或者方法作为Value 添加到静态Dictionary中,最后把Key写成枚举,减少硬编码。
调用时:
//Value是string/valuetype/自定义class return Dictionary.IsContains(Enum.K); //要求默认值与业务无关,作为不存在的判断依据 //Value是委托 return Dictionary.IsContains(Enum.K)?.invoke();
如果if-else 只写一次,肯定不需要这样写,但是相同的条件,在多个地方写,且返回值或者操作都是相同的,还是能起到优化空间的。目前在调用接口,根据返回值显示和记录日志(不同接口可以定义统一消息)。
以上是关于优化if-else的想法的主要内容,如果未能解决你的问题,请参考以下文章