优化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的想法的主要内容,如果未能解决你的问题,请参考以下文章

优化if-else代码的八种方案!

优化if-else代码的八种方案

if-else代码优化的八种方案

C# 之 if-else代码优化

可以一学的代码优化小技巧:减少if-else冗余

20个简洁的 JS 代码片段