和 mentor 代码习惯不一样,好头痛

2023-11-23 11:00:07 +08:00
 Ainokiseki
校招生一枚,入职半年了,和 mentor 一起负责项目的某个模块,代码自然是两个人互相 review 。
mentor 之前在某大厂,看起来是比较资深的那种,再加上前期对项目不熟,小透明基本上是 mentor 说啥是啥。
review 的时候 mentor 的代码只要功能 ok 那就好,但是 mentor review 我的时候就有点不走心,有些地方没看懂就写 comment ,还有些地方我的设计本来 ok 的,他又要按他自己的习惯来改。
我理解这项目最开始是 mentor 写的,可能看着自己创造的东西被别人改来改去总会不舒服?至少我是无数次幻想着哪天 mentor 不在了我要把现在的代码按我的风格从头到尾重构一下 hhhh
可能 mentor 觉得我菜吧,但我觉得我只是经验不足,好歹哥们也是名校出来的,开发工作难度也就那样,要是功能缺陷那让我改我没话说,但只是代码习惯不一样就被要求改就很烦
19215 次点击
所在节点    程序员
152 条回复
ffffb
2023-11-23 18:25:59 +08:00
什么时候你不会想着重构你就成熟了
moon8sky
2023-11-23 19:06:27 +08:00
想了很久,还是回一个

我可能就是那个 mentor 吧,刚看到这个帖子的时候心里一震,毕竟你描述的代码和我刚 review 的新同事的代码,几乎一模一样(我们做前端, 写的 JS ),当然还是有一些出入:

1.他不是名校(非 985/211 ,某建筑大学,机械电子专业)
2.非应届生( 22 毕业,一年工作经验),当然,实际技术水平=0 基础应届生
3.我也不是大厂出来的

说实话,我很不愿意相信这是他发的,因为对他的培养,花了比想象中多得多的时间。

1.以一个 1 年经验的身份招进来,结果几乎是 0 基础,原来我给我领导的计划是 1 个月可以独立负责项目开发,现在这个时间需要延长到 3 个月,要重新写培训计划,大概率要被叼
2.面试的笔试大概率作弊,计算机网络和操作系统相关的题,他连端口和 HTTP 怎么工作都不知道,然而他考了满分;实际工作中写个 mqtt 服务器不工作原理,npm dev 不知道端口
3.试用期多次想直接辞退他,但是想着人是自己招进来的,应该负责到底,尽自己能力去带,当然,最后提高的怎么样,还是看自己
4.团队不大( 6 个人),他确实是个小透明,因为正式项目几乎帮不上什么忙,做一些简单开发任务,还需要别人花时间来帮他解决问题,对团队几乎没有贡献
5.让他工作时间不要用手机看了视频学习,别的同事看到了影响不好,可以用电脑看,他说公司电脑是 win11 ,win11 不支持蓝牙,没法用蓝牙耳机的时候,我真想抽自己两巴掌,自己怎么面试的
6.手把手教了 linux 上怎么部署前端项目,过两天来问,还是不知道 ls 、tar 命令是干啥的,只知道要这么操作,哎~

最后,我只想说

1.非科班转码没问题,我也是转码的,但是请敬畏技术,你是软件工程师,不是码农

2.留着他,只是希望给他一个机会,现在市场行情不好,希望可以好好提高自己,并不是团队缺你不可

3.经典书籍要看,B 站的尚硅谷视频给不了你持续的能力提升,拉不开和别人的差距

加油吧,曾经我也以为自己很牛逼,所有需求我都能实现,但是自从和一个大专大三学生做开源项目,被嫌弃代码烂;以及给一个 P8 开源项目贡献代码,20 行代码被退回来 4 次。才知道自己的渺小

阻止自己进步的大概不是你的专业,公司,项目内容,而是自己的傲慢。

不要目空一切,我们永远也学不会我们不知道的知识,我想这大概也是之前他学习任务进度如此慢的原因
soupu626
2023-11-23 19:07:37 +08:00
更喜欢 mentor +1 ,减少缩进层级,减少 if 判断次数,功能分离,好看好读

另外代码看不懂直接 comment 有什么问题么,CR 不就是用来讨论的么

工程中不需要简洁代码,可读性要求更高,我现在看我当初写的 OI/ACM 代码完全读不下去。
FlashEcho
2023-11-23 19:31:33 +08:00
其实问题不是很大,如果你编译器优化开高一点,两种写法编译出来可能完全一样

就算需要多判断一下,CPU 跑得很快的,一般业务的瓶颈都不会在运算上,在网络上和在内存上可能性更大
0xLittleFi
2023-11-23 20:17:20 +08:00
首先 mentor 得代码好,
企业级的代码,逻辑清晰是第一点,毕竟是要长期维护
如果 op 觉得他不行,可以申请换 mentor ,mentor 不会觉得你菜,重要的是会学,不理解就刨根问底
dito
2023-11-23 20:23:10 +08:00
我只想说 special 的反义词不是 normal ,别给我们名校抹黑。
StephenHe
2023-11-23 20:23:29 +08:00
再好的代码,迭代 3-5 个版本就变成一坨屎了
hahadaxigua834
2023-11-23 20:36:42 +08:00
这种级别的东西编译器前端估计就能给你优化了,有没有编译器方向的大佬有空指点下。

风格问题的话跟着老员工写就完事了,纠结这种问题纯属工作量不饱和
nagisaushio
2023-11-23 20:52:29 +08:00
@moon8sky 看起来楼主是写 go 或有 go 背景的,可能有些差别
lguan
2023-11-23 21:03:55 +08:00
忘记自己是名校出来的,这一文不值,也忘记 mentor 之前在大厂做过,可能有经验,也未必是对的,但在一个团队,大家有共识很重要,特别是涉及到规范以后,这玩意儿又往往没有对错之分,碰到这种分歧的,如果你觉得你是对的,那么就尝试说服别人,如果做不到,那就按照团队定的来,PS ,例子里面,我自己会偏向用 mentor 的方式,但你上面的方式也有好处,对于将来维护的时候,如果需要特殊处理的要从最后一个改到中间的时候,你的代码改起来会方便一些,所以要是我如果一定要争论这点的话,我会看看这部分的代码将来是不是有修改的可能,如果没有,我自己是会才去下面的方法
bhy
2023-11-23 21:04:00 +08:00
mentor 的代码是不是不对? array 为空的时候会出错?
kkwa56188
2023-11-23 21:10:19 +08:00
mentor 的逻辑好一些:
现在只需要 特殊处理 数组里最后一个元素, 一个 for 循环里就有 1 个 if. 数组有十万个元素就 十万次 if.
如果要分别特殊处理数组里 最后 10 个元素, 一个 for 循环里就有 10 个 if. 数组十万个元素 就是 (十万乘以 10) 次 if.
laminux29
2023-11-23 21:20:11 +08:00
你的 Mentor 还是欠点火候,任何写法都有优劣,你的 Mentor 没给你解释,这就是他水平不到位的原因。

你喜欢的 for in ,优点是简洁,效率高。缺点是可读性差、可调试性差。所以到底要用 for in 还是 for loop ,完全要看场景,看数据量,看工程规模,不能一概而论。

而且 你 Mentor 的 for loop 里 len(xxx) 的写法,如果 xxx 是个会动态改变长度的链表,那么 len( xxx )很有可能会被劣化为 get length 的计算,每次循环要算一次。
Features
2023-11-23 21:33:57 +08:00
厂里这么闲的吗? 效益不错吧
rxswift
2023-11-23 21:48:05 +08:00
go 语言?
zhdi
2023-11-23 22:40:27 +08:00
晚上玩回来写了个测试,c 写的,array 大小 409600 ,重复测试 100 次,if 写循环里时间是平均 2500us ,if 写外面是 1500us ,没有开-O 优化,因为懒得给里面填内容,不填东西开-O 会直接 ret
lesismal
2023-11-23 22:42:55 +08:00
目测:最近 v2 流行自爆🧐
adskhf
2023-11-23 22:57:11 +08:00
@undeflife 笑死我啦,golang 确实是不管怎么写都是丑的😂
netabare
2023-11-23 23:08:19 +08:00
你给的例子明显是你 mentor 的更好啊,最后一个要特殊对待,mentor 的一次改完,你的例子先修改一次再回过头改一次。

万一你的第一部分代码有什么特殊的逻辑呢?那么本不该被调用的事情就会发生。
LindsayZhou
2023-11-23 23:35:24 +08:00
赞同 #113 ,完全看场景。
刚写了一个简单的示例,翻了一下二进制代码。

简单的循环编译器优化的时候会把判断拿到循环外面去。不会像楼上一些人说的判断很多遍。

https://p.koi.moe/kash
https://p.koi.moe/qhzX

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

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

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

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

© 2021 V2EX