吐槽 5 年经验年薪 20W+前端同事写的屎山代码

2020-12-16 20:36:30 +08:00
 BruceLe

鄙人前端一枚,几个月前入职了一家传统行业公司,技术栈都比较陈旧,前端开发还是 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++能写出这样的代码,我只能称之为神人。

后面又随便翻了下,又翻出来类似这样的,嗯,这其实是一行代码:

接手这样的代码是真的难受,今夜之后,这世界上又多了一个伤心的人。

27900 次点击
所在节点    程序员
290 条回复
fengmumu
2020-12-17 11:32:20 +08:00
插眼,想看一下这个改进后的代码
supuwoerc
2020-12-17 11:33:57 +08:00
懂了 我立马去让领导给我涨到年薪 20W
yolio2003
2020-12-17 11:36:54 +08:00
从王垠的文章中来看,if 应该包裹起来。所以 "这是对一个布尔值取反的操作" 这么写感觉,某个角度看远比 != 好。
whitehack
2020-12-17 11:43:11 +08:00
竟然敢重构...只能说胆子真肥
crackhopper
2020-12-17 11:44:22 +08:00
这种代码写法,猜测你们公司是不是按照代码行数论绩效?哈哈。
cidde
2020-12-17 11:45:25 +08:00
年薪与代码技术无关,成长和陪伴才是年薪的决定性因素~
bk201
2020-12-17 11:45:44 +08:00
又不是不能用
打工人何苦难为打工人
lovecy
2020-12-17 11:49:23 +08:00
我感觉我写的前端代码和这位兄弟差不多。。。。。。虽然我是小后端吧。。
ciddechan
2020-12-17 11:50:09 +08:00
估计后面还有兼容性的问题
zjsxwc
2020-12-17 11:50:30 +08:00
楼主被坑的好惨,什么仇什么怨,居然要维护这种代码。


🤓
Jiangyf
2020-12-17 11:51:04 +08:00
都是打工人,没必要;
在成本和时间的限制下,大环境就是这样,能用就行;
LZ 可以选择技术氛围好的环境,不过除了头部核心部门,基本上都在写业务代码。但最起码环境到位,这样一来对自己编程思想,习惯、风格都有好的影响吧;
no1xsyzy
2020-12-17 11:52:21 +08:00
@teawithlife 按行数定年薪还不每个配置项换一行(笑哭
mxT52CRuqR6o5
2020-12-17 11:56:25 +08:00
你看他一个取反写的这么复杂,其实是因为他不会取反,不知道有这种运算
5 年学习了用最少的技术特性也能实现各种各样不同的简单的复杂的需求的丰富经验
red2dog
2020-12-17 12:02:33 +08:00
过分了啊
PomeloChuan
2020-12-17 12:06:52 +08:00
好代码写起来很难,烂代码写起来也不简单。字符串拼接的 html 可以使用 pug 这样的模板引擎,然后重复的展示隐藏之类的可以抽象化一下
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 用的是中文。
wwk
2020-12-17 12:09:52 +08:00
其实首先得确定这是他写的。一个项目长期迭代,维护者可能更换过很多任。另外就老代码而言,能跑是最重要的。重构需要的成本很高,除了本身开发的成本,时间成本(延误正常迭代),需要测试支持(全方面的回归测试),业务成本(大规模重构可能影响正常业务)。


接手过单文件 1w 行的组件...表示根本不敢大刀阔斧的重构,只夹在敢趁着正常版本迭代,有测试支持的情况下,进行部分重构,除了自己得反复验证,还得求着测试大哥顺便多测测某个功能点。到离职都没重构完。。。交接的估计也得吐槽我,哈哈~
whypool
2020-12-17 12:13:54 +08:00
意思就是这样的辣鸡代码也配 20 万?
sosilver
2020-12-17 12:14:32 +08:00
这可能就是大佬吧,糊一万行也可以 hold 住
agdhole
2020-12-17 12:18:55 +08:00
建议换 angular,用框架来强行规范

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/736148

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX