Soft_Job 板


LINE

个人决定的标准是看 "有没有时间", 有的话就是随时都可以重构 不过我觉得重构并不是要花很多时间去做大幅度修改, 而是花少少时间可以做的小修改, 而每次小修改都可以好一些, 累积起来就是很大的改进 举某个个人最近做过的例子 某根据资料库状态及接收到的资料做各种检查的程式, 本来是取资料、各种检查都写在一个 大~~~方法里面, 有一堆 if else for 等等的包来包去 依以下步骤慢慢改 1. 整理资料, 将各种资料归到不同 Class, 如果有需要就加 Class、加方法、抽共用 这一步只是做些整理包装之类的, 对原本程式还没做什麽修改, 只是某些地方取值改成由某物件拿 2. 资料整理完, 那就可以做个 DataProvider 之类的, 将取资料的部份切出去 3. 接下来针对各种检查, 以 Template 模式定义好一个检查该有的步骤, 然後就可以对 "各种检查" 定义出 "各别的 Class", 这一步也没怎麽改原本程式, 只是把原本一大串的程式搬家, 放到各个对应 class 的检查方法里, 这样要针对某项检查做调整时就很好找 4. 做好一堆检查的 class, 就可以用 chain of responsibility 模式把它们串起来, 这一步还是没有怎麽动到原本的程式, 但未来要增加、删除某些检查就方便多了 5. 最後才是细看各项检查的 class 里的程式, 有没有重覆做的事情, 看要提出共用方法, 还是加进 Template 的步骤, 或能不能一开始做一次就好 这时才真的比较大幅度的去改动到原本的程式, 但也是能一小部份一小部份改, 有多少时间改多少 其中每一个步骤大概一小时, 顶多半天, 任一步做完都可以暂停, 其它的之後有时间再继续 不过当然能一口气做完还是比较好啦 总之, 个人觉得重构应该是 "一连串小修改, 其中每一项都不会花太多时间并能有实际的改善" 如果不是, 那很可能是对整个程式还没有足够的理解, 或者对整理程式上需要的相关技巧还不够熟悉, 那或许先不急着重构, 而是把程式搞清楚、相关整理方式跟步骤整理好, 之後再一步一步的做 修改前修改後的对比大概像这样 修改前 // ...十几行 query + 准备资料 for (/* loop 资料 */) { // 上百行各项检查、记录错误状态、送错误通知 } 修改後 // 拿资料 List<Data> datas = DataProvider.getDataToCheck(); // 准备好各项检查 Validator validator = new ValidatorOne() .setNext(new ValidatorTwo()) .setNext(new ValidatorThree()) .setNext(new ValidatorFour()) .setNext(new ValidatorFive()); List<String> msgs = new ArrayList<String>(); for (Data data : datas) { validator.validate(data, msgs); // 检查资料, 有事请记在 msgs Notification.notify(msgs); // msgs 里如果有事要通知就会通知 } ※ 引述《srwhite (阿白)》之铭言: : 事情是这样的 : 小弟最近接到使用者需求 : 要增加几个跟之前很像的功能 : 旧的那只程式已经历经许多测试 目前正稳定的运作中 : 但最初的需求很单纯 : 因此设计得不是很有弹性 不利於扩充及更改 : 第一次接到需求的时候 : 我想了一下觉得重构有点麻烦 : 於是直接复制了一份然後改了需要改的地方 : 变成两只有八成像的程式 各做各的 : 但最近又要再增加一个 : 於是我开始犹豫该不该整个打掉重构 : 避免程式码继续这样扩张下去 感觉很不专业 : 之後再有需求也比较好调整 : 但如果复制改一改大概只要一个小时 : 打掉重构可能要一个礼拜 还不保证会不会有甚麽多出来的bug : 想请教大家在类似的情况 : 都用哪些标准来决定甚麽时候应该重构 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.169.36.33
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1542513403.A.102.html
1F:推 prag222: 身为DP自学哥,虽然我没太多重构经验但我觉得DP不熟搞 11/18 13:05
2F:→ prag222: 搞重构其实不够力 11/18 13:05
3F:→ lovdkkkk: 是啊, 因为 DP 基本上就是整理程式上需要的相关技巧 :D 11/18 13:19
4F:→ rodion: 不认为需要特别去学DP才能重购 重购的精神其实很简单 11/18 16:00
5F:→ rodion: 就是高内聚&低耦合 拿会DP当作重构的前提我觉得是作茧自缚 11/18 16:01
6F:→ lovdkkkk: 不用当前题, 不过可以当 "有帮助的项目" 之一 11/18 16:36
7F:→ lovdkkkk: 不过话说回来 DP 看一下也不用很久才对 @@ 11/18 16:43
8F:推 viper9709: 推这篇~就是这个意思 11/19 23:44







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灯, 水草

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

TOP