《重构2》第八章-搬移

简介: 《重构2》第八章-搬移

1.搬移函数/搬移字段

搬移函数:在代码执行中,已封装的函数,频繁调用上下文的元素,而对自身的类的函数很少关联,可以考虑搬移函数到相关的类中,减少模块依赖;
当然一个函数变得越加通用及频繁使用的时候,就可以将其搬移至更合适的类中.

搬移字段:将字段搬移至其它地方,便于代码理解和数据结构纯净.

2.搬移语句到函数/搬移语句到调用者

搬移语句到函数:其实是代码的黄金守则之一,"消除重复".
当有相同带代码逻辑是在韩式调用前后总要知执行的,就可以搬移相关语句到函数中.

搬移语句到调用者,当我们发现一个函数使用时,有了使条件的差异性,我们有两个选择
1.搬移有差异的语句到调用者位置
2.创建一个新的函数,将其中有差异性语句拆除即可(这会造成相关函数的重复常见,命名不规范时,会让后续的协作者很头疼)

3.以函数调用取代内联代码

与用函数调用代替扁平化逻辑,理解一致

4.移动语句

将相关的逻辑的代码移动到相同的位置,便于代码理解!
但是,切记,移动语句钱,确认上下逻辑关系,移动语句使用有造成副作用,避免代码错误
同时移动语句之后,可以使用提炼函数,简化代码

5.拆分循环

很简单的理解,尽量拆分循环中的操作,让一个循环只做一件事(数据计算),或者少数的事情,这样会便于后期修改和理解,因为,你知道每一个循环是为了做什么,而不是一大堆计算换入同一个循环中,你该懂的知识其中一个计算,却要理解所有计算,你的操作会不会影响到其他操作!
重构提醒:不要担心拆分循环会造成效率低下,我们有更多的方法可以提升效率

6.以管道代替循环

在操作系统和代码进步的时代,各种管道符可以让代码的可读性更强.
示例:
在函数中筛选出所有的印度的办公室,并返回办公室所在城市信息和联系电话
原代码

function acquireData(input) {
    const lines = input.splice("\n");
    let firstLine = true;
    const result = [];
    for (const line of lines) {
        if (firstLine) {
            firstLine = false;
            continue;
        }
        if (line.trim() === "") continue;
        const record = line.splice(",");
        if (record[1].trim() === "India") {
            result.push({city: record[0].trim(), phone: record[2].trim()})
        }
    }
    return result;
}

管道符优化后

function acquireData(input) {
  const lines = input.splice("\n");
  return lines.slice(1)
    .filter(line => line.trim() !== "")
    .map(line => line.splice(","))
    .filter(fields => fields[1].trim() === "India")
    .map(fields => ({city: fields[0].trim(), phone: fields[2].trim()}));
}

7.移出死代码

死代码从运行上来讲,不会影响代码运行速率,但是在代码理解中,就会产生很多不必要的工作量!之前没有版本管理,大家可能觉得,某一段代码以后可能还会用到,所以不能删除,只是将其注释,但是,现在的版本管理代码工具,几乎都拥有版本溯源功能.
在此基础上,我们可以将死代码专门拉一个分支做一个版本,进行分操作记录.以后需要找回这份代码,拉出版本重新拷贝即可.

目录
相关文章
|
2天前
|
存储 安全 Java
12条通用编程原则✨全面提升Java编码规范性、可读性及性能表现
12条通用编程原则✨全面提升Java编码规范性、可读性及性能表现
|
2天前
|
存储 人工智能 编译器
【重学C++】【指针】一文看透:指针中容易混淆的四个概念、算数运算以及使用场景中容易忽视的细节
【重学C++】【指针】一文看透:指针中容易混淆的四个概念、算数运算以及使用场景中容易忽视的细节
31 1
|
9月前
|
C语言
C数组超细节精髓
C数组超细节精髓
52 0
|
10月前
|
程序员
相见恨晚的Matlab编程小技巧(2)-代码怎么做到逻辑清晰?——巧用注释符“%“
        本文将以教程的形式详细介绍Matlab中两个常用符号“%”和“%%”的作用。初学者可以通过此文掌握这两个符号的用法,为Matlab编程打下坚实的基础。
|
11月前
《重构2》第九章-重组数据
《重构2》第九章-重组数据
66 0
|
11月前
|
程序员 测试技术
《重构2》第十章-简化条件逻辑
《重构2》第十章-简化条件逻辑
306 0
数据结构上机实践第二周项目2- 程序的多文件组织
数据结构上机实践第二周项目2- 程序的多文件组织
数据结构上机实践第二周项目2- 程序的多文件组织
|
SQL 缓存 安全
如何避免写重复代码:善用抽象和组合
通过抽象和组合,我们可以编写出更加简洁、易于理解和稳定的代码;类似于金字塔的建筑过程,我们总是可以在一层抽象之上再叠加一层,从而达到自己的目标。但是在日常的开发工作中,我们如何进行实践呢?本文将以笔者在Akka项目中的一段社区贡献作为引子分享笔者的一点心得。
142 0
如何避免写重复代码:善用抽象和组合
|
机器学习/深度学习 存储
重学数据结构一:代码效率优化方法论
重学数据结构一:代码效率优化方法论
75 0
|
存储 算法 JavaScript
我明白了,浅聊数据结构(和算法)
数据结构是计算机领域专业必学的知识点,因为数据结构研究的就是数据如何在计算机中进行组织和存储,从而高效的获取数据或者修改数据。 有时可以让我们根据不同的应用,灵活选择最合适的数据结构继而解决相应的问题。
393 1