鄙人前端一枚,几个月前入职了一家传统行业公司,技术栈都比较陈旧,前端开发还是 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++能写出这样的代码,我只能称之为神人。
后面又随便翻了下,又翻出来类似这样的,嗯,这其实是一行代码:
接手这样的代码是真的难受,今夜之后,这世界上又多了一个伤心的人。
![]() | 1 Loserzhu 2020-12-16 20:39:31 +08:00 吐槽代码烂谁都会,写好代码确很难。顺便,同情一下楼主。 |
![]() | 2 pecopeco 2020-12-16 20:41:55 +08:00 via Android 跟我的遭遇差不多,同样一个文件一万多行,不过我还是咬咬牙给重构了,历时接近一个月 |
![]() | 3 dreasky 2020-12-16 20:42:49 +08:00 ![]() 以后接手你代码的人也是和你一样想法的 |
4 weyou 2020-12-16 20:43:05 +08:00 via Android ![]() 等 5 年以后楼主再看看今天自己写的代码,估计心情是一样一样的 |
5 James369 2020-12-16 20:51:47 +08:00 ![]() 你的选择就是:做一只屎克螂,或者继续往上拉一砣。。 |
![]() | 6 18758036350 2020-12-16 20:52:04 +08:00 ![]() 吐槽不牛逼,接手重构真大佬 |
![]() | 7 SupperMary 2020-12-16 20:53:58 +08:00 笑死 |
![]() | 8 zhuangzhuang1988 2020-12-16 20:55:00 +08:00 能用就行. 能给公司赚钱 更好. |
![]() | 9 BruceLe OP |
![]() | 10 DuXing 2020-12-16 20:57:25 +08:00 ![]() FE:面试的时候也没问这些,问了"http 三次握手”、“一个浏览器从输入地址到打开页面都经历了什么”,我回答的都挺好。 |
11 teawithlife 2020-12-16 20:57:28 +08:00 贵司肯定是按照代码行数定年薪的~~ 不过话说最后一张图,vue + element-ui 不是只能这么写么?难道有其他写法? |
12 zhengfan2016 2020-12-16 20:57:28 +08:00 哈哈哈哈心疼 lz |
![]() | 13 joshua7v 2020-12-16 20:57:55 +08:00 没有代码高亮 没有错误提示 一样可以写代码 而且我见过的就挺多这样的 当然他们多数都是很早期的程序员了 工作的代码很难不变成屎山 |
14 malloc2free 2020-12-16 21:03:52 +08:00 有次去参加 hackathon,组到个用类 word 的文本编辑器写前端 h5 的大哥,白底黑字 同样没用框架,同样没有代码高亮错误提示 一言难尽,最难过的 24 小时 |
![]() | 15 BruceLe OP @teawithlife 那张图我是吐槽的是代码的可阅读性,连个换行没有,不同的配置项像下图这样换一下行,可阅读性不是提高很多? |
![]() | 16 Kasumi20 2020-12-16 21:09:04 +08:00 ![]() 不知道楼上嚼什么, 我思量但凡上过 6 年级, 也不会连取反都不会写 |
![]() | 17 scys 2020-12-16 21:10:06 +08:00 培训班的风格 |
18 darknoll 2020-12-16 21:10:55 +08:00 @teawithlife 说明 eslint 都不会用啊 |
19 dji38838c 2020-12-16 21:14:21 +08:00 this.showDescribition Describition 是什么单词 |
![]() | 20 Bijiabo 2020-12-16 21:16:10 +08:00 via iPhone ![]() 根据我的经验,这种人去阿里比较适合。 |
![]() | 23 weifan 2020-12-16 21:26:10 +08:00 ![]() 前人栽树,后人就凉了... |
24 VDimos 2020-12-16 21:29:13 +08:00 via Android 是不是 kpi 用代码行数考核的? |
![]() | 25 aaronlam 2020-12-16 21:40:00 +08:00 。。。这真的很随意 |
![]() | 26 tomychen 2020-12-16 22:01:47 +08:00 这大佬是 C 语言转过来的吧 |
![]() | 27 Akat3uki 2020-12-16 22:19:27 +08:00 就很离谱 |
![]() | 28 Austin2035 2020-12-16 22:25:40 +08:00 ![]() jQuery 就一定不好了么? vue 就很先进了? |
![]() | 29 ryougifujino 2020-12-16 22:28:39 +08:00 边看边笑 |
![]() | 30 hoyixi 2020-12-16 22:30:01 +08:00 ![]() 非科班出身,直接从事前端开发的, 很多都没用最基本的编程素养的。 甚至有些连逻辑思维都够呛。 前两年前端泡沫,不少人冲着薪资就入行了。一个前端,一个 iOS, 一个 Python, 都是比较好”混“的~ |
![]() | 31 love 2020-12-16 22:31:48 +08:00 via Android ![]() 这种就是没有追求的码农,写多少年代码就是一个水平,对编程没兴趣的人干这行就是这样,这种人到处都是 |
33 billjobs 2020-12-16 22:36:09 +08:00 ![]() 5 年 20W+本来就说明水平不行啊,写成这样很奇怪吗 |
![]() | 34 ianva 2020-12-16 22:40:24 +08:00 想看楼主自己的代码,就是好奇 |
![]() | 35 9LCRwvU14033RHJo 2020-12-16 22:48:39 +08:00 是不是没有 code review ? |
![]() | 36 gbin 2020-12-16 23:00:08 +08:00 via Android 这代码写得确实辣鸡,楼上没必要辩解。 |
![]() | 38 elfive 2020-12-16 23:01:54 +08:00 via iPhone 所以说,技术最不值钱。 技术钻研再透彻,写出的代码最牛逼,也只是个为别人(老板、甲方)写代码的。 |
![]() | 40 fuis 2020-12-16 23:09:40 +08:00 毕竟这个钱也就招这样的人 |
![]() | 41 Tink PRO 又不是不能用 |
![]() | 42 BruceLe OP @billjobs 我想表达的是他的工作经验和技术水平达不到这个薪资的水平,他实际薪资 25W+,月薪 2W 多了,月薪 2W 只会 jquery 就有点离谱 |
![]() | 43 BruceLe OP |
![]() | 44 ianva 2020-12-16 23:34:30 +08:00 上个开源项目看看吧,这代码未来挺危险的,一个文件超过 300 行时,组件和数据的交互层,业务逻辑层都在一起,看不到数据的模型,业务数据和交互状态交织在一起 |
![]() | 45 anguiao 2020-12-16 23:41:19 +08:00 via Android 这个 if-else 可还行,严重怀疑是故意的,正常人写不出这样的东西。 |
![]() | 46 duola 2020-12-16 23:58:23 +08:00 反正公司不敢炒了他。 |
![]() | 48 ianva 2020-12-17 00:08:20 +08:00 楼主还是虚心一点,这个重构也许是个轮回 |
49 cmostuor 2020-12-17 00:43:54 +08:00 不得不说这么多的 if else 看得我要崩溃 github 在垃圾的代码都比这要好看且性能好 |
50 caaaalabash 2020-12-17 00:49:11 +08:00 建议别重构。。。 |
51 mxT52CRuqR6o5 2020-12-17 00:53:15 +08:00 via Android 你让 1 年同样技术水平的新手绝对做不完这个需求的,1w 行的单文件代码 1 年经验的绝对 hold 不住的 5 年是实打实的 5 年,只不过是用 0 编程思想歪技术路线不适合的开发工具也能顺利的把需求实现的实打实 5 年经验 |
52 mxT52CRuqR6o5 2020-12-17 00:55:49 +08:00 via Android ![]() 就好比一颗长了 5 年的树,你是竖着长的,他是横着长的 |
53 henvm 2020-12-17 01:13:06 +08:00 我觉得楼主可以 吐槽别人 吐槽 5 年经验写的屎山代码,但是不能说人家不配这个年薪 20W+,难道楼主不该反思自己要价太低了吗?人家的工资是自己谈的自己慢慢涨的。 |
54 henvm 2020-12-17 01:16:19 +08:00 我觉得吐槽别人多年经验没学到东西或者没有长进可以,但是不能去吐槽人家拿的工资多少问题。如果自己觉得别人不如我而工资又高过我不爽,这个及时你拿到公司台面上说,公司降了他工资也不会涨你工资,即时涨了这种直接损人利己的利益还是算了。应该反思自己这么多年来是不是工资要低了。 |
55 henvm 2020-12-17 01:21:38 +08:00 @billjobs 你说到了重点了,可能人家刚进去工资也不高,20W+是慢慢涨上去的,而且这 20W+ 其实不多,很多一线 IT 公司做了 5 年远远高于这个数目的不要太多。 |
![]() | 56 20015jjw 2020-12-17 01:24:42 +08:00 via Android 看吐 |
![]() | 57 ByZHkc3 2020-12-17 01:44:04 +08:00 过份了 |
![]() | 58 q447643445 2020-12-17 02:33:52 +08:00 别人看你的代码也是这种感觉. |
59 anxiousPumpkin 2020-12-17 02:56:13 +08:00 ![]() 代码能写成这样,说明本身就敷衍了事不负责任。就这种人楼上还有人在为他辩护,yygq 楼主,真是惊了。 |
![]() | 60 akira 2020-12-17 03:04:08 +08:00 用 notepad 能写的这么整齐也是不容易了啊。。。 能实现业务的代码才是好代码 |
![]() | 61 ligiggy 2020-12-17 10:15:16 +08:00 吐槽完了,心情好点了吗?有这种人的存在,也是再提醒你,技术一天天在更新,写代码就要不断的学习。 |
![]() | 62 xrr2016 2020-12-17 10:19:59 +08:00 哈哈哈,这也太坑了吧 |
![]() | 63 zhangdawei 2020-12-17 10:21:10 +08:00 年薪不管,吐槽代码就好了, |
![]() | 64 HannibaI 2020-12-17 10:23:23 +08:00 ![]() @anxiousPumpkin 吃惊+1,全部 B 了,一群 SB |
![]() | 65 KouShuiYu 2020-12-17 10:31:13 +08:00 代码写的烂还要被接收的人鞭尸 |
![]() | 66 abelmakihara 2020-12-17 10:33:33 +08:00 这确实写的很烂啊 反正我是不能接受 像这种又没什么特别的逻辑 还滥用$forceUpdate 也很奇葩了吧 除了 angularjs 的时候被迫经常使用强制刷新 vue/react/angular2 以后没用过 |
67 method 2020-12-17 10:37:35 +08:00 他是烂。六字真经。 |
![]() | 69 xiaomu8 2020-12-17 10:48:20 +08:00 你理解的工资定义跟你老板理解的工资定义是不一样的,毕竟发工资的是老板 所以也没啥配不配的事,人家实现了老板的价值。 |
70 sunwang 2020-12-17 10:49:09 +08:00 维护这种代码相当难受,同情楼主 |
![]() | 71 jsjgjbzhang 2020-12-17 10:53:56 +08:00 跟我一个同事差不多,复杂业务做不了,简单业务代码写的既漂亮又精简,还时不时拿出来闻一下 |
![]() | 72 clxtmdb 2020-12-17 11:00:21 +08:00 虽然不是前端,但是还要同情一波(不过先等我笑完) |
![]() | 73 2379920898 2020-12-17 11:09:16 +08:00 前有 996,后有狮山代码。。你说是公司的错,还是程序员职业操守的错呢 |
![]() | 74 JamesR 2020-12-17 11:15:05 +08:00 是不是干外包的?外包的关键是干活要快。 |
![]() | 75 fend 2020-12-17 11:16:55 +08:00 我笑了 希望各位 hxd 永远见不到这种辣鸡代码 |
![]() | 76 YoRolling 2020-12-17 11:18:27 +08:00 在深圳么,在深圳让我来, 给我同样的薪水我可以写出不那么屎的代码,至少咱也 "精通" vuejs 常规操作。 手动狗头 |
![]() | 77 tianhei826 2020-12-17 11:21:38 +08:00 害,当你花很多时间看懂前任写的一堆面向过程的代码后,你也不想把业务逻辑抽出来。就干脆让屎更屎一些。 见过 5W 多行的 SP 吗其中还调用的 package 看到你崩溃 |
![]() | 78 Stlin 2020-12-17 11:23:28 +08:00 看着真糟心,不知道楼主要不要重构,同情一波 |
79 leeguo 2020-12-17 11:23:30 +08:00 又不是不能用 |
![]() | 80 litujin1123 2020-12-17 11:25:41 +08:00 @henvm 楼主就是觉得别人比他菜,然后工资高他很多而不爽,毕竟第一份工作 2k |
81 fengmumu 2020-12-17 11:32:20 +08:00 插眼,想看一下这个改进后的代码 |
![]() | 82 supuwoerc 2020-12-17 11:33:57 +08:00 ![]() 懂了 我立马去让领导给我涨到年薪 20W |
![]() | 84 whitehack 2020-12-17 11:43:11 +08:00 竟然敢重构...只能说胆子真肥 |
85 crackhopper 2020-12-17 11:44:22 +08:00 这种代码写法,猜测你们公司是不是按照代码行数论绩效?哈哈。 |
86 cidde 2020-12-17 11:45:25 +08:00 年薪与代码技术无关,成长和陪伴才是年薪的决定性因素~ |
![]() | 87 bk201 202-12-17 11:45:44 +08:00 又不是不能用 打工人何苦难为打工人 |
![]() | 88 lovecy 2020-12-17 11:49:23 +08:00 我感觉我写的前端代码和这位兄弟差不多。。。。。。虽然我是小后端吧。。 |
89 ciddechan 2020-12-17 11:50:09 +08:00 估计后面还有兼容性的问题 |
![]() | 90 zjsxwc 2020-12-17 11:50:30 +08:00 楼主被坑的好惨,什么仇什么怨,居然要维护这种代码。 |
![]() | 91 Jiangyf 2020-12-17 11:51:04 +08:00 都是打工人,没必要; 在成本和时间的限制下,大环境就是这样,能用就行; LZ 可以选择技术氛围好的环境,不过除了头部核心部门,基本上都在写业务代码。但最起码环境到位,这样一来对自己编程思想,习惯、风格都有好的影响吧; |
![]() | 92 no1xsyzy 2020-12-17 11:52:21 +08:00 @teawithlife 按行数定年薪还不每个配置项换一行(笑哭 |
93 mxT52CRuqR6o5 2020-12-17 11:56:25 +08:00 ![]() 你看他一个取反写的这么复杂,其实是因为他不会取反,不知道有这种运算 5 年学习了用最少的技术特性也能实现各种各样不同的简单的复杂的需求的丰富经验 |
![]() | 94 red2dog 2020-12-17 12:02:33 +08:00 过分了啊 |
95 PomeloChuan 2020-12-17 12:06:52 +08:00 好代码写起来很难,烂代码写起来也不简单。字符串拼接的 html 可以使用 pug 这样的模板引擎,然后重复的展示隐藏之类的可以抽象化一下 |
![]() | 96 sybb 2020-12-17 12:08:13 +08:00 ![]() 嘿 类似经历!!!!趁机吐槽一下!!!!!! 我的新领导,前端负责人。刚从鹅厂出来的 30 多岁老程序员了,年薪肯定不用说, 但是写的代码真的是得说一说了!! 以前没写过 vue react ts 这类不能说是新东西的框架和规范, 罗列以下几点: - 用的 sublime,不装 eslint tslint prettier 等代码规范工具 每次我们拉代码下来 都是一堆黄色警告,之前在我们的委婉要求下装了 eslint, 说是项目里全是报错,又给卸了。。。 - 不会 ts,一个 any 一把梭!!! - 代码里要设置 key 作为标识总是用中文作为 key 值,比如 user.type = “管理员” 。 - 想要把某块功能的右键菜单封装一下,结果一个方法写了 1000+行(配置的数据类型全是 any,配置的数据格式还不一样。。) - git 只会用 sourcetree, 曾多次在主仓库覆盖我们的代码。 - git commit message 不规范 ,经常写"no message",甚至还写过”what the fuck“。。 - git 打 tag 用的是中文。 |
![]() | 97 wwk 2020-12-17 12:09:52 +08:00 其实首先得确定这是他写的。一个项目长期迭代,维护者可能更换过很多任。另外就老代码而言,能跑是最重要的。重构需要的成本很高,除了本身开发的成本,时间成本(延误正常迭代),需要测试支持(全方面的回归测试),业务成本(大规模重构可能影响正常业务)。 接手过单文件 1w 行的组件...表示根本不敢大刀阔斧的重构,只夹在敢趁着正常版本迭代,有测试支持的情况下,进行部分重构,除了自己得反复验证,还得求着测试大哥顺便多测测某个功能点。到离职都没重构完。。。交接的估计也得吐槽我,哈哈~ |
![]() | 98 whypool 2020-12-17 12:13:54 +08:00 via Android 意思就是这样的辣鸡代码也配 20 万? |
99 sosilver 2020-12-17 12:14:32 +08:00 via Android 这可能就是大佬吧,糊一万行也可以 hold 住 |
![]() | 100 agdhole 2020-12-17 12:18:55 +08:00 建议换 angular,用框架来强行规范 |