困惑好久的问题,如何做代码管理?

2024-08-09 10:51:01 +08:00
 firhome

我是前端,相信大家也遇到过。

在写项目中经常遇到这种问题:

写一个新的接口,代码格式/样子都是一样的。 如:

const getList = (params)=>{ return ajaxfn({url:'xxx',type:'post',params:params}) }

经常这个项目要加新接口的时候,我都是从别处先复制一下这段代码,然后改改方法名和接口地址即可。

再比如写一个弹框。一般是 xxxModal.vue ,然后要写新弹框也是复制一个 Modal 。改改里面的逻辑即可。

还有类似后台 列表/筛选 等等,都是找之前写好的。然后改改里面的逻辑接口,一般 80%的代码都是一样的。

不要说抽出来写组件什么的,其实已经是最简了。哪怕再抽搞成 组件 + json 配置什么的。下次用还是会去看一下之前怎么做的,把 json 复制配置一下。。。。以此类推。。。。

所以,只有这个项目刚建或者新的业务场景的时候,才会去“思考”怎么手把手来做。其它时间都在 cv 。

我曾经想过,在一个项目里,直接放个 demo 目录,然后大家直接去 copy 相关代码即可。但是也难免有遗漏(偷懒不更新 demo 目录)

也写过用自带的代码片段来维护。但是管理又麻烦。

不知道大家有什么好的办法么?

4313 次点击
所在节点    程序员
24 条回复
ming159
2024-08-09 10:59:40 +08:00
有个东西叫 "Code snippets" 很多 IDE 都支持. 可以将这类东西配置到 IDE 中. 例如 VS Code 就支持
https://code.visualstudio.com/docs/editor/userdefinedsnippets
8355
2024-08-09 11:01:06 +08:00
copilot 直接就能弹了。。不需要管理
wander555
2024-08-09 11:05:41 +08:00
live templates....idea
NessajCN
2024-08-09 11:06:42 +08:00
panlatent
2024-08-09 11:10:43 +08:00
恰巧尝试过不少

1.( Code ) Snippets 无论是 IDE / Alfred / Snippets (Mac APP)

需要收集和整理,本质上还是个剪辑板。基本上不用了。

2. IDEA 重点 Live Template

面对特定框架下的高度样板化代码有奇效,缺点是需要自己归纳便携和不断优化才会越来越好用,但可控程度更高。

3. Copilot 等 AI

大部分时间都很好用,主打一个省事。

4. 模板项目或特定生成工具

需要开发和调整,适合框架类项目。
zjsxwc
2024-08-09 11:11:53 +08:00
"Code snippets"不错,
我用的最多的是自己写的代码生成脚本。
fusi
2024-08-09 11:33:36 +08:00
自己写了几个样板页面,对应不同的产品,主要是 vue\css\mixin 几个文件
面向产品编程,我们这边每个产品风格基本固定,新加的页面或者逻辑都是大差不差,逻辑塞到 mixin 中,样式塞到 css 中,差异塞到 vue 中,直接整个文件夹移动到不同项目就能用
当然,这些只针对新页面
forty
2024-08-09 11:34:53 +08:00
如果是 UP 说的这个场景, 我感觉是属于代码抽象的不对,这种雷同的应该是不需要再 cv 代码的.
就比如说你为文章列表的展示写了一份代码,然后又有另一个分类的文章列表展示,又复制粘贴一份代码?不应该。
正常是前端传不同的参数,后端都是同一套代码,不需要到处 cv 同样的代码。
需要 cv 的,一般是大部分不同的。
seeu2ex
2024-08-09 11:54:51 +08:00
要么 ide 代码片段,要么再封装一个通用函数,把公用的抽离出来,只需要填不同的参数
1wlinesperday
2024-08-09 11:55:05 +08:00
单说前后端交互有明显的冗余的部分,这里工程化比较好的方法是参考 GraphQL ,利用中间的 Schema 来同时生成后端和前端交互的代码。
举个例子:

API.schema:


GET https://xxx.com/api/v1/users
Request Type Decl {...}
Response Type Decl {...}

前端: 可以利用上述的信息直接生成 hook
function useUsers(...){ ... }
后端: 可以利用上述的信息直接生成 API 的 scaffold


列表,modal 那几条应该不是问题
Xu3Xan89YsA7oP64
2024-08-09 12:14:20 +08:00
觉得自带的代码片段不方便管理,可以自己写个 vscode 插件整个界面来维护吧(我猜可能已经有类似的插件了)
tool2dx
2024-08-09 12:21:31 +08:00
我自己写了一个工具,针对源代码级别来提取业务相关的函数和代码。

但其实关键不在于代码复制粘帖的效率,而在于代码的高度业务复用性。

如果不做这点,以后维护代码更麻烦。
kokutou
2024-08-09 13:01:34 +08:00
idea 不是直接弹了
Chinsung
2024-08-09 13:03:02 +08:00
copilot 基本都直接弹了,要么大量相同的定义就直接丢掉 gpt 让他按照规则帮忙生成下
ruoxie
2024-08-09 13:39:48 +08:00
ruoxie
2024-08-09 13:41:45 +08:00
shunia
2024-08-09 14:04:05 +08:00
目前用 AI 是相对来说最轻松的,你写类似的代码它自动提示,tab 一下就好了,基本不用改。
supuwoerc
2024-08-09 14:10:19 +08:00
lizhenda
2024-08-09 15:01:36 +08:00
你凭什么觉得你这些代码能一直复用下去?试试过几年再回过头看看?
crayygy
2024-08-09 15:17:37 +08:00
你需要的是脚手架,在这方面个人觉得做得不错的是 Ruby on Rails ,很早以前写 RoR 的时候就觉得,几乎没写过什么重复代码,大多数都是复用的或者是直接调用

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

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

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

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

© 2021 V2EX