手机版

PHP杂谈《重构-改善既有代码的设计》重组你的功能

时间:2021-10-10 来源:互联网 编辑:宝哥软件园 浏览:

思维导图点击下图查看更大的图片。

我会写下我喜欢和关心的地方,与大家分享。上次写了个《php 跟老大的对话》。还有很多问题。这本书对我帮助很大。如果你忙或者懒得看文字,建议直接看截图,也会带来很大的收获。对比截图中的代码可以知道哪个更好,哪个更差。为什么我在代码部分使用图片?因为经常用手机看代码,所以Blog Park的代码在手机里比较乱,看图片比较舒服。毕竟专业术语是用英文字母编码的,所以用一些英文单词可以更好的展现我们的专业素养。如果你掌握了下面的英语单词,你在与其他程序员交流时会更加直接和专业。3354又臭又显摆,呵呵。“*”表示内联:内联函数:函数*方法:细粒度:细粒度重命名:重命名查询:查询临时:临时)——一般指临时变量*。摘录:摘录——我个人比较喜欢翻译成“摘录”*重复:重复拆分:解剖变量:变量因子:因子,因子重构原理1。什么是重建?名词:对软件内部结构的调整,旨在提高软件的可理解性,降低其修改成本,而不改变其可观察的行为。动词形式:使用一系列重构标准来调整软件的结构,而不改变其可观察的行为。二、为什么要重建?1.频繁的重构可以保持代码的正确形式。2.让代码找到正确的位置。3.让软件更容易理解。4.可以找到bug。5.提高我们的编码速度。3.重构的困难1。修改接口命名如果你的类中的方法是公共的,那么你在重命名的时候就冒了很大的风险,你不知道哪些模块在调用你的方法(我们经常在整个项目下做grep操作,然后逐个看每个模块的调用和逻辑)。3354.所以在编写类的时候,在属性和方法上要尽量做到私有,避免开放接口。2.什么时候不应该重构?(1)重写所有代码,现有代码太混乱,重构不如重写。(2)在项目接近尾声时,应避免重构。我们可以把重建放在第二阶段来解决。代码味道不好:重复代码1,同一个类,两个方法包含同一个表达式。解决方案:您可以通过提取方法提取重复的代码,然后让两个方法都调用这个提取方法。2.两个类有相似的方法。解决方法:(1)提出两个类的方法,共同构造一个父类。(2)删除一个类的方法,调用另一个类的方法。2.长法1。短函数:读代码需要一点努力,因为我们必须总是改变上下文来看看子程序做了什么。但是让小方法容易理解的真正关键是一个好名字。读者可以通过名字知道函数,而不必看里面写了什么。在3354的早期编程语言中,调用方法需要额外的开销,这使得编码器不愿意使用小方法。然而,现代面向对象语言几乎完全消除了过程中的额外开销(函数调用)。2.注释局部细化信号:每当我们觉得需要用注释来解释某件事时,我们就把需要解释的内容写成一个独立的函数,并以它的用途来命名。您可以为一组甚至一小段代码这样做。只要函数名能解释它的用户,我们就应该毫不犹豫地这样做。“功能”被理解为“做什么”或“怎么做”。3.条件表达式和循环通常是精炼的信号。4.《代码整洁之道》的一个例子。我们可以考虑一下!

三.大类1和类中的几个属性变量具有相同的前缀或后缀,因此可以使用提取类。2.不是类中的大多数变量都使用属性变量,但是可以使用提取类。3.代码太多,可以提取类。第四,将长参数做成引入参数对象。3354这个我不太认同,因为我用别人的方法的时候,很少看代码实践,更不用说看对象的属性或者方法,得到我想要的数据。五、转换语句1。少用switch语句。3354的问题是重复。添加新案例时,必须找到所有案例并进行修改。2.用多态替换。做法:1。拔出开关;2.MoveMethod将实践代码放入多态类中。不及物动词注释尝试提取方法。如果不起作用,请尝试重命名方法。当你觉得需要写评论的时候,请先尝试重构,尽量让所有的评论都是多余的。笔记一般用于未来的计划,也可以用于你不确定的领域(为什么要做某事)。重组你的函数Long Method往往包含了太多的信息,被复杂的逻辑所掩盖,难以识别。一、Extract Method Status:我看到一个代码太长或者需要注释才能让人明白目的,所以把这个代码放入一个独立的函数中,让函数名解释函数的目的。

动机:是一个短小精悍的函数:——最终培育1,有很大的重用机会。2.这个函数读起来像一系列注释。3.函数覆盖很容易。重点:函数长度的关键在于函数名和函数本体之间的语义距离。如果提炼可以增强代码的清晰度,那就去做。做法:1。新建一个函数,根据函数的意图命名——,而不是“怎么做”。=“即使Extract Function很简单,比如只是一条消息或者一个函数调用,只要新Function能够更好的展现代码意图,就应该细化。但如果想不出更有意义的名字,那就别碰。2.将提取代码从源函数移动到新函数。第二,当Inline MethodMethod Body像方法名一样清晰易懂时,请选择Inline Method。

Iii .Inline Temp是一个临时变量,它只由简单表达式赋值一次,赋值后只使用一次。3354请内联temp

4.用查询替换临时变量如果是临时变量,保存表达式并提取表达式。3354这就是所谓的查询,查询

动机:1。局部变量会使代码难以细化。2.临时变量会驱使你写更长的代码。如果更改了查询方法,该类下的所有方法都可以获得此信息。3354会写出更清晰的代码。3.在使用提取方法之前,用查询替换临时通常是一个必不可少的步骤。做法:1。找出只分配一次的临时变量。=如果临时变量被分配了多次,考虑使用拆分临时变量将其分成多个变量。2.将临时变量赋值的右边部分提取到一个独立的函数中。=将方法声明为私有的,如果将来使用其他类,则释放它(公共的或受保护的)。如果代码组织良好,您通常可以找到更有效的优化方案。3354——如果表现真的不好,很容易放回去。5.引入解释变量将复杂表达式(或其一部分)的结果放入临时变量中,并使用变量的名称来解释表达式的用途。

动机:表达复杂难读。在这种情况下,临时变量可以帮助您将表达式分解成易于管理的形式。6.拆分临时变量一个临时变量被分配了多次,它既不是循环变量,也不是聚合变量。然后,为每个赋值创建一个独立的和相应的临时变量。

动机:1。如果一个临时变量承担多重责任,就应该用多个临时变量来代替。每个变量只承担一个责任。2.同一个临时变量承担了两件不同的事情,会让复习困惑。6.删除对参数的赋值如果代码为参数赋值,请用临时变量替换参数的位置。

七、用方法对象替换方法大型函数不能使用提取方法来使用局部变量。然后把这个Method放在一个单独的对象中,让局部变量成为对象的字段,然后把大函数分解成同一个对象中的几个小方法。

动机:1。从大型Method中提取相对独立的代码可以大大提高代码的可读性。2.在一个方法中,局部变量是超限的,所以很难分解这个函数。3.用方法对象替换方法会将所有局部变量更改为对象的值范围。然后,提取新对象。8.替换算法如果要用另一个更清晰的算法替换一个算法,请用另一个算法替换方法体。3354是直接修改原来的方法体。动机:对问题有了更好的理解,你发现一件事可以有更清晰的方式,所以你应该用更清晰的方式代替复杂的方式。这只是这本书内容的一部分。我知道会有很多程序员有不同的意见,我就是我自己。他们有些人非常同意我的观点,有些人我不太同意。所以要“顺其善,不善则改之”。欢迎大家发表意见。

版权声明:PHP杂谈《重构-改善既有代码的设计》重组你的功能是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。