回顾与反思

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. PXE全自动安装操作系统--centos7.3学习笔记
  2. ACM 中常用的算法有哪些?
  3. Chrome安装metamask
  4. sonarqube报错解决办法:Caused by: java.io.FileNotFoundException: /opt/sonar/temp/sharedmemory (权限不够)
  5. 浏览器开发调试工具的秘密 - Secrets of the Browser Developer Tools
  6. Python | Lambda函数与示例
  7. java xmlutil_XmlUtil工具类(toxml()和toBean())
  8. 工具包:Safetype Config使用
  9. 随手练—— 洛谷-P2945 Sand Castle(贪心)
  10. 恐龙母带混音插件-IK Multimedia T-RackS 5 MAX 5.5.1 macOS
  11. 如何使用PDF阅读器将PDF转换成图片
  12. 导论 计算机组成 ppt,《计算机导论》说课稿PPT课件.ppt
  13. android11 谷歌安装器,gms安装器安卓11版2021最新版-安卓11gms安装器2021最新版v4.8.5华为专版_新绿资源网...
  14. 2022苹果AppStore应用商店上传与APP上传流程必看(基础篇)
  15. 金蝶BOS自定义元数据
  16. 各种光流算法介绍和原理
  17. 百度地图行政区划边界线获取,只要界线,遮罩层透明设置方法
  18. 和菜鸟一起学android4.0.3源码之USB wifi移植心得
  19. 数据压缩读书笔记——线性代数的几何意义(五)
  20. led指示灯识别功能

热门文章

  1. 用 C++ 示例解释 UML 类图
  2. JavaScript typeof, null, 和 undefined
  3. 源码编译安装部署LAMP平台(使用Apache,MySQL与PHP搭建Discuz论坛实例)
  4. 简单 python 爬虫(一)
  5. 2017上半年计算机教学计划,2017上半年数学教学计划
  6. 太和二中计算机考试,太和二中网上阅卷系统|翰林金榜太和二中查分系统 网页版_最火软件站...
  7. 区块链 - 基础知识 - 第一讲
  8. 关于洛谷哪些题目(入门)
  9. K8S中的容器网络概述(编写中)
  10. 图灵奖得主Jack Dongarra:高性能计算与AI大融合,如何颠覆科学计算