Soft_Job 板


LINE

※ 引述《justsing (只是唱首歌)》之铭言: : 最近进入一家蛮大的公司 : 才进去没多久已经把目前正在开发中的专案几乎重构过了 : 原因是因为某前辈写的code问题非常多 : 所有变数都用全域变数,导致资料常常出错 : 命名也很爱取那种 : abc1 : abc2 : 这种完全看不出来在干嘛的东西 : 开发完也完全不测试就推到正式branch上 讲到这个我就心有戚戚 最近在公司接手一些案子,这个案子有多厉害 * 用纯 PHP 义大利面方法写 * 无OOP,无框架 * 资料库无正规化、该索引的没索引,不该索引乱索引 * 因为太多专有名词,DB栏位直接用 optA、optB、optC..... optH (option?) * 重覆coding的东西太多 例如查询资料库的部份只有栏位不同,就乾脆直接copy整份程式码,改栏位->存档 (说好的 class、function 呢? 每支程式都在 create connection or die ) 例 get_user edit_user del_user get_article edit_article del_article ... 你他妈每一个 CRUD 就给我写一个档案 (里面99%一样,只栏位不同) * N+1 query,比如先查询产品列表,再在回圈查询每个产品的producer_id (明明 JOIN 一次或 eager loading 就可以办到的东西) * 开发途中才进版控,commit 记录全部 "no message" * 公司把系统某部份再外包给下游接案公司,给PM接洽发包 接案公司心态:交差 程式码收回来之後,PM不懂coding,对方乱写看不懂,现在要维护、加新功能 花更多时间在还技术债,而且对案主还没结案 * 因为外包的关系,所以资料夹里面有好几包,都是独立的一支系统却串在一起 例如後台用某个写法,有自己的library资料夹等; 前台某个功能又自己一包,每个系统各自成一个生态,然後串在一起 : 後来主管们看不下去就请我帮忙改 : 改完後目前系统改善很多 : 但好像也惹得他很不高兴 : 虽然他现在几乎是半冷冻状态 : 但他偶尔只要写个新功能就会产生一堆Bug : 之前跟主管反应过也是不了了之 : 毕竟主管不会写程式,也很难看懂他的问题在哪 : 通常大家遇到这种情形,会怎麽做呢 : 是不是只能快逃了啊 我在进来现在公司以前,公司主管是有直接告诉我 「我们公司现在很多事情没有成型,如果有新的想法的话,可以直接提出」 确实,在进来的时候也讨论了满多的想法,建议导入开发框架跟SA的概念 明明感觉是业界已经非常简单行之有年的东西,却像登天一样难 我真的是活在平行世界吗 可能公司的心态也有差 公司认为简单的东西可以外包减少工程师 loading,结果程式码品质很难去控管 宁愿花一笔钱外包,也不愿意再请人,不就是饮鸩止渴吗? (第二手接案公司赚到钱,结果债是我们在还) 不过现在看起来,是有慢慢在变好啦... 有吧。 回到你的问题 我接手这个专案之後,什麽修改都是假的 到处 include 比乱继承类别还要难 code review,完全不知道变数从哪里开始出现 更别说程式码混着 SQL 跟 js 了 找 PM 要原始的需求,现任 PM 也不太了解 (因为换好几个PM接手) 後来我 refactor 的作法是: 旧程式码直接放一边,在前端把网站点一点,摸一摸 猜他要干麻 把需求反推回去,看着输入的表单,把 schema 推出来 等於是在大便里面挑黄金一样,最後剩下那一点点稀少的 就是最核心的东西 其他都是 a piece of shit bullshit 一边重写,一边SA 想想什麽功能有可能扩充,什麽功能是重覆的 把逻辑抽出来,变得抽象一点,再各自实作 ↑然後你会发现 这些东西不都重覆的可以共用 class or method 吗 那些 copy & paste 重覆的档案是... 大概就是这样吧 重构真的很累,边写你就会边感叹 以前觉得世界奇观要出国才有 结果发现一堆公司的程式码里面也有 (摊手) --
1F:推 TauchK:想插瑶瑶+103/26 19:39
2F:嘘 superbabyer:楼上很糟糕03/26 19:40
--



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.241.170.131
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1523540744.A.6DA.html
3F:推 j0958322080: jan der 04/12 22:00
4F:推 abccbaandy: 所以说什麽专案公司练功快根本害人,练复制贴上的手速 04/12 22:12
5F:→ abccbaandy: 而已吧XD 04/12 22:12
6F:推 Deltaguita: 以前有个人一直叫我去接案公司,学的东西比较多XD 04/12 22:20
7F:→ kalaja: 有同感,不过是饮"鸩"止渴喔。 04/12 22:44
8F:推 newyellow: 接案公司还是要看公司啊 我也有遇过很厉害的 04/12 22:50
9F:推 menshuei: 如果我是老板的话当然外包省钱又有弹性,然後再请一个 04/12 22:54
10F:→ menshuei: 像你这样有能力的员工来扛。 04/12 22:54
这样真的留不住人,在里面的人也会觉得不公平吧
11F:推 bigshawn: 怎麽觉得这情境好熟悉 上层超爱外包 拿回一堆义大利面 04/12 22:58
12F:→ bigshawn: 最後苦的都是底层工程师 04/12 22:59
13F:→ bigshawn: 接案的确学很多 全端 各式语言 硬体规划 DBA全部一手包 04/12 23:01
14F:→ bigshawn: 办 04/12 23:01
15F:→ bigshawn: 不过学到的很多都是旁门左道 04/12 23:01
对未来转职的帮助是真的满有限 外包公司钱赚到了,然後欠了一堆技术债,本公司的工程师来还, 还一还觉得没什麽发展,走人之後,好不容易改一点的东西马上变 legacy 恶性循环
16F:推 supernow: 真的,一手包真的常学到一堆旁门左道 04/13 00:24
17F:推 chuegou: 我看到外包回来的code吓到直接离职 听说後来案子死了 04/13 00:41
18F:推 Ghamu: 有听说外包可以练功 但总觉得很容易学坏 做一些自己coding 04/13 02:51
19F:→ Ghamu: 轻松 维护的人骂干的事 毕竟本质上交差完拿了钱馆你去死 04/13 02:51
20F:→ Ghamu: 话说我看到外包code我也想离职XDDD 04/13 02:52
21F:推 wingture: 04/13 09:39
22F:→ y3k: 外包包到没什麽经验跟责任感的学生 连测都不测就直接丢出来等 04/13 11:11
23F:→ y3k: 指示更是让人吐血...= = 04/13 11:12
大学生专题,满满的既视感 还有我原文里面说的,回圈里面包查询,N+1 query 这种需求是达到了,但明明正确作法应该是 JOIN 或 eager loading 很明显就是网路上 sample code 去 copy 回来再自己改成要的功能 更别说还有什麽 // 先准备一个连线用于查询 这种东西 (连注解都一起copy回来了?
24F:→ pttworld: 外包徵人要小心履历做几个月就丢包的人,很雷 04/13 11:20
25F:→ MOONY135: 义大利面XDDDDD 04/13 12:27
26F:→ MOONY135: 可以问一下前端是php写的吗 如果是要怎样debug比较清爽 04/13 12:28
27F:→ MOONY135: 啊 04/13 12:28
Model, View, Controller MVC 架构 但要注意 controller 一不小心就会写的很脏,还要符合 SOLID principles 现在主流应该是前後端分离,mobile 也可以共用 (小弟不才,应该4j样吧)
28F:推 TitanEric: 好可怕的扣… 04/13 12:48
29F:推 Argos: 不要以为这样就很可怕 事实上到处都是这样的code... 04/13 14:35
30F:→ Argos: 应该这麽讲啦 市面上95%以上你看到的网站 APP 背後code都是 04/13 14:35
31F:→ Argos: 长这样喔! 啾咪~ 04/13 14:36
感谢师兄提点,啾咪
32F:推 johnny94: 心有戚戚焉,而且你会发现有这种 code 的公司不少 04/13 14:50
33F:推 lturtsamuel: 混着SQL跟is? 不怕被sequel inject? 04/13 14:58
34F:→ lturtsamuel: *js 04/13 14:59
35F:→ lturtsamuel: SQL写在js里面就代表後端会直接吃下前端送来的SQL 抖 04/13 15:01
36F:推 senjor: 有些人的做法是给前端送SQL,然後後端filter掉栏位跟指令 04/13 16:10
37F:→ viper9709: 包山包海包... 04/13 23:47
38F:→ AvatarH: 有人碰过外包价比正职薪水高,这样有省道钱吗? 04/14 00:44
这时候就会想说,既然有外包的需求 (例前端、美工) 为何不直接请一个设计师 况且,外包价比正职高,正职也会心里不平衡吧 (烂 code 制造机,结果还赚得比较多,屁股我们在擦)
39F:推 ifreeta1110: 外包当然比正职薪水高,因为正职还有薪水以外的成本 04/14 00:54
40F:推 hellomotogg: 想到一个class里面有一万行等着重构就有点崩溃 04/14 03:25
41F:推 alice822: 怎麽跟我们公司有87%像 04/15 10:24
42F:推 james732: 推 QQ 04/15 18:51
※ 编辑: banqhsia (123.241.170.131), 04/15/2018 22:27:53
43F:推 linquer: 同QQ 87分像+1 04/17 01:04







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

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

TOP