回顾与反思

2022年~至今(2023年2月),一共重构了2个项目。

第1个项目在重构的时候,总是想着把别人的代码copy过来,改一改,这就算重构好了。这样做效率太低,原因是前人写的代码不一定有很多注释,有注释有可能写的也不清楚。还有一点比较重要的是,自己写的思路可能和前人不太一样,那么直接改他的代码就需要先看懂他的代码思路,这个过程是很花时间的。

第2个项目在重构的时候,还没有完全摸清楚项目整体架构,就直接动手开始写了。这样做也存在很多问题,比如写的过程中由于有的细节没有搞清楚,会出现写到这里的时候发现和前面的结构、逻辑不太一样,又重新改动,又或者是输入、输出、数据结构不统一等问题。

总结下来,自己的问题包括:

  1. 先从别人的代码入手,改别人的代码进行重构
  2. 没有完全弄清楚项目架构就开始重构

这些也是今后需要改进的地方。

改进方向

  1. 项目对接:首先最好要和项目前一个负责人对接好,搞清楚项目整体的框架。记住是只抓架构,切忌抠细节。这一部分要花大量时间,一定要耐住性子,搞清楚项目架构的每一步的作用,输入输出是什么。
  2. 开始重构:弄清架构后,就可以开始重构了。重构可以按如下步骤进行:
    (1)先按架构搭建好整体流程,每一步用函数代替,函数体暂时空缺出来。在这个过程中,可能会有发现自己对项目的理解和原项目有一定的出入,比如每一步的作用、每一步的输入输出、每一步的输入输出的顺序等。这个时候要及时和前负责人讨论,证明自己的理解或者证伪自己的理解,然后完善理解,对流程反复做出调整,最后形成一个正确的框架。
    (2)搭建好框架之后,再针对每个函数逐步实现细节。这个时候就可以参考,甚至是直接copy前负责人写的代码。
  3. 常量提取:在整体实现基本完成时,可以开始考虑进行公共常量的抽取,并存储到单独的一个配置文件中(2023年3月1日更新)

重构给我带来的思考

根据我个人的习惯,我觉得在写代码的时候可以从以下几点去注意:

  • 函数参数不能太多,最多只能有3、4个
  • 一行代码最好就是一个功能,多利用函数式编程,这样在调试的时候只需要注释一行,很方便
  • 避免过多的嵌套,嵌套层数不要超过3层,可以利用抽离函数、return等方式减少嵌套次数
  • 写的时候一定要边写边测试,测试的部分最好是一个最小单元
  • 一个函数尽可能的只包含一个功能,尤其是工具函数。从输入输出上来说,最好只有一组输入输出;从函数体实现来说,最好不要循环调用逻辑相同、参数不同的代码,正确的做法应该是在函数外面循环调用函数(2023年2月20日更新)
  • 写好的代码就不要动了,要进行扩展的时候要么是加参数、要么是再套一层函数,想好再操作(2023年4月7日更新)
  • 别人的代码拿过来最好不要动,要加功能就再套一层函数(2023年4月7日更新)
  • 项目中,数据、源码、文档要隔离开,放在不同目录下
  • 模型源码中,只写模型的框架,对于如何构建特征、如何计算根据数据生成标签、如何计算指标等代码,与模型代码隔离开

【项目重构】总结与反思相关推荐

  1. [转]记一次构建SaaS平台项目失败后的反思

    记一次构建SaaS平台项目失败后的反思 前言: 笔者从2017年起开始着手将公司现有的软件系统改造成多租户模式,以降低整个系统的运营成本.但最后这个项目以失败告终.今天,我将对这个SaaS项目是如何走 ...

  2. 最近项目重构的一些感想

    作者:浮生若梦的编程 来源:https://juejin.im/post/5b46121f5188251ac446d0b4 缘起 最近,因为多个因素综合作用的情况下,我有幸得以负责一个项目的重构事项, ...

  3. 关于项目重构,知道真相的程序员眼泪笑了出来

    本文授权转载,作者:非著名程序员(公众号:smart_android) 其实过完年回来,我们的项目也一直在强调重构,在实践重构中,但是到目前为止,基本没啥进度.关于项目的重构,我说:基本上大部分都是骗 ...

  4. android底层重构,【理论】【转】Android项目重构之路:实现篇

    前两篇文章Android项目重构之路:架构篇和Android项目重构之路:界面篇已经讲了我的项目开始搭建时的架构设计和界面设计,这篇就讲讲具体怎么实现的,以实现最小化可用产品(MVP)的目标,用最简单 ...

  5. Golang实现简单爬虫框架(5)——项目重构与数据存储

    前言 在上一篇文章<Golang实现简单爬虫框架(4)--队列实现并发任务调度>中,我们使用用队列实现了任务调度,接下来首先对两种并发方式做一个同构,使代码统一.然后添加数据存储模块. 注 ...

  6. 【转】vue项目重构技术要点和总结

    vue数据更新, 视图未更新 这个问题我们经常会遇到,一般是vue数据赋值的时候,vue数据变化了,但是视图没有更新.这个不算是项目重构的技术要点,也和大家分享一下vue2.0通常的解决方案吧! 解决 ...

  7. iOS基于MVC的项目重构总结

    这是一篇关于MVC的介绍的文章,对于这个问题,我曾经感觉自己非常清晰的了解MVC的结构,后来在工作中接触到其他同事,也了解了一些其他语言的MVC,才发现,自己对MVC的理解还是非常的浅显,希望本文能对 ...

  8. EasyMall项目重构之经典MVC

    EasyMall项目重构之经典MVC EasyMall项目重构之经典MVC 技术需求 平台 前台技术 后台技术 环境搭建 项目创建 导入页面 修改jsp中的图片路径 注册功能实现 项目流程 通过浏览器 ...

  9. 2010-07-18 项目重构计划

    现在部署的项目包括: www.citi-box.com 大城小格网站和对应的框架应用 www.pixysoft.net 个人的网站和框架 citibox.pos 门店销售系统,一共三台. applic ...

最新文章

  1. JdbcPagingItemReader多线程的Step
  2. 限时团购,6.5折:《C# 7.0 核心技术指南》
  3. 30秒的PHP代码片段-MATH
  4. POJ 1159 - Palindrome 优化空间LCS
  5. linux新增动态库后可执行程序找不到的问题
  6. 内核并发控制---RCU (来自网易)
  7. C++中的内存分配new()
  8. python-类继承多态
  9. windows server疑难杂症
  10. gdiplus画直线
  11. 在龙芯1c上使用rt-thread统一标准的spi接口
  12. 服务器ajax无响应时间,ajax 服务器响应时间
  13. 键盘侠小心了!微博或将推出“杠精”示众功能
  14. 小心,家中路由器发出的WiFi信号可能让你家变“透明”
  15. python列表的“增删改查”(python基础讲解第四天)
  16. 南方科技大学21年计算机考研情况 不保护一志愿?心比天高,德比纸薄?
  17. GOOGLE搜索秘籍--高级搜索:site,link,inurl,allinurl,intitle,allintitle
  18. 视频如何加水印文字?一分钟学会
  19. 打开用友总账时提示“该产品没有安装,无法使用”
  20. 有刷直流电机工作原理详解

热门文章

  1. 如何判断两个ip是否属于同一子网;如何确定子网掩码,让300台服务器处于同一网段
  2. 组合数学(三)鸽巢原理
  3. JDK更换IDEA如何修改
  4. 45特征03——最小多项式的概念和性质、广义特征子空间分解
  5. 咋筛选变量进入多因素回归 纳入变量 变量选择 类似机器学习的特征选择 cox回归分析cox多因素
  6. npm ERR! code E404 npm ERR! 404 no such package available : xxx
  7. 雷观(五):认准的事情,要做就做到极致
  8. Linux nc 命令
  9. 付费代理IP——Redis数据库的使用01
  10. 图像去雾/图像去雨(matlab/python)