重构-使代码更简短优美II:实际经历的说(项目分是怎么扯上代码节省的)

前言:

烹调是起细致活儿。它细于针对会的锱铢必较,与对食材的精挑细选。无论你是喜开大菜或好做中餐,无论你是厨房小白还是烹饪大师,精确把握烹饪时总是不错的。那么,今天引进的立几乎缓缓计时器一定能支援你一样臂的能力。

少数上没写文了,因为于磨传说着之8国语言博客,实际目前预定义了10国+1打定义语言,代码还以慢慢的状在写在~~~~

Thyme

及时款迷你的 app
不同为任何计时器的地方在于,它可而且设定五只计时器(包括四只炉灶,一个烤箱),并且为尽直观的图样形式反映给用户。

又为非用手忙脚乱了,你所欲做的只是是扰民,在 Thyme
上设定好时刻,然后等待你的美味出锅。

值得表彰的是, Thyme
能于你快地设定时间。简单滑动圆环就哼了,绝不多占而一样秒钟。

时间设置错了,想收回?晃晃手机就推行。时间及了,可肉还未曾烧好?随手一点就是可知重复长几分钟。

当下流行进展预览网址为:http://cyq.tupianshop.com/ ,其有力的处在与 CYQ.Data 框架
V3.N
系列  
后文再介绍了。

SteakMate

牛排控们,千万别擦了就款 app ! SteakMate
专为牛排烹饪而诞生,它能够叫你体会什么吃「专业」。

SteakMate
会受你选择要烹饪的牛排部位,烹饪方式,牛排的薄厚,以及希望的熟成度。你可以以加上多块牛排,并也它于名叫因显示区别(谁要于一样块牛排自名字啊!!)。

立马以后 app 就见面自动设定时间并起计时。 SteakMate
还会当半路提醒你让牛排们翻面,简直是每户必备神器。

写篇有时候是内需发灵感或一时底兴奋的~比如刚刚于改博客代码,经过同截思考,得到一些灵感,便产生矣此文。

Boiled Egg Timer

设若说SteakMate让您体会了呀让专业举行牛,那么 Boiled Egg Timer
一定能于您体会至啊为,「做鸡,我们最为当履!」

道煮蛋好吃呢,可是大事!一枚黄的水煮蛋,甚至能破坏掉一个健全的清晨。而今日,你要以
Boiled Egg Timer 中选择好鸡蛋大小,和怀念使的蛋黄熟度,再伺机时及。就可知
get 到均等枚到的水煮蛋了。

请求为自身用「中华小当家」体感叹一句,「这便是能够给人带能美满之万事底水煮蛋啊!」

美味,总是让丁温暖的有。今天推荐的就三只厨房计时器,希望能于心爱下厨的而带来帮助。祝大家还牙好胃口好,吃嘛嘛香啦。

恳请点击下方的「喜欢」,支持太得意以哈~


 

以老大老很老的 Long Long Ago
以前,写了同样篇稿子:重构-使代码更简明优美:实际经验的语(提供相同技能,让你看看掉N多代码)

尚未看了之得先夺看看,在篇章的末尾,我关系如此一点:

理所当然你吧足以掉装载,在LogicBase时之构造函数增加IHttpCustom传入。

最终实现页面如下调用:

图片 1

 

只是提到,但尚未干具体怎么落实,其实并无碍事,就是基类增加一构造函数,传入IHttpCustom接口即可。

实在,在自身多年来重构开发之博客中,也是使用这种方式,节省了大气之参数代码,看起相当的凝练~

但是,这个不是本节如说的重中之重,那本节要说之是呀?

 

一致:看看现实是啊,问题如何发

 

1:从图纸了解下看下项目分

图片 2

说明:

咱俩事先为了给逻辑项目Logic能节约大量参数代码,从HttpCustom页面基类中抽出了共接口:IHttpCustom

并且用抽象基类LogicBase实现接口,这样齐上节说的省略N多参数代码的措施。

 

2:现在情是什么吗

末尾给有只缓解方案:Web.Title。它是联合管理有页面标题的化解项目,看一下Action里之办法:

//作者:由秋天
博客:http://www.cnblogs.com/cyq1162/

public class Action
    {
        public static TitleInfo GetTile(string urlPara, string urlType, MDataRow domainUser, MutilLanguage language)
        {
            //…省略…
        }
    }

再拘留一下基类里面对之的调用:

            Web.Title.TitleInfo info = Web.Title.Action.GetTile(UrlPara, UrlType,DomainUser,Language);
            if (info != null)
            {
                //…修改时页面标题…
            }

粗略的游说不怕是在基类里设调用Web.Title的代码,一件非常平凡正常的事体。

这就是说是呀问题?问题就是是由于“项目之靠关系”,Web.Title无法实现像Logic一样的不二法门。

 

3:神马!项目依赖关系,啥?

简短说:A项目填补加了引用B项目之DLL,反过来B项目即未能够重引用A的DLL,一引用系统会唤起

 

图片 3

这就是说实在的图景是什么?

A:Web.Title如果要贯彻IHttpCustom,就一定要引用Module项目。
B:HttpCustom要调用Web.Title的,就得要引用Web.Title项目。
乃循环依赖就发生了,因此尽管无法兑现像Logic那样的不二法门来化解问题[Module不调用Logic的代码,所以不会见彼此引用]

 

二:将就点,就那样?

1:好吧,无法实现了咔嚓,传参吧,写N个方式吧,让它们一个一个底传进来,于是,一夜间回到解放前~

事实上解放前也没错,多几单参数,也并未什么,多招几只参数还能mock,管它谁来mock,反正是能mock,实现不了就这样自我安慰着先~~~

 

2:要追加博客访问统计和文章访问统计了,有接触打算将它们新开项目失去处理~~~

办法及Web.Title一个样,就受Web.Visit?好吧,这么被着!实现起来和Web.Title一个!也是于基类里写几执代码处理一下,分支具体交给Web.Visit处理。

Oh~继续呆在解放前?不怕不怕了,反正这样描绘会mock、能mock~

 

3:又要新添XXX功能了,有硌打算把她新开端种失去处理~~~处理方式和Web.Title又多!!

在押在平等积聚加相同积聚加相同积聚的参数~~脑迷糊了~心情毛造了~还要如此来几破呀呀呀呀呀!!!

ohfucX,解什么放什么mock什么~1潮2次尚能自我安慰,再自我安慰不是神经就是神禁~~~

 

除非当问题再次的产出的极累常常,我们才会错过思怎么重构怎么优化…

人数更加成长,对当下再度的次数值就要求的越小~~~

 

其三:分层巧一点,理清因,重新回到解放后

 

1:对于分段,有这样一栽情景

a:很多人口未明了层该怎么划分,于是动不动就是三重合
b:有一对丁觉着温馨辩护学术很多,于是硬写文章说了解讲明白:三重合是啦三重合,大伙怎么误解三交汇,该怎么分才是本着
c:有一些老鸟,看到三层就走去说,你们还给Petshop毒害了

 

2:分层就分,合理、理清因即可 [3只是是数字,不是真理]

A:理清因,抽离出层,IHttpCustom离家出走

对于基类HttpCustom来说,要调用别人的物顶多矣简而言之说就是是负他人太多好想如果被他人靠就非常为难矣,
于接口IHttpCustom来说,被指太多,经常让他人引用
滥在一个依别人太多之层里,就非适于了。
遂:IHttpCustom要跟HttpCustom说拜拜了,该运动的一直要活动~~

B:IHttpCustom来到了新的门类新的舍

初家起名,这是只很头疼的问题,我最后从了单Web.Core,因为后来会生诸多人口深受他人靠的强盗住入。

C:LogicBase也离家出走,来到了IHttpCustom的地址

图片 4

D:两总人口商讨大计,决定联合改名

图片 5

 

3:效果既出来了,循环依赖不见了

a:之前的Logic没什么变动,引用Module改成为改用Web.Core,基类只是变了个称呼
b:Web.Title终于可以与Logic一样了,引用Web.Core,同样继承CoreBase。
c:管她新来啊,一样引用Web.Core,同样连续CoreBase

 

俺们看一下结尾移后调用方式:

A:Title实现,省略了同堆参数

图片 6图片 7

    public class Action:CoreBase
    {
        public Action(ICore custom) : base(custom)  {  }
        public TitleInfo GetTitle()
        {
            TitleInfo info = new TitleInfo(“路了秋天”, “http://cyq1162.cnblogs.com”, “8国语言博客”);
            switch (UrlType)
            {
                case “error”:
                case “home”:
                case “sys”:
                    info = new HomeTitle(this).Get();
                    break;
                case “index”:
                case “article”:
                case “photo”:
                case “admin”:
                case “guestbook”:
                    info = new UserTitle(this).Get();
                    break;
            }
            info.Title += info.Split + Language.Get(IDLang.sitename);
            info.ClearHtml();
            return info;
        }
    }

 

B:HttpCustom调用

Web.Extend.TitleInfo info =new Web.Extend.Action(this).GetTitle();

 

 

结言:

花色之同一开头,总对友好代码很惬意,[需求来了,于是将就形容那么一点一点一点一点非绝好看的代码]←如此循环。

 

终于产生一样天,回头发现自己编写了相同积垃圾代码~~~于是辞职去,烂摊子留给他人了;

 

更受以就职了,接手别人的腐烂摊子,然后连底叫爹娘~~~~

 

简洁之代码,人人有责为代码来之再次精简易懂些~

 

~一切才想为代码更简洁,看起重新美,于是为之眷恋了累累多~~~

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图