鄙人前端一枚,几个月前入职了一家传统行业公司,技术栈都比较陈旧,前端开发还是 jquery 手写 dom 的开发方式,我进来之后写的新项目都是使用 vue 写的,但不维护以前的代码。现在有个同事要离职了,就把他以前写的老项目都交给我维护了,我打开一看被这代码秀的一愣一楞的,细细看了之后头皮发麻,手写 dom 拼接 html,大量行内样式夹杂其中:
这位同事年薪 20W+,5 年经验,之前写的都是这种代码,没用过 vue 之类的新技术,nodejs 和 npm 环境还是我帮他装的,我进来之后也教了他一些 vue 的东西,后面在他在新写的 vue 项目中也负责了一些功能,我后来 build 项目的时候报了一个警告,说是有个文件超过了 500Kb,我打开他提交的文件一看,乖乖,一个 vue 文件他洋洋洒洒的写了一万多行,体积达到了 600 多 Kb,细看之后,我又被他的骚代码秀到了:
写的什么玩意?这是对一个布尔值取反的操作,这老哥先判断值是真的还算假的,如果为真则改为假,如果为假则改为真。我寻思这不是 a=!a 一行代码就能搞定的事吗? 后面又随便翻了下,类似的代码出现了好多次。
这同事的 5 年经验是实打实的 5 年经验,一年经验用 5 年的那种,他的技术你要说他烂我还有点想反驳,前面两张图那种代码你们猜他是用什么编辑器写的?你们绝对想不到,他是用 nodepad++写的,没有代码高亮,没有错误提示的 nodepadd++,用 nodepad++能写出这样的代码,我只能称之为神人。
后面又随便翻了下,又翻出来类似这样的,嗯,这其实是一行代码:
接手这样的代码是真的难受,今夜之后,这世界上又多了一个伤心的人。
201
tikazyq 2020-12-17 16:25:06 +08:00
可能是用脚手架工具编译过后生成的
|
202
fengmumu 2020-12-17 16:25:09 +08:00
@Hoshinokozo 所以有时候看到有人一说代码行数多就说是屎山 我就。。。
|
203
BruceLe OP @mrkirkzheng #200 我也懵逼啊,刚才闲着搜了下,那个一万多行的文件里出现了 1500 多个 if
|
204
a4854857 2020-12-17 16:32:56 +08:00
很厉害.写出了只有他一个人能维护的代码
|
205
zypy333 2020-12-17 16:33:10 +08:00
我也接手过屎山,06 年开始写的项目,但是我没重构,感觉如果是局部小范围,还能重构,但是有些屎山,是一开始的架构有问题,重构不如推翻重写
|
206
crazytudou 2020-12-17 16:33:13 +08:00
人生百态
|
207
aloyuu 2020-12-17 16:37:00 +08:00 via Android 5
虽然我离职了,但是你也不用这么在背后用屎山形容我的代码,20 万年薪怎么了,老板觉得我值这个身价
|
208
sanqian 2020-12-17 16:38:05 +08:00
只要代码不是自己维护 谁关心他怎么写 哈哈哈
|
209
SomeoneElseChild 2020-12-17 16:40:27 +08:00
@muzuiget 赞同.这玩意不就是在屎山上继续拉屎就可以了么?
|
210
zhengjieliu1 2020-12-17 16:41:22 +08:00
高手。
|
211
susan0007 2020-12-17 16:42:00 +08:00
这种情况很难理解吗?你都说了传统行业,那就是非互联网行业。有可能人家刚毕业就去了这家公司,有没有人带,没人交流,五年之后和行业脱节了而已,跳出去就好了。
|
212
yaphets666 2020-12-17 16:43:58 +08:00
重构这些代码没意义 都是业务
|
213
niguyi 2020-12-17 16:48:32 +08:00
我寻思码农这个职业 也没有高尚过啊。。。。和快递外卖销售都是一样一种工作而已
|
214
justjy 2020-12-17 16:49:13 +08:00
同情一下楼主,但不建议重构。
重构能产生了什么额外商业价值?无非是自己觉得「代码可读可维护」了,后面接手代码的人如果水平不如楼主,又会进入恶性循环。 |
215
hevi 2020-12-17 16:50:37 +08:00
我当年也接触过这样的代码( jsp ),让我接手的话,只有两条路。
1. 重构(前后分离,我只写前,后怎么屎我都不理) 2. 我跑路 |
217
IsaacYoung 2020-12-17 16:56:46 +08:00
哎 屎山拉屎呗
|
218
nicebird 2020-12-17 16:57:29 +08:00
牛逼
|
219
freeminder 2020-12-17 16:59:49 +08:00
@weifan 这么一看堆的屎山是志在栽棵大树呢
|
220
l00t 2020-12-17 17:02:10 +08:00
@BruceLe #118 老板给他钱又不是因为他代码写得怎么样,是因为他的代码能实现功能,满足业务要求。代码写得再屎,那也是维护者的事,老板需要自己看吗?
|
221
freeminder 2020-12-17 17:05:23 +08:00
@BruceLe 368 行 res 是 null 看来会报错呀;如果 res 不可能是空,364 给的暗示又不对?
|
223
key1088 2020-12-17 17:12:20 +08:00
感觉在讨论砌墙的活
|
224
wqgogogo 2020-12-17 17:20:26 +08:00
惊得我去看了下有没有写这种的代码,不过我后端一枚,有时也要写 JS
|
225
howoldareyou2 2020-12-17 17:21:08 +08:00
怎么了,他用汇编语言写,我更佩服他-->
|
227
Francost 2020-12-17 17:32:44 +08:00
"月薪 2W 只用过 jquery 而且写出这样的代码就有点离谱",一句话里充满了酸和鄙视,只用过 jquery,并且写了一手屎代码,居然都值 2w 。。。
|
228
Valii 2020-12-17 17:34:19 +08:00
为前同事辩护的怕不是自己就是这个水平
|
229
Kirsk 2020-12-17 17:35:11 +08:00 via Android
风气就是这样 你把你重写的贴上来 搬砖工就没话说
|
230
xiaoxinshiwo 2020-12-17 17:41:25 +08:00
|
231
nanxiaobei 2020-12-17 17:43:10 +08:00
怎么岗,我还以为是 5 年 200w+ 呢。。。
|
232
melvin 2020-12-17 17:45:07 +08:00
老板说: 代码啥的不重要 重要的功能好用就行了 [doge]
|
233
rbq123456 2020-12-17 17:45:18 +08:00
@zhang77555 程序员的薪资不和代码挂钩,应该和什么挂钩呢?业务,那不是产品的事情么?
|
234
ily433664 2020-12-17 17:47:05 +08:00
这算啥,我还见过 jsp 里面 java 和 html 代码混合编写的
|
235
Reapper 2020-12-17 17:53:07 +08:00
要不用 jquery 重构一遍?
|
236
leeho 2020-12-17 17:56:51 +08:00
厉害, 不用 code review 的么?
|
237
mark4zhao 2020-12-17 18:11:54 +08:00
Describition 。。。
|
238
yuyu2140 2020-12-17 18:16:31 +08:00
哈哈哈,我司祖传烂代码( 10 多年前的代码,缝缝补补),时至今日每年还能贡献几百甚至上千万的收入,你信吗?
插一句,码农也是个普通职业,辩护也不是堕落,烂代码谁都接手过,每个人都有写过烂代码的时期,希望能平常心看待这样的问题,经历的多了,就见怪不怪了 |
239
cirzear 2020-12-17 18:18:30 +08:00
tql
|
240
chungon 2020-12-17 18:19:11 +08:00
这种屎一样的代码为什么会有这么多人洗?
|
241
duanzhihe 2020-12-17 18:21:35 +08:00
老项目,尤其是 3 、5 年以前的项目代码烂其实很常见,原因有可能是技术更新迭代+维护的人水平参差不齐+业务胡乱改来改去等等原因……
这个哥们后面写的代码的脑回路的确可以看出水平不高,估计就是没有跟上时代…… |
242
zhuweiyou 2020-12-17 18:22:34 +08:00 1
建议先搞清楚情况再说吧,有可能这个代码也是前人留下的.
我也经常维护跟你截图差不多的代码,但是是别人写的啊. 重构是不可能重构的,1.逻辑复杂,2.没有工期. |
243
huichao 2020-12-17 18:25:17 +08:00
读别人的代码是最难受的
|
244
zhang77555 2020-12-17 18:25:20 +08:00
@rbq123456 薪资来源于你代码跑起来后运行的业务所创造的价值,
如果另一个人写了比你更垃圾的代码,但是它承载的业务比你的更值钱,那么从出资方来看,另一个程序员应该拿到比你更多的钱. 薪资和代码质量挂钩是个没法实际操作的事情,比如说从 code review 做起, 那么我猜最终的执行结果就是:只要发现你的代码中有不合公司规范或者效率不够极致的地方,就从你的"代码绩效"中扣钱,而写的好则成了你本身的职责. 我觉得这不是大家希望看到的 |
245
djoiwhud 2020-12-17 18:25:30 +08:00 1
为啥新入职的员工动不动就重构呢?
这代码明明还可以维护。 Vue 重写 jq 的项目,对当前而言可读性是要好很多,注意,仅仅是当前而言。再过三年,没有培训机构培训 Vue 了,换了一个 euV 框架,前端都用 euV,估计你用 Vue 写的代码是一样的被吐槽。我不信这么老的项目还有高频更新。如果不怎么更新了,重构的意义何在? 在我这里,提出要重构这个项目,仅仅是因为看着不爽,一定会被叼一顿。你以为你领导是看这代码不爽同意你重构,他可能仅仅是看到你没啥事情可做,让你保持工作状态罢了。 如果微软 Windows 组和 office 组的员工都像这样热衷重构垃圾代码,那不可能做成项目了。 |
246
menghui9898 2020-12-17 18:29:51 +08:00
> 他是用 nodepad++写的,没有代码高亮,没有错误提示的 nodepadd++,用 nodepad++能写出这样的代码,我只能称之为神人。
看到这句实在没忍住笑喷了 |
247
lambdafate 2020-12-17 18:29:52 +08:00
毫不夸张的说, 我一个后端写的比他好 100 倍, 狗头保命.jpg
|
248
96412hj 2020-12-17 18:34:34 +08:00
@menghui9898 #246 那用 txt 写 java 的呢。。。。
|
249
meiyoumingzi6 2020-12-17 18:44:01 +08:00 via iPhone
不记得在哪看到的了,意思是线上的代码哪怕就是一坨,他也是比你重构的代码有意义的,因为它在线上已经跑了很久了
后来我也就很少喷代码写的烂了, 另外就是这样直接把代码截出来总归不太好吧 |
250
x86 2020-12-17 18:50:34 +08:00 via iPhone
想起之前的同事,刚进公司不久就吐槽一个很老的项目这不行吐槽那不行,给他时间重写就哑巴了
|
251
lovecy 2020-12-17 19:05:30 +08:00 1
@LxExExl 你手上几个新需求还没实现,焦头烂额的时候,老功能出了 BUG 要你修,这时候你也会 shi 山拉 shi,然后跟同事说一句,“又不是不能用”
|
252
kevinwan 2020-12-17 19:09:48 +08:00 via iPhone
我们前端 api 调用代码自动生成的,而且生成工具已开源,可定制生成任意客户端代码
https://github.com/tal-tech/go-zero |
253
kalluwa 2020-12-17 19:11:43 +08:00 1
对所有的程序员抱有敬意,没啥屎山不屎山的,都是打工人,
是山不是山,是水不是水,看山不是山,看水不是水。 祝你好运 |
254
zhlssg 2020-12-17 19:19:38 +08:00 1
我看楼里不少给写代码这老哥洗地的,说实话能写出这代码我觉得最多就值 6k 一个月,不能再多了,拿 25w 一年,是对公司其他前端工程师的侮辱
|
255
netnr 2020-12-17 19:20:33 +08:00 via Android
有必要学习 《程序员的自我修养》 ^O^
|
256
royzxq 2020-12-17 19:23:20 +08:00
这能跑起来我还是得说一句🐂🍺的。。。
另外,跑路吧 |
258
c2const 2020-12-17 19:31:28 +08:00
0.这哥们要么是增加自己的不可替代性,要么他也是接的前人的代码。
1.可能用了混淆工具,如果正规,有版本控制,去看看提交记录,当然也可能被 TA 删了。 2.远古时期的程序员也差不多,不过当时是因为技术够深+几十万行汇编太反人类;现在的业务代码是业务逻辑经常变而且太复杂。 3.打工者而已,面向工位编程。我现在写的代码不多,每个文件内嵌了几万行代码,编译一小时起步,和业务深度耦合,不按照我的小笔记改不了... |
259
IssacTomatoTan 2020-12-17 19:36:19 +08:00 via Android
不重构 只在后面追加 但是追加的地方可以优化就优化 你现在写的代码 以后也是被人鄙视的
|
260
dioxide 2020-12-17 19:42:19 +08:00
自带代码混淆 😄
|
261
woshijidan 2020-12-17 19:44:05 +08:00 via Android
可能不是他写的
|
262
henvm 2020-12-17 20:00:50 +08:00 via Android
@Desiree 如果他这个同事年薪只有 7 万左右,这公司抠门的很,从不涨什么工资。只是走的时候故意告诉他我这么虚高工资,可能提醒楼主千万不要,要低了身价。
|
263
henvm 2020-12-17 20:06:41 +08:00 via Android
@zhlssg 除非在那种不发达的小县城,如果在一,二线城市 6K 招聘想都不用想,现在时代变了,高物价,房价。如果还 996 点话熬出病了,看个病就半个月工资没了。得不偿失。我还是觉得中国与欧美,日本,新加坡整体薪资比较是偏低,低的不是一点点,要不然为什么那么多厉害的人往外跑。
|
264
RayDG 2020-12-17 20:11:56 +08:00
我怎么突然乐观起来了 可怕
|
265
henvm 2020-12-17 20:14:26 +08:00 via Android
@anxiousPumpkin 没有为他辩护吧,只是劝楼主不要去重构吃力不讨好,另外重点是楼主估计谈工资低了,心里不平衡,还是太年轻。如果楼主写的代码很厉害完全可以要价 100 万年薪。现在时代变了
|
266
justfindu 2020-12-17 20:16:55 +08:00
不说这些了 , 最近我们系统一个模块外包出去的, 使用 laravel , 说起来应该还有个框架约束, 结果代码就是远古时代的风格
|
267
henvm 2020-12-17 20:19:23 +08:00 via Android 1
@RayDG 是啊为什么 996 会在 it 行业普遍发生,其实就是中国的 it 从业人员太老实,太嫩了。现在做上门搞点工的工人,干一天随随便便 300+块。上次请人通马桶就是 1 个小时的事情 200 多块,但是自己没工具,嫌脏。我都想做点工。
|
268
henvm 2020-12-17 20:20:49 +08:00 via Android
@justfindu 哈哈,你还想怎么样,外包工资低属于层层克扣。能运行起来就行。要不然就不要外包了,老板也不傻,外包降低成本。
|
269
ylqhust 2020-12-17 20:25:30 +08:00
不建议重构,也不建议跑路。能在屎上做业务也是一种能力。
|
271
cmostuor 2020-12-17 20:39:48 +08:00
@zhlssg 现在的本科毕业生 白菜价收都要 15-25k 了 6k 你确定能招得到人? 要是我宁愿闲着发呆也不去 6k
一个月 流水线工人努力加班都能达到这个价 干的不过是些无脑的体力活 程序员这行除了脑力还是体力的活 要想能胜任这项工作 计算机系的得花 3 年时间读大学 非计算机的的话四、五万学费去培训四个月才可以出来还不过只是会些简单技能的小白而已 |
272
henvm 2020-12-17 20:45:04 +08:00 via Android
@cmostuor 我老家 5 线小县城。现在进工厂最低工资 4000 包吃住了,加班工资另算。不要学历和技能树限制。
|
273
wlgq2 2020-12-17 20:51:58 +08:00 1
你伤害了很多辣鸡程序员的自尊心。
|
274
bbao 2020-12-17 21:05:17 +08:00
[leader 已经决定给我时间重构了,不过我不会看他的 shit 代码逻辑,看的脑壳疼]
兄弟,如果你的 leader 看到你后面 [不过我不会看他的 shit 代码逻辑] 这句话,他一定会说「我刚才说什么,不你不要动代码。」 |
276
CommandZi 2020-12-17 22:38:18 +08:00
酸了,我想转前端~
|
277
echowuhao 2020-12-17 22:39:46 +08:00 1
吐槽人家代码可以。工资这个事情就算了。
人家拿这个钱就有这个能力,跟代码无关。 说回代码,代码这东西,批评人家容易。 问题是你没有当初的环境,仅仅说代码如何如何没啥意义。 |
278
weakish 2020-12-17 23:43:24 +08:00
> 他是用 nodepad++写的,没有代码高亮,没有错误提示的 nodepadd++
不要这样黑 notepad++ 啊,notepad++ 也是有 JSLint 插件的(当然要安装一下),语法高亮更是默认就自带的啊 |
279
HerrDu 2020-12-17 23:58:13 +08:00
看了代码之后,觉的除了对 vue 和 webpack 了解的少之外,代码格式、命名 、逻辑应该没又大问题。
|
280
rbq123456 2020-12-18 00:46:34 +08:00
@zhang77555 ?你说错了吧,程序员的薪资不与代码质量挂钩,难道跟业务挂钩?业务挣不挣钱,并不是程序员能控制的,而代码质量是自己能控制的,你要把你的绩效交给业务来决定?而业务挣钱如何,是由业务本身和运营来决定的,换句话说,你觉得大家是希望把绩效交给运营来决定?另外,在大公司,你管着的只有一亩三分地,用什么来衡量一个程序员的薪资水平,不以代码以什么?
|
281
wangritian 2020-12-18 02:09:35 +08:00
var that = this;
想起抖 Y 一个段子,蓝骑士送达外卖后指着屏幕对开发小哥说,这里加个 that,让它等于 this,然后下面就有权限访问了 该不会。。。[doge] |
282
demoslam 2020-12-18 02:32:11 +08:00
notepad++也有语法高亮 也能装插件啊
|
283
BruceLe OP |
284
zhangjiafan 2020-12-18 15:39:45 +08:00 1
别的不知道,但是这种代码,应该是有工具代码生成器自动生成,我自己的屎山就是很多自动生成的代码,或者直接复制粘贴,没有考虑过复用的代码。业务逻辑一天天的在催,前一秒的功能,下一秒问你改好了没有。我没有那么多时间去考虑复用,也不会去研究内存消耗,更不会去关心代码行数,百度一下复制粘贴。能 ifelse 复制下来的,绝不会考虑与或 且的逻辑符号。每次想去重构,但是几个项目就一个人维护,重构意味着不仅新需求被催着写,还得学习新技术来重构。vue2.0 写习惯了,来了个新人用 vue3,0 的,结果来嘲笑你写的 vue2.0 代码量太多, 其实没多大必要。曾经我也是那个意气风发的严谨高技术水平的程序员。现在我只是能实现业务的搬砖工。现实会把理想吊打的服服帖帖的。看完你的帖子有感而发。
|
285
fishenal 2020-12-18 17:27:39 +08:00
感觉是系统生成的,他是不是用了什么黑科技,手写一万行代码基本不可能,还是用 notepad++
|
286
ncepuzs 2020-12-19 08:12:18 +08:00
什么叫无可取代啊,这就叫(战术后仰
|
287
weakish 2020-12-20 16:10:26 +08:00
@rbq123456 许多公司的奖金很大程度上是和业务挂钩的,项目大火和项目黄了拿到的奖金天上地下。去哪个组某种程度上也可以看成是内部的应聘或者跳槽,考验判断力和运气(就像代码质量相当的人在不同公司的薪资可能差异很大一样)。
|
288
weakish 2020-12-20 16:13:15 +08:00
@BruceLe 那真是神人了……(神人说:(设计台词)我是不会用语法高亮的,用惯了语法高亮,万一将来要换单色墨水屏怎么办)
|
289
leekafai 2020-12-21 15:24:29 +08:00
哇原来真的是人均 20w 起步,我看到有评论说 20w 年薪校招起步了,惊了
|
290
PoetAndPoem 2021-01-27 10:03:20 +08:00
@zzm88104 DOM 吗
|