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

95 天前
 firhome

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

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

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

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

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

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

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

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

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

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

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

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

3664 次点击
所在节点    程序员
24 条回复
ming159
95 天前
有个东西叫 "Code snippets" 很多 IDE 都支持. 可以将这类东西配置到 IDE 中. 例如 VS Code 就支持
https://code.visualstudio.com/docs/editor/userdefinedsnippets
8355
95 天前
copilot 直接就能弹了。。不需要管理
wander555
95 天前
live templates....idea
NessajCN
95 天前
panlatent
95 天前
恰巧尝试过不少

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

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

2. IDEA 重点 Live Template

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

3. Copilot 等 AI

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

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

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

API.schema:


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

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


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

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

如果不做这点,以后维护代码更麻烦。
kokutou
95 天前
idea 不是直接弹了
Chinsung
95 天前
copilot 基本都直接弹了,要么大量相同的定义就直接丢掉 gpt 让他按照规则帮忙生成下
ruoxie
95 天前
ruoxie
95 天前
shunia
95 天前
目前用 AI 是相对来说最轻松的,你写类似的代码它自动提示,tab 一下就好了,基本不用改。
supuwoerc
95 天前
lizhenda
95 天前
你凭什么觉得你这些代码能一直复用下去?试试过几年再回过头看看?
crayygy
95 天前
你需要的是脚手架,在这方面个人觉得做得不错的是 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