Soft_Job 板


LINE

※ 引述《vi000246 (Vi)》之铭言: : 我现在遇到一个情况 同时跟其他人开发很相似的功能 : 举例来说 我跟B同时开发两个电商网站 : 一个叫博客来,一个叫虾皮好了 : B已经建好博客来商品列表页面 : 我也要建立虾皮的商品列表 想把B建的博客来页面拿来用 : 因为相似度很高,打算把页面共用的逻辑抽出来 : 放到common lib : 但是这时B也在开发中 : 如果我重构博客来页面,他要把code merge回博客来时就要修很多冲突 : 这时我该做的是,直接复制博客来的逻辑,先把虾皮商品列表建出来 : 等两边网站都完成,再来重构吗? : 因为现在程式成长幅度已经有点夸张了 : 单个档一千行程式码 : 我怕等两边都完成再重构,会花更多时间 : 现在就重构会造成merge冲突,而且两边开发进度也不一样 : 他写完的code我要用,就重构他的code : 可能会重构到没完没了 : 遇到这种情况该怎麽办呢? : 想问有比较好的方法吗 1. 你不应该去动别人开发中的 code, 除非 pair 或你是有被授权的人. 2. 你可以使用他的 code , 建 common, 但你不应该改回他的部分(理由1). 3. 假设改完会有冲突, 那表示你做的不是重构. 4. 如果完成再重构会花更多时间, 那表示你做的不是重构. 5. 你要用他的 code , 跟你要整理重构, 是两回事. 所以你要先搞清楚你要做的事情, 是解决你的事情, 还是帮别人改(你未必有取得授权的) code. 你拿别人的东西, 改成自己能用的 common lib, 用自己的 common lib, 这样基本上应该不至於被靠北. 但去动别人正在开发的东西, 说穿了, 你知道人家在干嘛吗? 你权责上能对人家时程负责吗? 或说穿了, 你可以负起 fix conflict 的责任吗? 另外有个版友说重构是农闲的事情, 其实重构是越忙的地方越需要, 因为会忙通常就是没在重构, 但是这篇原文讲得并不是重构, 而是在僭越职责的前提底下自作聪明改别人的程式码. 厉害的人应该是会抽出正确的 common, 当A 跟B都做完的时候, 拿 common 套回去不会很久的. 会被开发拖着走的 common, 表示需求根本就还没稳定到可以共同重构啊. -- 之间的世界,反抗军启蒙军的交集 带着 Android 去旅行、去发现 在身边浑然不觉的 另一个世界。 全世界,都是我们的 足迹与游乐场。 ~ The world around you is not what it seems. ~ http://ingress.tw --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.138.6.255 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1593079648.A.A48.html ※ 编辑: TonyQ (223.138.6.255 台湾), 06/25/2020 18:08:45 ※ 编辑: TonyQ (223.138.6.255 台湾), 06/25/2020 18:09:45 ※ 编辑: TonyQ (223.138.6.255 台湾), 06/25/2020 18:12:13
1F:→ airtsubasa: 会忙有很多原因,不合理的时程,不合理的专案成员! 06/25 18:22
2F:推 king22649: 4. 怪怪的 06/25 18:28
假设从头写 A 的时间是 A1, 从头写 B 的时间是 B1, 正常情况下, 拿 A 直接改共用函式, 来写 B 的时间应该是 B2 , 且 B2 < B1 . (如果不是这样就不需要拿A改了). 假设 B2 写完之後回去套 A 的时间式 A2 . 总开发时间是 A1+A2+B2 , 而这时间应该要小於 A1 + B1, 且 A2 应该极低. (不是极低表示你元件没拆对) 在这前提下, 这才算是重构, 不然只是单纯在重新开发元件而已.
3F:推 vi000246: TonyQ大说明得很清楚 感谢建议 06/25 18:41
4F:推 cplusplus426: 大大真的强者 06/25 19:37
5F:→ qrtt1: 不合理的成员丢温泉,不要挡输出。 06/25 20:27
6F:推 content71: 感谢,最近很有感受 06/25 21:04
7F:→ xo1100: 乱动别人code是行内大忌吧 06/25 22:34
8F:推 APTON: 推! 06/25 22:45
※ 编辑: TonyQ (210.61.209.201 台湾), 06/26/2020 12:41:58 ※ 编辑: TonyQ (210.61.209.201 台湾), 06/26/2020 12:42:58
9F:推 Csongs: 推调理列出 06/26 14:11
10F:→ Csongs: *条理 06/26 14:11
11F:推 CloudyWing: 这篇讲得很好,推 06/26 17:40
12F:推 lerdor: 推 06/26 21:23
13F:→ allenxxx: 当我极菜时,曾经有两个前辈一个很不喜欢用oo,另一个极喜 06/27 01:25
14F:→ allenxxx: 欢,结果那位oo派的不知发甚麽神经私自去大改另一位程式 06/27 01:26
15F:→ allenxxx: 被火掉,因为原作者不肯继续维护除非老板给交代 06/27 01:27
16F:→ allenxxx: 真的别随便动人家东西,没有开发者或上级授权的话 06/27 01:27
17F:推 sharku: 推这篇 06/27 09:47
18F:推 king22649: 这代表本来A,B间就有良好的沟通吧 不然会有lib, build, 06/27 12:42
19F:→ king22649: design pattern使用不一样的问题 正常来说都是更花时 06/27 12:42
20F:→ king22649: 间的 06/27 12:42
21F:→ king22649: 就是因为完成再重构 更花时间 才会需要先MERGE 弄出com 06/27 12:43
22F:→ king22649: mon lib吧 06/27 12:43
23F:推 king22649: 等等 你要说的是 先重构再完成吧? 06/27 12:50
我觉得你在谈重构之前, 先好好重新组织你的问题再说...... 不然很难跟你讨论你的明白. "重构" 会不会更花时间是能力跟权责问题, 不是沟通问题. 是不是很多人都没看过 refactoring 该书啊? 为什麽这麽多人把整并功能视为重构? =_= 重构很单纯的就是[安全的]把程式逻辑从 A 投影成 B,以一种不容易改坏的形式, 而两套程式码如果可以幸运地刚好重叠在一起,就可以被整并。 如果无法,那表示需要进行功能异动, 而这时候就不是重构,而是在进行元件化作业的功能异动。 到目前为止的讨论,重构跟功能异动的两顶帽子很显然分不清楚啊. 这样的前提底下来谈重构是谈身体健康还是来灵修的吗? ※ 编辑: TonyQ (210.61.209.201 台湾), 06/27/2020 13:19:50
24F:推 king22649: 先完成A,B再重构的时间>先重构A部分逻辑给B引用的时间 06/27 14:17
25F:→ king22649: 两者应该都可以算是重构 第一个是重构A的comm lib部分 06/27 14:20
26F:→ king22649: 第二个是重构AB 两者功能上都没太大的异动 06/27 14:20
27F:→ king22649: 不太能理解 以时间作为重构的定义基准 06/27 14:21
28F:推 king22649: 你的先完成指的是啥 先各自完成?还是先完成A COMM LIB 06/27 14:24
29F:→ king22649: ? 06/27 14:24
"思考时间"为什麽不能作为基准. XDDD 另外, 重新写出 A/B 都能用的元件是不是重构, 要取决於 A/B 的逻辑有没有重叠, 你这前提没弄清楚就谈重构 AB , 基本上就已经是文不对题了. 後面都是零分好吗? 如果我已经写了上面两段你都还是看不懂, 我觉得你要另寻高明了. 你要怎麽认知这件事情是你的自由, 但很显然我们对重构的定义是不同的. 你如果对基础假设有问题, 应该是先弄清楚基础假设. 你怎麽知道 A跟B 一定有共用逻辑, 搞不好最後 A+B 会搞出个 C > A+B, 所以为什麽要假设 A+B 一定会有能够重构的交集呢? 而如果是这样, 又怎麽会是功能差不多呢? 太多吐槽点了, 就这样吧. ※ 编辑: TonyQ (210.61.209.201 台湾), 06/27/2020 14:34:04
30F:推 king22649: 你第一段解释没问题 第二段解释也没问题 但你的第四点 06/27 14:41
31F:→ king22649: 你真的不觉得需要解释或修正 如果真的觉得不需要 那就 06/27 14:41
32F:→ king22649: 当作是我的问题吧 06/27 14:41
33F:→ king22649: 第三个解释也是合理的 06/27 14:41
你看不懂坦白说不是我的责任, 我还是写给看得懂的人看就好. 我尽力了. XD ※ 编辑: TonyQ (210.61.209.201 台湾), 06/27/2020 15:08:05
34F:推 king22649: 你这边的重构使用的是 书里名词的定义那个? 06/27 15:13
35F:→ TonyQ: 我会建议你试着把你想像中的重构描述, 就会知道落差了. 06/27 15:18
36F:→ TonyQ: 我使用的重构定义文中已经描述过了, 请参照. 06/27 15:18
37F:推 king22649: 这满有趣的 确实是值得学习。 06/27 15:20
38F:→ pttworld: 如果对时间的定义包含测试则重构不一定比较快 06/27 19:45
39F:→ pttworld: 另外重构第一部有提到不遵守规则的重构坑越挖越大, 06/27 19:49
40F:→ pttworld: 整体时间反而是比较多的 06/27 19:50







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP