快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门24小时娱乐在线打造:PHP 杂谈《重构改善既有代码的设计》之一 重新组织你的函数



思维导图 点击下图,可以看大年夜图。

先容

我把我对照爱好的和对照关注的地方写下来和大年夜家分享。上次我写了篇《php 跟老大年夜的对澳门24小时娱乐在线打造话》。照样有很多疑问,这书帮了我不少的忙。

假如你对照忙碌,或者懒得看翰墨,建议你直接看截图,也会有很大年夜的劳绩的。你可以经由过程对照截图中的代码就能知道孰优孰劣了。

代码部分我为什么用图呢?由于我常常用手机看代码,博客园的代码在手机里紊乱无章的,照样看图对照惬意。

专业术语

我们终究是用英翰墨母编码,以是用一些英语单词,更能显示出澳门24小时娱乐在线打造我们的专业性。以下的英文单词,你假如掌握了,与其他coder交流的时刻会更直接,更专业。——臭显摆一下吧,呵呵。

“*”表示文中常常提到的

inline:内联

function:函数

*method:措施

finely grained:细粒度的

rename:重命名

query:查询

temp:临时(temporary)——一样平常指临时变量

*extract:提取——我小我更爱好翻译成“提炼”

*duplicate:复制

split:剖解

variable:变量

factor:身分,因子

重构原则

一、何谓重构?

名词形式:对软件内部布局的一种调剂,目的是在不改变软件之可察行径条件下,前进其可理解型性,低落其改动资源。

动词形式:应用一系列重构准则,在不改变软件之可察行径条件下,调剂其布局。

二、为何重构 ?

1、常常重构可以让代码保持该有的形态。

2、让代码找到相宜的位置。

3、让软件更易理解。

4、可以找到bug。

5、前进我们的编码速率。

三、重构的难题

1、改动接口命名

假如你的类中的措施是public,那么你在rename的时刻,冒着很大年夜的风险,你不知道到底有哪些模块在调用你的这个措施(我们常常的做法是在全部项眼前目今做grep操作,然后一一看各个模块的调用和逻辑)。——以是我们在编写类的时刻不管是属性照样措施只管即便做到private,避免接口开放。

2、何时不该重构

(1)重写所有代码,而且现有代码其实太纷乱,重构还不如重写。

(2)项目临近停止的时刻,应该避免重构。我们可以把重构放到二期去办理。

代码的坏味道

一、Duplicate Code

1、同一个类,两个措施含有相同表达式。

办理措施:你可以Extract Method提炼重复代码,然后让这两个措施都调用这个Extract Method。

2、两个类,澳门24小时娱乐在线打造有相似的措施。

办理措施:(1)把两个类的措施提出来,合营构造一个父类。

(2)把此中一个类的措施删除,调用另一个类的措施。

二、Long Method

1、短函数:代码涉猎费点力气,由于我们必须常常转换高低文去看看子法度榜样做了什么。然则让small method轻易理解的真正关键在于一个好的名字。读者可以经由过程名字懂得函数的感化,根本不必去看此中写了些什么。——早期的编程说话中,调用措施必要额外开销,这使得coder不乐意应用small method。然则今世的OO说话险些已经完全免除了process内的额外开销(函数调用)。

2、注释地方提炼旌旗灯号:每当感到必要以注释来阐明点什么的时刻,我们就把必要阐明的器械写进一个自力函数中,并以其用途命名。可以对一组或以致短短一行代码做这件事。——只要函数名称能够解释其用户,我们也该绝不踌躇地那么做。

"函数"理解为”做什么“或”若何做“

3、前提式和轮回经常也是提炼旌旗灯号。

4、《代码整齐之道》的一个例子。我们可以想想!

三、Large Class

1、Class内数个属性变量有相同前缀或者字尾,可应用Extract Class。

2、Class内并非大年夜多半变量应用属性变量,可应用Extract Class。

3、有太多代码,可Extract Class。

四、Long Parameter

做成Introduce Parameter Object。——这个我不太附和,由于我在应用别人措施的时刻,我很少去看代码实践,更不要说去看里面都用到了工具的那些属性或者措施,取我想要的数据了。

五、Switch Statements

1、少用switch语句。——问题在于duplication。添加新case的时刻,你必须找到所有case并改动它们。

2、用多态来调换它。做法:1.澳门24小时娱乐在线打造将switch进行Extract Method;2.MoveMethod把case里的实践代码放到多态性的class里。

六、 Comments

试试用Extract Method,假如还不可,那你试试Rename Method。

当你感到必要撰写注释,请先考试测验重构,试着让所有注释变得多余。

注释一样平常用于将来的盘算,还可以用于你并无实足把握的区域(为什么做某事)。

从新组织你的函数

L澳门24小时娱乐在线打造ong Method每每包孕太多信息,这些信息又被错综繁杂的逻辑掩饰笼罩,不易鉴别。

一、Extract Method

状况:我望见一个过长的函数或者必要一段注释才能让人理解用途的代码,那么将这段代码放进一个自力函数中,并让函数名称解释改函数的用途。

您可能还会对下面的文章感兴趣: