鄙人前端一枚,几个月前入职了一家传统行业公司,技术栈都比较陈旧,前端开发还是 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++能写出这样的代码,我只能称之为神人。
后面又随便翻了下,又翻出来类似这样的,嗯,这其实是一行代码:
接手这样的代码是真的难受,今夜之后,这世界上又多了一个伤心的人。
101
muzuiget 2020-12-17 12:21:56 +08:00 4
又不是不能用,建议别重构,继续堆屎山,不然出问题锅肯定是你背的。
|
102
l00t 2020-12-17 12:23:41 +08:00
又不是不能用。能实现业务满足需求不?能,那就完事了。屎山糊糊还能用,一招鲜吃遍天啊。
|
103
paopjian 2020-12-17 12:25:24 +08:00
屎山看看就得了,千万别动
|
104
johnsona 2020-12-17 12:27:43 +08:00 via iPhone
不要窝里斗,几个钱啊,你发的,你准备写多久啊
|
105
matatabi 2020-12-17 12:30:18 +08:00
老板又不管你代码写的规不规范,只要你按时按量完成工作,写出来的功能没 bug,产出大于老板的期望值,那你就好程序员
|
106
hantsy 2020-12-17 12:30:36 +08:00
重构吧,恰好 Refactoring 第二版本用 JS 写的,照着实践一下。
|
107
Felldeadbird 2020-12-17 12:40:40 +08:00
羡慕,请问贵司还招人吗?
|
108
shenyu1996 2020-12-17 12:40:52 +08:00 via Android
是我就跑路了 这谁顶得住啊 根本没法 debug 啊
|
109
viiii 2020-12-17 12:48:39 +08:00 via Android
看完突然感觉自己也没那么菜了,就是刚吃完饭笑的太猛不利于消化。。。
|
110
huobazi 2020-12-17 12:49:13 +08:00
要不,推到重来一下? O(∩_∩)O
|
111
zzm88104 2020-12-17 12:50:33 +08:00 via iPhone 5
他掌握了别人取代不了他的精髓。
|
112
titan2006 2020-12-17 12:52:07 +08:00 via iPhone
不影响用就行了 每个人逻辑不一样 说不定你写的代码别人看着也不习惯
|
113
frankkai 2020-12-17 12:53:58 +08:00 via iPhone
职场从来都不缺抱怨者,缺的是改变这种不好的人
|
114
gaodeng 2020-12-17 12:54:14 +08:00
都是打工人, 何必挖苦要离职的同事呢。就算你花时间把他的代码全部重新写了,那又产生了什么额外价值了呢。
|
115
QingStone 2020-12-17 13:01:02 +08:00 via iPhone
“一个 vue 文件他洋洋洒洒的写了一万多行”
这个情节过于恐怖,这种项目接手起来,真的痛苦😖 |
116
Dogtler 2020-12-17 13:01:02 +08:00
又不是不能用,我老大就老写这种代码 从头到尾 我都没说过他、
|
119
xmx12138 2020-12-17 13:02:37 +08:00 5
好家伙,我赚的比他少多了,代码写的也比他好。哭哭
|
120
KuroNekoFan 2020-12-17 13:05:04 +08:00
"又不是不能用"
"要啥自行车" |
121
Nicoco 2020-12-17 13:07:15 +08:00
快跑
|
122
wangbudong 2020-12-17 13:16:40 +08:00
又不是不能用
|
123
zhang77555 2020-12-17 13:32:16 +08:00 3
为啥好多程序员还是没理解, 代码写得好这件事本身并没有价值啊
有价值的始终是业务,一个更懂业务写出来的代码刚好够用的程序员 和 一个代码写的很好但是其他事情都不关心的程序员 对于公司来说,哪个价值更大? 吐槽代码写的烂完全赞同, 但是和薪资挂钩 duck 不必 |
124
bbao 2020-12-17 13:35:56 +08:00 1
有 ssh 刚出来嘲讽 jsp servlet,数据库用 jdbc 那味儿来
|
125
angith 2020-12-17 13:40:19 +08:00
能写 1w+ 行也是可以
|
126
huiliyi 2020-12-17 13:43:02 +08:00
取反不会写挺离谱的
|
127
PEAL 2020-12-17 13:44:16 +08:00
这刚好实现了 [在职场中让自己变得不可替代] 这一条
|
128
amdhcwte 2020-12-17 13:45:17 +08:00
程序员不是都这样啊?!
|
129
parthenon2007 2020-12-17 13:46:54 +08:00 3
@zhang77555 不同意。
> 有价值的始终是业务,一个更懂业务写出来的代码刚好够用的程序员 和 一个代码写的很好但是其他事情都不关心的程序员 对于公司来说,哪个价值更大? 为什么代码写得很好得程序员就不能更懂业务?懂业务跟把代码写好其实不冲突。 每个人都要有“尽量给别人添麻烦”的觉悟,应该尽自己最大的可能将代码写好。你想象一下,你的一个同事离职了,公司让你接手他写得跟屎一样的代码,到时你是什么感受?万一碰到紧急的 Bug,你整个人都要爆炸了! 代码写得烂其实没什么,几乎所有人都是从那个时候过来的。但代码质量多年都没有长进,还心安理得,就说不过去了。 |
130
dynastysea 2020-12-17 13:50:38 +08:00 20
就这种人 v2 还有一堆人为他辩护,可见码农这个行业已经堕落到何种程度了
|
131
ldlood 2020-12-17 13:53:01 +08:00
真的很鄙视这种网上贴别人代码,然后一顿批评的操作
有什么不满就现实中提出了,但是你又没用那个勇气,除了给自己在网上找点认同感,还有啥? 别老盯着别人代码看,别人工资拿的比你高,看下别人其他方面 沟通能力 /为人处世能力 /领导能力..... |
132
Hoshinokozo 2020-12-17 13:53:39 +08:00
确实挺恶心的,以我的经验一个 vue 文件代码超过一千行维护起来就比较困难了,找个问题要上下来回翻,所以我自己的项目代码要是超过了一千行我肯定是会考虑拆分成不同的组件的,vue3 的 composition API 也是着重改善了这点,我现在有点理解那些反对 vue3 的都是些什么人了。
|
133
stillsilly 2020-12-17 13:55:55 +08:00
hhhhhhh 我在喝奶茶 差一点笑喷了
|
134
stillsilly 2020-12-17 13:57:43 +08:00
@teawithlife
属性多的时候要换行,一行一个属性 |
135
rykinia 2020-12-17 13:58:13 +08:00
楼主,可以问问在哪个城市吗,我觉得我比你同事强,想看看能不能去那边发展
|
136
zhang77555 2020-12-17 13:59:14 +08:00
@parthenon2007 我没有说这两件事是冲突的
我想表达的意思是 "薪资"不考虑外在因素的情况下直接挂钩的东西是"你的价值", "写代码的能力"只是"你的价值"的一部分,而且占比不一定很高 |
137
xizon 2020-12-17 14:01:19 +08:00 7
楼主应该工作年限不到 5 年,才会那么”不爽“。都是打工的,满足老板的需求,你就是最棒的,不管用什么写法。大厂有大厂的要求,小公司有小公司的要求,最终都是生意人,你不爽可以提涨工资或者换一家,没人会阻拦的。职场抱怨没有用,老板不看你脸色,他要完成他的业务,而不是盯着看你怎么写代码。自己自由职业,打工创业都搞过,明明只是做界面 UI 的,面试也从来没有面试过所谓的前端或者后端开发,因为”需求“,进几个公司后死活从 UI 变成暂时不搞 UI,前端后端啥都搞,工作还算开心,因为觉得有意思才自学自弄。至于钱,几千一两万一个月也拿过,要说技术,我没有认真学过底层,就是有啥需求学啥用啥,我觉得编程这件事,我真的很屎。但是我不羡慕嫉妒别人编程有多厉害或者拿多少薪资,因为我真 TMD 就是一个编程爱好变成了老板的需求~ 有空做 UI,没空做前后端。仅此而已,我开心~~ 重要的是老板赚钱了也开心!
|
138
leemove 2020-12-17 14:01:27 +08:00
有那个味了 哈哈哈哈哈哈
|
139
fengmumu 2020-12-17 14:05:29 +08:00
@Hoshinokozo 因为行数做拆分不合理吧,拆分了也需要打开多个页面来回看啊,而且还需要各种传值。。。 另外拆分的依据不是根据功能点来做的吗
|
140
stdout 2020-12-17 14:07:01 +08:00
哈哈,等你还工作几年,你的心态估计一样。快速出活才行。
|
141
bzw875 2020-12-17 14:07:08 +08:00
要我接手这种代码,要么我打他一顿,要么离职。他就是一个被学习不了新技术和框架,被时代抛弃的人,活在 jquery 时代。觉得他可恨又可怜
|
142
manwei6341 2020-12-17 14:08:38 +08:00 1
很有可能是机器生成的。
|
143
towry 2020-12-17 14:09:19 +08:00
感觉你们的老板有点萌,有点可爱。
|
144
sevenzhou1218 2020-12-17 14:12:03 +08:00
前端浮躁名不虚传。我今天看昨天的代码也觉得是一坨屎。另外,你咋不想想为什么你能和这种人做同事呢?
|
145
Hoshinokozo 2020-12-17 14:14:07 +08:00
@fengmumu 合不合理要结合实际情况,一般来说是根据功能点拆分,但是如果一个功能点代码太长也是可以拆的,例如一个长表单也是可以拆成几个子表单的,拆分后的组件当然也需要来回看,但是看一个几千行的组件和看多个几百喊得组件,后者体验要好得多。
|
146
johnnyNg 2020-12-17 14:14:50 +08:00 2
楼主,我给你说个更气的,他离职了,意味这他现在新工作薪资至少是 30w 的水平了
|
147
durban126 2020-12-17 14:16:34 +08:00 1
你这文章写的,够好多人批你的了
要考虑现实 现实就是老板要的是能用,具体谁来维护老板不关心 就算这个代码烂,说实话,没觉得烂,反而看着清晰易懂 只是大家写代码的风格不同罢了,如果你们公司就这一个开发的话,能写 5 年而且效率和产出都比你用 vue 牛的话我觉得这也是能力比较强的,没有什么烂不烂的 |
148
CodeCodeStudy 2020-12-17 14:22:48 +08:00
行数够多的,绩效考核肯定不错
|
149
ervqq 2020-12-17 14:24:23 +08:00
我司 7000 多行的业务统计逻辑写在数据库存储过程的,但是一直在用没有出任何问题,所以我就算看到都不会碰佢,整理个计算流程图出来就算了
|
150
SHENGXINKAI 2020-12-17 14:24:50 +08:00
这就叫水平;
|
151
RJH 2020-12-17 14:26:07 +08:00
能力不一定会与薪酬挂钩,薪酬的核心评估还是当初的面试表现+年度述职怎么吹自己干的活(反正领导不会检查代码,只要功能不出错就可以了)
|
152
tangtaorong 2020-12-17 14:27:31 +08:00
当有个要命的外包客户和老板在催你交货的时候,低成本的代码只要几个个小时;严谨合理、有前瞻的代码需要几天。客户也不懂代码,老板也不懂代码,你会选择哪种方式?
|
153
LewisW 2020-12-17 14:29:00 +08:00
还是太年轻 多干几年你根本就不会去 care 这种事了。。
|
154
wanguorui123 2020-12-17 14:36:29 +08:00
一篇 SQL,函数名比一句话还长,变量名 a1.a2,a3,这些我都见过
|
155
fengmumu 2020-12-17 14:37:29 +08:00
@Hoshinokozo 前面同意,后面不是很同意,算是每个人不同的看法吧,比如一个长表单拆分成多个子表单,当时的业务是表单之间相互不关联,每个子表单自治,然后后面某几个之间有依赖关系,这时候改起来就很难受了,甚至要重写就算不重写 也是各种传递和引用,还不如一直写在一起呢,
小声逼逼: 不认为拆分成多个小文件是很好的事情,如果是做一个抽象的功能,把功能点拆分,然后引用比较合理,如果和业务挂钩,早早拆分,不但不利于后面人的维护也不是利于后面功能扩展(你只能给你预见到的功能留口子,但是你架不住产品提骚需求啊)。所以我总觉得和业务相关的少做优化,拆分的话尽可能的少,一切以后面人可以方便理解维护为主,代码的优雅处于第二位 |
156
Desiree 2020-12-17 14:38:11 +08:00
主要是,你怎么会知道同事的工资的,职场大忌啊....
|
158
KuroNekoFan 2020-12-17 14:40:43 +08:00 via iPhone
@tangtaorong 写出这种代码的人时间充裕了也不会去优化 /拆分的,因为 1.一开始就没有进行适当代码划分的想法,2.代码堆到这个长度,优化成本已经很高
|
160
zooeymango 2020-12-17 14:54:42 +08:00
我咋看不见图啊,让我也康康,说实话如果不是有良好习惯不断学习和重构,前端项目就是很容易变成屎山,因为总会碰上要求快速出活不考虑其他的时候,可能你的前同事就是这种迅速堆积代码不愿意花时间重构的人,当然就是苦了你了,心疼你
|
161
huifer 2020-12-17 14:57:07 +08:00
等你的五年
|
162
crasa 2020-12-17 14:58:57 +08:00
你没见过一个系统就一个 main 函数的
|
163
dswyzx 2020-12-17 15:04:01 +08:00
啊我有个同事在职期间天天叫嚣烂代码破架构.嚷嚷着重写.然后一个功能的重写写完还没上线就跑路了,然后我接手一看好家伙.五十步笑百步罢.
|
164
zunceng 2020-12-17 15:05:40 +08:00
git blame 用好 可能是他上一代写的
|
165
helloworldgo 2020-12-17 15:10:11 +08:00
@zunceng 哈哈 有可能,他离职应该是忍受不了了
|
166
sonice 2020-12-17 15:13:43 +08:00
面向工位编程,让自己的工位无法取代。
|
167
azcvcza 2020-12-17 15:14:58 +08:00
在老板看来,前端只要不白屏,不报错,完美还原设计稿就行了
|
168
youla 2020-12-17 15:15:29 +08:00
越来越有信心了。
|
170
lbp0200 2020-12-17 15:16:29 +08:00
工资不是按照代码行数计算的吗?
|
171
lights 2020-12-17 15:19:58 +08:00
|
172
LxExExl 2020-12-17 15:20:20 +08:00 1
看了回复不知道说什么
我觉得从理想出发 还是抱着工匠精神做事吧 从现实出发建议赶紧跳槽 去有真正工程师文化 写有质量代码的公司 不给别人留屎山 也不容易接触到屎山 |
173
wennew 2020-12-17 15:20:56 +08:00
开口闭口码农,还扯什么堕落呢,还酸别人拿 20 多万,屎盆子代码谁没改过,自己都说传统行业了,和国企一球样,要拿高薪根本不是只靠写代码就能办到的。
|
174
LxExExl 2020-12-17 15:21:27 +08:00 6
我还是想说 在座的各位有一个算一个 说又不是不能用的 都是垃圾!
现状改不了是改不了 价值观都要扭曲比烂了吗? |
175
lights 2020-12-17 15:22:16 +08:00
讲道理,业务的确是最重要的,技术的确只是辅助。
但打游戏的都知道要辅助,真刀真枪的花钱开公司怎么就这么不注重辅助呢?真的开了眼 |
176
x2009again 2020-12-17 15:24:05 +08:00
其实我看了下就是用法的问题,因为 vue 确实会没有了这种拼 html 的代码,楼主用惯了 vue,看不了这种代码了。不过我觉得如果用下模板会简洁点。至于 a=!a 的确实是简洁点,但是还不至于那么垃圾。多点包容把,我看朋友截图发代码有人表名、变量名、类文件名都有中文的
|
177
cmostuor 2020-12-17 15:25:23 +08:00
@dynastysea 现在的写代码的很多和流水线工人一样
|
178
lidashuang 2020-12-17 15:30:28 +08:00
谁最后动的就赖谁 #运维
|
179
mougua 2020-12-17 15:35:26 +08:00
这叫意识流代码(手动狗头
|
180
noyidoit 2020-12-17 15:36:35 +08:00
不会取反太离谱,应该是别有用心
|
181
Hoshinokozo 2020-12-17 15:37:19 +08:00
@fengmumu 再🐮×的代码和设计模式也经不起产品乱提需求,我不是说超过一千行就硬要拆,能不能拆还是要结合业务本身的,你自己写的代码你自己当然要有一个预期,能不能拆,业务之后会不会变动,分拆之后代码的复杂度是增加了还是减少了,这都需要有一个大致的预期,当然超出预期的就管不了了。
|
182
charlie21 2020-12-17 15:37:59 +08:00 3
吐槽代码质量可以
把代码质量和收入 20 万联系起来就不对了。影响收入的因素有很多嘛 若强行联系,只能体现你自己最廉价的骄傲 |
183
iFollow 2020-12-17 15:38:47 +08:00
布尔值取反用 if else 也有可能是为了方便调试时插入 log ……
|
184
charlie21 2020-12-17 15:44:57 +08:00 3
还是学习一个 对互联网来说,重构是政治斗争和大清洗的重要手段,尤其面向业务编程的公司和码农。
https://www.zhihu.com/question/434704940/answer/1630300574 |
185
dynastysea 2020-12-17 15:45:25 +08:00
@wennew 20 多万很多么。。。有什么好酸的。。五年拿 20 多万我真瞧不起。现在一线互联网公司应届本科生都比这高,当然也写不出这种屎一样的代码。另外不知道你说的高薪是多高?反正写代码拿高薪的我见过太多
|
186
Desiree 2020-12-17 15:46:11 +08:00 2
楼主有点像那种刚毕业的学生,满腔热血说要改变什么什么,但是看到一些不好的现状就各种埋怨,都不知道自己跟真正的技术大牛差几个维度,你既然愿意去这种传统行业的公司,而不去技术氛围好一点的地方,你就没必要这样子吐槽,先想想自己技术是不是有能力这样子吐槽别人,而且拿工资多少评判技术能力本身就很不客观,别人拿多少工资又不是服务你的,老板发工资,啥都没说,你在这 BB,说别人代码垃圾,你想想,如果你的同事也这样吐槽你,你会是什么感受,有能力谈重构,你先去大厂看看什么叫山外有山,而不是在网上嗮优越感
|
187
darknoll 2020-12-17 15:49:56 +08:00
楼主,建议你抓紧时间干,重构代码,重构完之后的代码叫老的为难,再慢慢卷走那个老的。
说实话,我也觉得公司有些老油条仗着自己业务熟,不学甚至抵触新技术,非常反感这种。 |
188
eric96 2020-12-17 15:51:25 +08:00
应届都写不出这种 shit code
|
189
wellsc 2020-12-17 15:51:42 +08:00
你写过 golang 吗
|
191
AndyAO 2020-12-17 15:55:01 +08:00
看了之后感觉特别痛心,这是一个很努力的人,但是我认为他缺乏一些正确的学习方法.
不过这就是这个行业的现状,有大量的人是靠自己摸索试错进步的,所以他们对这个行业的进步几乎没有感觉. 如果楼主对此感到有兴趣,可以去看看<软件困局>这本书. 如果他愿意听我说几句,那么我推荐他多看一些软件方法学和软件工程的书籍,多去读一读别人的代码,尤其是那些好的代码. |
192
liuhuihao 2020-12-17 15:55:21 +08:00
我只想说,所有说"代码烂就烂了,能用就行"的都是垃圾,不配当一个程序员。
挣多少钱放一边不说,做事一点的责任心都没有。 |
193
oamu 2020-12-17 15:56:25 +08:00
话说我还见过一个页面全是 div,中间变量命名都是 data1 、data2 、data3……这样的代码
|
194
zhw2590582 2020-12-17 16:03:00 +08:00
假如我是楼主,估计真得哭出来了,太痛苦了
|
195
charlie21 2020-12-17 16:07:27 +08:00
多学技术 少吹逼 更少自夸(省得被人当枪使)多看人事 没啥新鲜的
很多事情人们都讳莫如深,基本原理是 当“资源”短缺的时候会发生什么 就公司而言,是吧,哈哈,没啥新鲜的,人都离职了 你能怎样么 就这个帖子里你遇见的 shit code 而言,你的注意力资源不应该被 shit code 占用,所以最好不要重构它 这里有一个讨论 如何对待能运行但写得很难看的旧代码 https://www.reddit.com/r/PHP/comments/esb9u3/do_you_agree_with_dont_touch_the_fucking_working 注意当你做一些并不为企业增加效益的事时,论坛里的人会教你以 ‘干净代码值得骄傲’ 的理由自夸,可你如何对企业里的人解释,想想他们的反应会是什么。 —— 是这些人决定你拿多少钱,不是论坛里的网友。不要被人当枪使 没用 |
196
lrh3321 2020-12-17 16:08:15 +08:00
提高了他的不可替代性
|
197
yangchaomin 2020-12-17 16:10:02 +08:00
我觉得 JQuery 挺好用的呀
|
198
suyuyu 2020-12-17 16:14:35 +08:00
小心你同事也在论坛,哈哈
|
199
lcy630409 2020-12-17 16:19:35 +08:00 1
加油!我最喜欢这种进公司 啥都不管,看代码就要重构的人了
恩 最好再加 2-3 个前端,再加 3 个测试 然后 咦 这界面是不是丑了?再来个 ui 吧 做到最后 你想死的心都有的 |
200
MrKz96 2020-12-17 16:21:19 +08:00
咋这么多 ifelse???
|