我是前端,相信大家也遇到过。
在写项目中经常遇到这种问题:
写一个新的接口,代码格式/样子都是一样的。 如:
const getList = (params)=>{ return ajaxfn({url:'xxx',type:'post',params:params}) }
经常这个项目要加新接口的时候,我都是从别处先复制一下这段代码,然后改改方法名和接口地址即可。
再比如写一个弹框。一般是 xxxModal.vue ,然后要写新弹框也是复制一个 Modal 。改改里面的逻辑即可。
还有类似后台 列表/筛选 等等,都是找之前写好的。然后改改里面的逻辑接口,一般 80%的代码都是一样的。
不要说抽出来写组件什么的,其实已经是最简了。哪怕再抽搞成 组件 + json 配置什么的。下次用还是会去看一下之前怎么做的,把 json 复制配置一下。。。。以此类推。。。。
所以,只有这个项目刚建或者新的业务场景的时候,才会去“思考”怎么手把手来做。其它时间都在 cv 。
我曾经想过,在一个项目里,直接放个 demo 目录,然后大家直接去 copy 相关代码即可。但是也难免有遗漏(偷懒不更新 demo 目录)
也写过用自带的代码片段来维护。但是管理又麻烦。
不知道大家有什么好的办法么?
|      1ming159      2024-08-09 10:59:40 +08:00 有个东西叫 "Code snippets" 很多 IDE 都支持. 可以将这类东西配置到 IDE 中. 例如 VS Code 就支持  https://code.visualstudio.com/docs/editor/userdefinedsnippets | 
|  |      28355      2024-08-09 11:01:06 +08:00 copilot 直接就能弹了。。不需要管理 | 
|      3wander555      2024-08-09 11:05:41 +08:00 live templates....idea | 
|      4NessajCN      2024-08-09 11:06:42 +08:00 | 
|  |      5panlatent      2024-08-09 11:10:43 +08:00 恰巧尝试过不少 1.( Code ) Snippets 无论是 IDE / Alfred / Snippets (Mac APP) 需要收集和整理,本质上还是个剪辑板。基本上不用了。 2. IDEA 重点 Live Template 面对特定框架下的高度样板化代码有奇效,缺点是需要自己归纳便携和不断优化才会越来越好用,但可控程度更高。 3. Copilot 等 AI 大部分时间都很好用,主打一个省事。 4. 模板项目或特定生成工具 需要开发和调整,适合框架类项目。 | 
|  |      6zjsxwc      2024-08-09 11:11:53 +08:00 "Code snippets"不错, 我用的最多的是自己写的代码生成脚本。 | 
|  |      7fusi      2024-08-09 11:33:36 +08:00 自己写了几个样板页面,对应不同的产品,主要是 vue\css\mixin 几个文件 面向产品编程,我们这边每个产品风格基本固定,新加的页面或者逻辑都是大差不差,逻辑塞到 mixin 中,样式塞到 css 中,差异塞到 vue 中,直接整个文件夹移动到不同项目就能用 当然,这些只针对新页面 | 
|  |      8forty      2024-08-09 11:34:53 +08:00 如果是 UP 说的这个场景, 我感觉是属于代码抽象的不对,这种雷同的应该是不需要再 cv 代码的. 就比如说你为文章列表的展示写了一份代码,然后又有另一个分类的文章列表展示,又复制粘贴一份代码?不应该。 正常是前端传不同的参数,后端都是同一套代码,不需要到处 cv 同样的代码。 需要 cv 的,一般是大部分不同的。 | 
|      9seeu2ex      2024-08-09 11:54:51 +08:00 via iPhone 要么 ide 代码片段,要么再封装一个通用函数,把公用的抽离出来,只需要填不同的参数 | 
|      101wlinesperday      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 那几条应该不是问题 | 
|      11Xu3Xan89YsA7oP64      2024-08-09 12:14:20 +08:00 觉得自带的代码片段不方便管理,可以自己写个 vscode 插件整个界面来维护吧(我猜可能已经有类似的插件了) | 
|  |      12tool2dx      2024-08-09 12:21:31 +08:00 我自己写了一个工具,针对源代码级别来提取业务相关的函数和代码。 但其实关键不在于代码复制粘帖的效率,而在于代码的高度业务复用性。 如果不做这点,以后维护代码更麻烦。 | 
|  |      13kokutou      2024-08-09 13:01:34 +08:00 idea 不是直接弹了 | 
|      14Chinsung      2024-08-09 13:03:02 +08:00 copilot 基本都直接弹了,要么大量相同的定义就直接丢掉 gpt 让他按照规则帮忙生成下 | 
|  |      15ruoxie      2024-08-09 13:39:48 +08:00 | 
|  |      16ruoxie      2024-08-09 13:41:45 +08:00  1 | 
|      17shunia      2024-08-09 14:04:05 +08:00 目前用 AI 是相对来说最轻松的,你写类似的代码它自动提示,tab 一下就好了,基本不用改。 | 
|  |      18supuwoerc      2024-08-09 14:10:19 +08:00 | 
|  |      19lizhenda      2024-08-09 15:01:36 +08:00 你凭什么觉得你这些代码能一直复用下去?试试过几年再回过头看看? | 
|  |      20crayygy      2024-08-09 15:17:37 +08:00 你需要的是脚手架,在这方面个人觉得做得不错的是 Ruby on Rails ,很早以前写 RoR 的时候就觉得,几乎没写过什么重复代码,大多数都是复用的或者是直接调用 | 
|      21sampeng      2024-08-09 17:31:06 +08:00 Copilot 已经干死掉 snippets 了。但是,Copilot 不能解决特别大段的代码。这没什么办法。 以我身边统计学来说,现在的研发 10 个里面只有 1-2 个接受 copilot 。。 所以像你说的:如果你用 gitlab 作为仓库。gitlab 的每个项目可以创建自己的 code snippets 。比目录强多了。 说实话,程序员都是懒得整理的。记得在哪打开文件过去现拷 | 
|      22sampeng      2024-08-09 17:32:53 +08:00 @forty 这就是代码写少了代码抽象魔怔了。。。 有很多场景就是改个函数名和调用的。其实这种我更喜欢,因为好改,看代码特别好理解。 | 
|  |      23air1314      2024-08-09 18:16:16 +08:00 一般不整理 因为整理费时间而且基本不会看 业务代码如果有做过类似的直接去对应项目里扣 像工具类这种更适合单独整个仓库 import 进来 | 
|  |      24wenye123      2024-08-09 18:31:31 +08:00 每个人写代码都有自己那一套东西可以复用 很难说有啥高低之分  毕竟最终目的都是为了业务 然后业务是为了挣钱 只要功能实现了就行 业务不挣钱 代码简洁上天也没用 |