前端项目如何避免/解决因功能堆积导致的代码越来越烂的问题

2020-06-29 10:04:15 +08:00
 sybb
项目现状:
1. 功能越来越多,部分工具类文件多达一千多行代码,有点臃肿;
2. 新来的产品经理不了解项目就在那加需求 改业务,说了还不听,对之前的逻辑有较大的创伤(人家是甲方的人);
3. 新进来的开发越来越多,技术水平参差不齐,代码五花八门;

本人能力有限,来请教大佬们的项目遇到以上问题都是如何处理的。
3660 次点击
所在节点    问与答
38 条回复
Mithril
2020-06-29 10:20:22 +08:00
重构这本书都多少年了。。。
唯一的办法就是在基础架构设计不太落后的前提下不断重构。
但硬性条件就是组里有个权力足够大可以怼掉不合理需求的技术领导。
workg
2020-06-29 10:21:04 +08:00
通病。祖传代码谁接手谁倒霉
bojackhorseman
2020-06-29 10:27:33 +08:00
能用就行:)
kop1989
2020-06-29 10:29:45 +08:00
不管是前端还是后端,都很难解决。
1 、需求变化是外力。这就导致你的程序结构设计的再合理,摧毁它也只需要一条需求。
2 、代码审核需要极大的人力,小公司根本没法实现。
3 、如果根据当前业务重构,就会陷入重构》改需求》再重构的恶性循环,重构的版本永远不能上线。

所以如果要解决,关键点就是钱。
严格的代码审查制度和编程规范,合理,扩展性强的架构设计,强硬的产品路线。
这三者最终指向的都是钱。
sybb
2020-06-29 10:47:21 +08:00
@workg 头大
sybb
2020-06-29 10:47:39 +08:00
@bojackhorseman 这么想确实烦恼少了好多哈哈哈
sybb
2020-06-29 10:48:45 +08:00
@Mithril 之前的 leader 也是比较温柔的人,不太会刚需求,现在 leader 走了 我又没话语权技术还一般,难搞哟
sybb
2020-06-29 10:49:25 +08:00
@kop1989 的确是 现在都很随意,没有系统的规范 人力也不够
wyz123723
2020-06-29 11:04:01 +08:00
跳槽, 把锅甩给其他人
ianva
2020-06-29 11:07:58 +08:00
这才是看能力的地方,软件工程的能力比用什么新技术之类的重要多了,推荐一本 https://book.douban.com/subject/35006892/ ,我挺赞同这里面的挺多想法的,很多自己也实践过。

1. ETC ( Easier to change ),书里强调是一种价值观,我觉得也是,而且是最重要的一条,所有的事情从设计的时候就得考虑,他是否易于变化。做每一个决定也都要考虑,这个决定是否能做到易于变化,这样落实到代码的时候我们就会拆分的更清楚。

2. DRY (Don't repeat yourself),这个我最初的理解其实是浅见,只是想如果能自动化的就不要手动,这本书里给的了启发,避免重复其实就减少了维护的难度,特别是代码逻辑里面,这会让我们意识到,我们可以把逻辑拆分的更细,更易于变化,然后通过组合来去呈现复杂的逻辑。

3. 正交性,如果能设计成完全不相干的系统就尽量不要有关联,消除不相关的事物之间的联系,这个最近有体会,因为一些原因我们很难做 SSO,所以我们的 portal 提供给各级子项目 token,而这其中还传递了其他的 profile 信息,其结果就导致了其他的系统出了问题,一直找不到原因,结果发现是 profile 信息因为某些权限问题传空了,结果就成了跨系统的问题,所以设计的时候一定要尽量做到正交。

4. 封装,组件化,前端现在已经很容易能做到组件化,特别像 react,组件化是常态,重要的是如何能在多个系统 share,如何能够更方便的提出组件,提取出公用 utils,这个很推荐 monorepo 的方式组织代码,我们可以很方便的在一个项目里很容易的拆分出相应的公共部分,组件,逻辑,工具等等,可以结合 nexus3 这样的私有代码仓库,做到多个项目的 share

5. 领域模型,构建前端的领域模型,只用通过稳定的模型去映射组件才能有更好的维护性,设计好领域模型后我们可以把后端的 api 映射到领域模型,然后前端的领域模型去映射组件,当然最好的办法是直接上 GraphQL.

6. code review,以上所有的东西都需要 code review 去统一和实践以及监督,这是落实这些东西最重要的一部,否则每个人都有不同风格,当然我们做的更多一些,比如通过 Prettier,以及 eslint 去定制一个我们的规则,通过 SonarQube 去看代码质量等等。
kop1989
2020-06-29 11:11:52 +08:00
@ianva #10 学到了,感谢
ChefIsAwesome
2020-06-29 11:15:39 +08:00
解决方案就是招高水平的人。低水平造成低质量代码是应该的,是必然的。因此造成的开发时间越来越长,动不动就得推倒全部重写,是企业应该付出的代价。
sybb
2020-06-29 11:19:59 +08:00
@ianva 本人目前的确是缺乏组织架构方面的能力以及工程思维,感谢老哥指导以及推书
sybb
2020-06-29 11:21:27 +08:00
@ChefIsAwesome 组里确实缺少技术主心骨,感觉领导招人好难啊,很久了还是没什么动静
yaphets666
2020-06-29 11:24:23 +08:00
跟我这情况差不多 不过我这是没办法 业务逻辑太复杂 各种联动和判断在前端 一个页面 1000 多行 JS
sybb
2020-06-29 11:25:25 +08:00
@wyz123723 也算是注入了一年时间的代码,还是想拯救拯救
sybb
2020-06-29 11:27:18 +08:00
@yaphets666 我这边是业务越来越复杂,有一些后端不知道什么原因组织不了的数据也要放在前端去组织处理,尽管会对前端质量和性能有很大的影响
revalue
2020-06-29 11:29:17 +08:00
6 年之内,前端框架已经被推倒重来了很多遍了。你觉得有人能答好这个问题?
dilu
2020-06-29 11:36:44 +08:00
一个字:钱

如果有钱大可以多招人,放宽开发工期,规范代码合并、review 流程

但是资本本质就是最小的成本获得最高的利益

所以这就是个伪命题,我反正已经能完全接收屎山并能面不改色的继续往屎山上堆屎
sybb
2020-06-29 11:42:13 +08:00
@revalue 不能完全解决 学习学习怎么优化也是可以的吧

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

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

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

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

© 2021 V2EX