查看: 1216|回复: 0
打印 上一主题 下一主题

[其他] 重构我们所不能缺少的编程思想(转载)

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53488
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2016-5-29 00:40:21 |只看该作者 |倒序浏览

重构:提高代码的理解性、可观性和复用性,减少代码的重复性。(个人理解)
重构是一个连续性的过程,它发生在项目开发的各个阶段,但不要为了重构而重构(过度重构)。
大家可能觉得我写的这些都没什么技术含量,但我个人喜欢用最简单的方式说明一个[color=rgb(85, 85, 85) !important]问题,如果你已经知道这些方法,可以跳过,如果你还不知道,刚好可以普及一下留个印象。
下面给大家例举一些关于重构的方法,以下代码案例中我们的demo是不具有实际意义的,重在理解就行。

    #region Demo 提升方法  ,提升字段
    public class Person
    {
    }
    public class P1 : Person
    {
        private string name;
        public void Say(string msg)
        {
            Console.WriteLine("说话的内容:" + msg);
        }
    }
    public class P2 : Person
    {
        private string name;
        public void Say(string msg)
        {
            Console.WriteLine("说话的内容:" + msg);
        }
    }
   //重构
    public class Person
    {
        protected string name;
        public void Say(string msg)
        {
            Console.WriteLine("说话的内容:" + msg);
        }
    }
    public class P1 : Person
    {
    }
    public class P2 : Person
    {
    }
    #endregion
    #region Demo 降低方法,降低字段
    public class Animal
    {
        //是否在飞
        protected bool isFlaying = false;
        public void Flay()
        { }
    }
    public class Brid : Animal
    {
    }
    public class Dog : Animal
    {
}
   //重构
    public class Animal
    {
    }
    public class Brid : Animal
    {
        protected bool isFlaying = false;
        public void Flay()
        { }
    }
    public class Dog : Animal
    {
    }
    #endregion
    #region 重命名方法,参数,字段等
    public class Player
    {
        // private  string nm;
        //改为
        private string name;
        #region 当方法参数过多时:引入参数对象
        public void SetPlayInfo(float _hp, float _attack, string _weaponName, string _animName, string _iconName)
        { }
        //改为
        public void SetPlayInfo(PlayInfo _playInfo)
        { }
        #endregion
    }
    public class PlayInfo
    {
        public float HP { get; set; }
        public float Attack { get; set; }
        public string WeaponName { get; set; }
        public string AnimName { get; set; }
        public string IconName { get; set; }
    }
    #endregion
    #region 简单列举其他的重构方法
    //1,判断分解:将复杂的条件判断进行分解。
    //2,避免双重否定,提取方法,提取接口。
    //3,提取父类,提取子类,移除重复,分离职责。
    #endregion

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-14 20:49 , Processed in 0.246865 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部