※ 引述《banqhsia (BEN)》之铭言:
: 很多前辈们会建议,要重构前先写测试
: 但是
: 一个万能类别/万能方法/高耦合,要写单元测试,发现整个系统都要写
: 有些 hard code 的 class 还不见得可以 mock
: “人”的问题
: 无解。
BEN兄讲得很好
我看到底下有人提出一个很好的问题
重构、SOLID、设计模式、review、unit test 这些东西做起来既麻烦又没有比较省时
为什么要做?
没有错
敏捷开发的关键是敏捷而不是快
更严格来讲
敏捷开发所谓的快
跟一般认知所谓的开发时程的快
是完全不一样的东西
很多人会把他们混为一谈
包括一堆只会学着念buzzword的老板或PM
开发很灵活
不代表开发会很快
开发很快是指给你个功能你三天就做出来
但就是做出来
什么东西通通都写死
不用架构东西通通一个class搞定
一个method上千行
里面if else巢状大概超过5层
如果使用敏捷开发
有完整unit test、有review、有注重SOLID有用到设计模式
虽然要花两周
但在日后有新需求要改这个部份时
可能只要花一小时
然后花三天的那个要改一个月
这还没谈到bug的多寡
后者出bug的机会肯定是远少于前者
就算出了bug
解bug的难度与所花的时间也远少于前者
大概就是这种感觉
这也是为什么一堆人不愿意用心写程式
1. 你怎么知道未来这模组会不会有新需求?
如果没有新需求,那我干麻花两周在那边东搞西搞?
为了未来那不存在的新需求预作准备?
2. 隔壁小明每个需求来
三天就干完
我还在这边慢慢摸?
老板脸色越来越难看
终于有一天把我叫进去老板办公室
人家小明三天就完成你为何都要一周以上?
能力不足吗?
再这么慢就给我滚吧
3. 随便写写也是领这点钱
认真写也是领这点钱
何必?
4. 出bug?在我工作时碰到算我倒楣啦~
反正我一两年就换间公司
台湾满地职缺老板就没差跪着求我去上班
我们工程师根本不缺工作
那我敢麻做什么鬼测试?浪费时间
基本上好好写程式的诱因太少
大多数的人就不会愿意写好程式
因为写好程式是很花精神花时间花脑力的
是很累人的!
所以这种东西一定要上行下效
上面的人要用力去盯下面好好做好
并且给予合理的时程与支源(比以前加两倍以上时间、让资深花时间带资浅作pair programming)
但如果上面不重视
那你玩clean code、勉捷开发只是找自己麻烦而已
因为企业环境就是逼迫你跳进焦油坑内打滚
你只能趁著还没完全被淹没时赶快再跳到另一个焦油坑
然后又开始在里头挣扎、沉没
时光流转、周而复始
台湾的资讯产业也就渐渐变成了资讯惨业 XDDD
所以
在台湾如果上面管理层没有这些概念
不晓得什么叫好好写程式
也没有作过专业的评估
但你又看了几本书
甚至已经到过了所谓的应许之地
念兹在兹都是美好的程式码
那你只能做几件事
1. 转行上层很重视这个的公司
(有办法的话 最推荐 XD)
2. 在公司内推行
(很累很拼还要会讲话更要会做人尤其不能得罪那些食古不化的老屁股)
3. 自己写code时偶尔顾到,时间紧了就算了,当作功德
(大部份人会选这个,比较不累,但又可以在不影响原本工作的情况下练习)
或是你也可以回去写垃圾code
要知道努力不一定会成功
但不努力肯定会比较轻松
就看你想走哪一条路了