当前位置: 首页 > news >正文

重构心法——分解大函数

不论什么系统,采用什么架构,都应该从“分解大函数”开始,这样做准没错!

分解大函数前的准备

梳理大函数逻辑:认真阅读大函数的源码,添加必要的注释,调整不合理的代码顺序,将代码分段,将前后有明显关系的代码放在一起。

分解大函数实质

其实就是“抽取方法”,将被我们分段、加注释的代码从原函数里边抽取出来,放在一个新的独立的函数中。抽取方法就像“核裂变”,开始由一个大函数裂变为几个函数,这些函数又分别裂变为新的函数,当这些裂变出来的方法越来越多时,后期可以考虑是否要抽取新的功能类。

抽取方法尺度

在抽取方法时,不论你是抽了几行还是上百行,这些代码一定是功能内聚的,说白了就是要执行一个清晰的功能。

抽取秘诀

1.为新方法起一个易懂的名字

2.参数和返回值如有必要最好封装为对象

3.代码重复的地方是抽取函数的重要标志

4.if、for、try等语句块均要留意方法的抽取

备注

          别忘了单元测试!!!

转载于:https://www.cnblogs.com/WeiGe/p/5617179.html

相关文章:

  • 你知道hover、active这四个伪类为什么要按顺序写吗
  • 用CHttpFile实现简单的GET/POST数据【转】
  • 《入门经典》——6.27
  • Distributed systems theory for the distributed systems engineer
  • python 学习 异常处理
  • c# 定时器
  • 图论(二分图最大权独立点集):COGS 2051. 王者之剑
  • flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成
  • pct xcode7
  • 高并发性能调试经验分享
  • java中String类、StringBuilder类和StringBuffer类详解
  • 如何确认软件测试结束的呢?
  • SpringMVC(一)
  • 【转】web移动端一些常用知识
  • CSS Hack是什么意思
  • 《剑指offer》分解让复杂问题更简单
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 2017 年终总结 —— 在路上
  • C++类中的特殊成员函数
  • CODING 缺陷管理功能正式开始公测
  • js递归,无限分级树形折叠菜单
  • JS基础之数据类型、对象、原型、原型链、继承
  • leetcode46 Permutation 排列组合
  • Mybatis初体验
  • PAT A1120
  • Spring Boot快速入门(一):Hello Spring Boot
  • unity如何实现一个固定宽度的orthagraphic相机
  • 记一次和乔布斯合作最难忘的经历
  • 将回调地狱按在地上摩擦的Promise
  • 延迟脚本的方式
  • 再谈express与koa的对比
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • (done) 两个矩阵 “相似” 是什么意思?
  • (rabbitmq的高级特性)消息可靠性
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (南京观海微电子)——I3C协议介绍
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • *** 2003
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net 流——流的类型体系简单介绍
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NetCore部署微服务(二)
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • []C/C++读取串口接收到的数据程序
  • [AIGC codze] Kafka 的 rebalance 机制
  • [Android] 修改设备访问权限
  • [BJDCTF 2020]easy_md5
  • [C++]C++基础知识概述
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具
  • [HDU5685]Problem A