码迷,mamicode.com
首页 > 其他好文 > 详细

优化if-else的想法

时间:2020-07-21 14:01:39      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:div   value   日常   def   else   ring   color   条件   阅读   

在日常代码中,总是不能避开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的想法

标签:div   value   日常   def   else   ring   color   条件   阅读   

原文地址:https://www.cnblogs.com/kafeibuhuizui/p/13354346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!