Re: [讨论] hard code 速度会快吗?

楼主: HZYSoft (PCMan)   2024-06-01 17:11:48
※ 引述《talkmyself (休息中)》之铭言:
: 如题 hard code的速度会比较快吗?
: 根据我经验 hard code可以在极短时间内处理一些专案上的问题
: 但是专案上有高度相似的东西 借由hard code去写并不会比较快
: 反倒是多花一点时间重构 重构完毕之后 再来只要套function 修改参数
: 这速度会比hard code快很多
: hard code完毕有十个地方要改 才发现改9个地方 发现bug 又要花时间处理
: 反倒是重构后的code 就算10个地方要改 可以缩减到5个地方
: 然后借由5个地方又在同一只function 带入参数之后 会比较快
: 然而bug也不容易产生
: 因为hard code去处理 只是极短时间内比较快写完的错觉
: 后续要加一两个功能就会越来越慢 除非是极迷你的专案
: 就算是小专案 hard code也不会比较快
: 至于会留下大量技术债的问题 不是为了赶时间而hard code
: 而是因为脑筋不好而hard code
: 因为脑筋不好 所以很多可以模组化的东西都hard code去解决
: 发现到越改越复杂 到最后连自己都无法维运
: 脑筋不好的缘故 改一个bug会产生3个bug
: 所以会有技术债问题是脑筋不好造成的 不是赶工造成的
: 我的想法
关键其实要看你的专案现在在哪个阶段
1. 专案在非常早期:
这时候 hard code 有可能其实是最佳解。
此时需求不太很确定,可能经常修改。你现在看起来有几段 code 很相似,
可以重构成共用 function,但不幸的是,几个月后商业需求改变,他们的行为
越差越多,却因为共用 code 造成难以扩充,改了这个就坏了那个,
明明差很多的逻辑,却硬要共用,只会拖慢开发
另外是有时候还在探索可行的产品方向,prototyping 结束后决定舍弃,
那你就白费工夫在 refactor 了,这些 code 很快都是要 deprecate 的
在这些情况下,先 hard code 都是相对好的做法,呼应了不要 early optimization
2. 专案在稳定成长期:
这时候会慢慢添加新功能,但不会大幅度的改变,先 hard code 紧急修复,
把损害降到最低,接着注解写下 TODO,并且留下 bug 连结供日后参考即可。
"农暇"之余,再慢慢安排时间来 refactor 还债即可。
当然,如果开发时间充裕,那还是好好设计,一次把它做好比较好。
3. 专案不太会改,或在生命周期尾声:
这时候直接 hard code 常常也是最佳解,花太多成本去 refactor 没有什么效益
这些 code 日后也不太会再改了,多只是维护工作,甚至系统随后就会淘汰。
欠一些技术债没还也还好,产品结束这些呆帐就打消了 XD
如果有在好好追踪技术债,定期偿还,视情况举债,有时是一件好事情。
重点 hard code 的当下要留下注解,说明前因后果,并且开 bug 追踪,
这样日后不会忘记,要 refactor 也比较好搜寻到这些位置
补充:
注解的使用不是我想回的重点,重点是平衡短期和长期效益
按照当下的状况,调整开发的步调。
建议注解单纯是加个 TODO: 的注记日后才不会忘了 cleanup
或是有些紧急的修改有当下的时空背景,怕一忙没法马上清
日后有空要 refactor 的时候,回想不起来当时状况。
注解不是描述 code 做了什么,而是描述为什么会有这 hack
至于 code 做了什么,自然是 code 写好读 code 就懂了
作者: kurtsgm   2024-06-01 18:30:00
倒数第二句真的是重点Hardcode又不留注解就是在雷
作者: NDark (溺于黑暗)   2024-06-01 18:42:00
反注解派该出来说注解无用论了
作者: k7ji91ab5m (囧嘻嘻)   2024-06-01 18:44:00
反注解派不会认为hardcode不用注解不懂在相轻什么
作者: NDark (溺于黑暗)   2024-06-01 18:46:00
连缩排用tab还是空白都能相轻了 还有不懂的新警察
作者: testPtt (测试)   2024-06-01 19:16:00
打开专案心情就很差的感觉 refactor还是越早越好
作者: B0988698088 (废文少女小円♥)   2024-06-01 19:16:00
有反注解派哦?那他们怎么处理需要注解的情境?通灵吗
作者: ab4daa (nooooooooooooooooooo)   2024-06-01 19:28:00
果然无限QE怎么输
作者: abccbaandy (敏)   2024-06-01 19:34:00
结论:hard code就对了(?
作者: angusyu (〒△〒)   2024-06-01 20:28:00
你的结论就是怎样哈扣都可以,真是可爱
作者: za755188   2024-06-01 20:40:00
楼上怀疑PCMan吗?
作者: pyCassandra (Q口Q)   2024-06-01 20:43:00
推PCMan
作者: wei115 (ㄎㄎ)   2024-06-01 20:44:00
哈扣真的不是最差的选择
作者: labbat (labbat)   2024-06-01 22:30:00
反注解派:程式码即为说明书,程式码即为文件,不hardcode写出来的就是所有人应该看懂的常识
作者: CRPKT (crpkt)   2024-06-01 22:47:00
我推荐使用 ad-hoc 这个字取代 hard code
作者: peter98 (新兵)   2024-06-01 22:49:00
反注解派说程式码即为所以不用写注解的观点没有错,但是反注解派的最大的问题是,他们对于自己的code太有自信,这是华人教育的传统问题,华人教育是文章看不懂是读者的问题。反注解派说程式码即为"说明书"所以不用写注解的观点*
作者: VL1003 (路人V)   2024-06-01 22:54:00
反注解派的想法没问题,就跟共产主义也没问题,但实作就是问题一堆,理念很美好,但现实超难达成。
作者: tsaigi (菜鸡)   2024-06-01 23:06:00
反注解派反的是那种无用的注解吧 例如这里呼叫xxx 之类看code比看注解还有用的地方
作者: kurtsgm   2024-06-01 23:16:00
不用注解的前提是程式码的命名、逻辑、流程都能简单读懂但通常会用hard code去解决问题一定有当时的时空背景在
作者: t64141 (榕树)   2024-06-01 23:17:00
但实际上常常是:专案早期 hardcode勇敢欠债,成长期没空改,稳定期东西没坏就不要乱改(或已经改不动了)
作者: kurtsgm   2024-06-01 23:17:00
或是用通则无法解决 ...这种情况下后面再回头看code只能靠回忆 几乎无法单纯读懂
作者: t64141 (榕树)   2024-06-01 23:20:00
至于注解不是写不写的问题,反而比较像是"如何适当使用注解"
楼主: HZYSoft (PCMan)   2024-06-02 00:07:00
注解的使用不是我想回的重点,重点是平衡短期和长期效益按照当下的状况,调整开发的步调。建议注解单纯是加个 TODO: 的注记日后才不会忘了 cleanup或是有些紧急的修改有当下的时空背景,怕一忙没法马上清日后有空要 refactor 的时候,回想不起来当时状况。注解不是描述 code 做了什么,而是描述为什么会有这 hack至于 code 做了什么,自然是 code 写好读 code 就懂了
作者: viper9709 (阿达)   2024-06-02 00:46:00
推这篇专业
作者: henrylin8086 (小木)   2024-06-02 01:00:00
前期就干模组化确实满浪费时间的,不确定性高又有demo去喊芭乐拳的需求,直接hardcode省事。我的情境是专案中期会整个系统连程式语言都大改,这边再开始做模组化都还来得及。
作者: mmonkeyboyy (great)   2024-06-02 01:43:00
我是都看专案的arch 两著会连动其实很合文主说的前面快速后面还债 反正有空能还写面太认真 后面要装忙也很累
作者: jack0204 (Jarbar王朝)   2024-06-02 10:52:00
有的时候要先抢时间弄MVP验证市场或技术方案会写得很乱,但要有文件归纳重点方便日后重写或重构与其说hardcode不好,不如说很多人技术不熟练只会这样做顺便说临时修程式大多hardcode是因为你凌晨4点被call大概也没心弄得很漂亮,只是几天内要记得重构
作者: za755188   2024-06-02 16:14:00
不够清楚的需求没必要过度最佳化 但又有多少需求是清楚的呢?
作者: superpandal   2024-06-02 17:26:00
不过是不重构的借口罢了 你不能保证你写出来的都很清爽 堆到后面你不考虑共用还债就是推给别人还 这种也是种垃圾行为 当然好的方向想就是不喜欢被鸟尽弓藏不做模组化给后面的人爽而已 是否可以共用那也是看个人功力 只要写的显式即可未知才会拖慢开发速度 而不是已知 已知只要你对语言不是很不熟或恶搞都能完善到底然而这样搞对你来讲也许可以算已知 对接手的人就是未知了 要花成倍心思去解决 当然不写注解要求就是写的好 复杂需求简归纳简化 达成可以显式除错而不用通灵然而依照你上面这样搞对你来讲可以算已知至于如何共用的更好讲究的是逻辑圆融 天人合一要达到楼主讲的流程趋势 对整洁本来就要有一定要求否则自己写的都看不懂了 不要说别人 往后才会有下一步讲到底最重要的还是整齐 模组化都不用搞到很高大上毕竟搞太多就会隐藏细节
作者: andy0055 (王昆)   2024-06-02 21:40:00
推 倒数第二行话…写了一堆注解,结果关键的地雷却不写….
作者: gmoz ( This can't do that. )   2024-06-03 10:18:00
注解最大作用就是拿来贴Jira或confluence连结XD
作者: Araiman (阿拉面非阿拉)   2024-06-03 13:52:00
有些事要做过大专案 踩过坑流过泪才能体会了
作者: Lipraxde (Lipraxde)   2024-06-03 15:13:00
"注解不是描述 code 做了什么,而是描述为什么会有这 hack"...不只是 hack,平常写注解本来就该以补充程式码以外的资讯、解释由来为主,看一堆解释底下程式码在做什么操作的注解...当作是在写教学用的 sample code,看着浪费视觉空间
作者: TonyQ (自立而后立人。)   2024-06-03 15:17:00
//这里定义了变量 a=1var a=1; //你不写注解我也知道
作者: GDaaaa   2024-06-03 16:29:00
作者: shooter555 (shooter)   2024-06-03 23:54:00
// 注解是用来说这段垃圾code 是上层交代 不要怪我
作者: becca945 (频果芽子)   2024-06-04 00:16:00
TODO: someone else do
作者: sb8888 (V5)   2024-06-04 13:06:00
我会留着hardcode的代码重构 这样不好吗直接开个v2 这样
作者: fatb (胖逼=口=)   2024-06-04 17:10:00
根据经验不会有时间重构 如果能让你有时间重构 那是PM时间压得不够紧 所以最好还是一次写好尾声部份就同意 最好写得越简单越笨越好 免得前面的大量测试做白工 (虽然一改都还是要重测 但出事就会被放大)
作者: eva19452002 (^^)   2024-06-04 19:30:00
不是说有一派主张不要写注解,只要var和func名称取得好,再加上程式内聚力强,就可以看懂程式在做什么了
作者: brucetu (sec)   2024-06-04 19:57:00
看得懂程式在做什么不一定看得懂为什么要做这件事啊所以才要注解
作者: w0005151 (蓝厅)   2024-06-04 22:41:00
对code有太多理想的人多半没做过大专案
作者: viper9709 (阿达)   2024-06-05 00:37:00
看得懂程式在做什么不一定懂为什么要这样做+1
作者: fatb (胖逼=口=)   2024-06-05 10:04:00
不一定是没做过大专案 还有一种是主管职愿意假日花时间那种
作者: wistful96 (wistful96)   2024-06-07 11:05:00

Links booklink

Contact Us: admin [ a t ] ucptt.com