从重构到吐血 - 我是如何删掉 6 万行代码并且不删减原有功能的

2017-12-10 16:42:44 +08:00
 pupboss

原文发表在我的博客 近期重构工作的一点收获

主要重构工作如下

关于删除代码,在某个项目里,Pods 文件夹那些第三方库的代码删了 9 万多行(那个目录没有被 git ignore 掉),项目里面删除了大约 4 万行,其中大量代码是该项目之前的项目里面留下来的东西,只不过没人清理。在删了 4 万行之后,程序仍然能完整的跑。

接下来是做了部分重构,把一些第三方库删掉,自己造轮子,在这个过程中,累计删除了 1.2 万行代码,增加了 1100 行左右。

整个重构工作下来,编译速度从 2-3 分钟减小到了 40 多秒( 13 寸 2 核心机器),warning 从 70 多减少到了 0,第三方库的数量从 51 个减少到了 13 个,安装包从 22.1M 减小到了 3.7M ,功能反而比之前还要多。

原文发表在我的博客 近期重构工作的一点收获

10580 次点击
所在节点    程序员
80 条回复
sobigfish
2017-12-10 18:34:38 +08:00
上线的 app 么?发个 itunes 地址?
760974873
2017-12-10 18:52:31 +08:00
你的博客访问很快,也好看
pupboss
2017-12-10 19:03:29 +08:00
@zj299792458 初创团队嘛,用户量不大,灵活度方面比较有优势

@sobigfish 我没找到分享的链接,商店搜 HEY!Shake 吧,这个 app 曾经到过新加坡区商务榜第一的哈哈,你下载了应该用不了,app 做的是声音识别方面,需要特定的音频才能实现功能

@760974873 谢谢谢谢
likuku
2017-12-10 19:06:19 +08:00
[不是很会用单元测试,所以靠的是人肉 debug].... 刚开始学用单元测试的野生 pyer 表示 up 主耐力超凡,技艺超群...

用起 单元测试,马上发现自己写的代码真是超级渣,重构的动力爆棚。
pupboss
2017-12-10 19:32:30 +08:00
@likuku 单元测试这么强大吗😳我也去学一下,多谢🙏
asj
2017-12-10 19:55:36 +08:00
删代码比写代码爽多了
missdeer
2017-12-10 19:57:24 +08:00
没看 append 之前我以为是 Java 项目,哈哈
onikage
2017-12-10 20:32:34 +08:00
我们之前的项目也是类似, 现在重构后体积只有之前的一半.
虽然业务不是很复杂, 代码量不多. 但是之前的一位大神写出了理论仅能支持 1 路并发的新高度.
这项目现在我在帮擦屁股...
pupboss
2017-12-10 20:38:14 +08:00
@asj

@missdeer 哈哈,主要是现在项目差不多都是这么个层级结构,MVC

@onikage 一路并发😂重构大法好,重构完按照新的结构来写,当然也不排除其他大神继续走以前的老路
rails3
2017-12-10 20:44:03 +08:00
大神
vagranth
2017-12-10 20:45:57 +08:00
最近也在做类似的重构工作,5w 多行代码,我估计 2k 行能搞定。
真是无法想象之前的代码是怎么写成那样的。
carlclone
2017-12-10 20:59:21 +08:00
没单元测试真的敢保证正常啊
pupboss
2017-12-10 21:30:40 +08:00
@rails3 哪里哪里,都是被逼的,不然谁愿意重构代码😂

@vagranth 可能不是人人写代码都有洁癖吧。。。

@carlclone 已经很多前辈提到过单元测试了,这个真得研究下怎么用,多谢🙏
blless
2017-12-10 21:46:11 +08:00
我也重构过别的组的代码,看他们的代码能让我气得冒烟。。语言的特性不会用,代码乱七八糟 除了强制划分\写好的模块 其他都是写到哪放到哪 写好的基础库根本就不用。根本不懂正确处理内部错误跟逻辑校验错误。。
akring
2017-12-10 21:58:25 +08:00
讲真,现在没有单元测试我一般都不敢动
Jverson
2017-12-10 22:17:11 +08:00
@RorschachZZZ 我比你更惨,手上的购物系统我一个人在维护,用的老框架,代码都是六七年前的,关键是本地还跑不起来,产品还不断的加需求,我觉得我离离职不远了🤣
jhdxr
2017-12-10 22:45:57 +08:00
咦?也是 SCSE 的?你在哪个 lab ?但为什么你会从 RA 变成 Project Officer 的,这不是降了一级么。。。
jhdxr
2017-12-10 22:50:44 +08:00
好吧搜到了,我在你的正上方的 lab _(:з」∠)_
cabing
2017-12-10 22:56:39 +08:00
没有单元测试,一点都不敢动~~
pupboss
2017-12-10 23:04:25 +08:00
@blless 语言特性不去用……基础组件不去用……全中,定期开分享会,严格 code review,应该能有点作用

@akring @cabing 我们做 iOS 的可能还好点😂页面能跑通,UI 不错位,就算测试通过了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/413522

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX