和 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 觉得我菜吧,但我觉得我只是经验不足,好歹哥们也是名校出来的,开发工作难度也就那样,要是功能缺陷那让我改我没话说,但只是代码习惯不一样就被要求改就很烦
19217 次点击
所在节点    程序员
152 条回复
LindsayZhou
2023-11-23 23:47:32 +08:00
续 #120
em... 好像又看走眼了,判断还是在,两种循环的位置有点不一样。
只是从汇编的层面来看,貌似关系不那么大?
rrubick
2023-11-24 00:25:56 +08:00
感谢大家,不知不觉又学到了一点知识。

能遇到这个 mentor 实属幸运,在刚工作的年纪。

转码这么多年,一直没觉得自己比科班差在哪,遇到的问题也基本都可以解决(当然是小厂小问题)。
但是最近在和大厂出来的聊天后,发现自己真的插不上话,一些底层编译优化统统不懂,深感无力。
了解的越多,越觉得要学的太多太多了。

只可惜,现在学的话有点来不及了,不过,我还是先从书架上拿出我尘封已久的 CSAPP 吧。
chendl111
2023-11-24 00:56:50 +08:00
听你 mentor 的
iintothewind
2023-11-24 04:01:23 +08:00
golang 就是一个 better c, 指令式范式编程, 就是怎么写都很丑啊, 不就是 if else for while 加花括号吗?
所以还得听你 mentor 的, 没必要纠结.

你能有机会用函数式风格比较友好的语言, 并且周围比较多那种追求简洁高效有质量代码的技术有追求的同事的时候, 你再好好发挥也不迟.
kiritoxkiriko
2023-11-24 04:05:23 +08:00
@undeflife #7 哈哈,原谅我看到了这条回复真的笑出了声,golang 真的是满文件都是 if err != nil
opengg
2023-11-24 04:16:36 +08:00
明显是你导师写的好啊,你以为 if 越深越好?
y1y1
2023-11-24 04:21:28 +08:00
名校?什么水平的名校,cmu 吗
hongns
2023-11-24 06:12:27 +08:00
学校名字说一下呢
Viztor
2023-11-24 06:53:14 +08:00
实际上根本不是代码风格的问题,第二个效率写法更高。程序员当然没必要为了一点点性能提升去过于复杂化代码,但选择一个明显可读性更高的更高且性能更好的写法,应当是相当良好的习惯,只能说发帖的人压根没有好好思考两份代码的差异。
zhy0216
2023-11-24 07:37:47 +08:00
就你 append 的代码而言
我也更喜欢后者
一个 loop 做一件事情
zochdk
2023-11-24 07:54:19 +08:00
for 时间复杂度是 n ,在 for 里放 if 代表机器会走 n 次 if 语义,在你的业务范畴里:前 n-1 项 if 分支的执行毫无意义,每多一语义每多一 cpu 时间片,虽然阅读起来易于理解,但实际不是更佳实践。

实际来看更有经验的程序员会选择第二种方式,这是更佳实践。这一操作看似是经验,实际包含了对计算机知识理论的认知深度和应用实践结合,maybe 对现在的你来讲属于新领域。纸上谈兵非计算机之道,这与你是什么学校毕业和他在什么公司待过没有必然逻辑关系。单单针对这一段代码而言,你们的认知层次不同,所以映照到现实实践的行为不同,更好的程序员像 AI ,会训练自己。
xuanbg
2023-11-24 07:55:49 +08:00
第一个和第二个不等效啊。第一个方法最后一个处理了 2 次,第二个方法最后一个只特殊处理 1 次。然后,OP 的写法在我看来逻辑不是特别清晰。强行挽尊的不是你的 mentor 是你啊。
xuanbg
2023-11-24 07:58:31 +08:00
```
for i:=range array{
if i==len(array)-1{
// do sth special to array[len(array)-1]
}else{
// do sth normal to array[i]
}
}
```
这才和下面代码等效哦
```
for i:=0;i<len(array-1);i++{
// do sth normal
}
// do sth special for array[len(array)-1]

```
cdswyda
2023-11-24 08:29:43 +08:00
我绝对绝对站你的 mentor 。

不过话说回来,看到这个,我突然想到,我花自己很长时间去给别人 review 的代码,别人会不会也在某个地方在吐槽我。
yzbythesea
2023-11-24 08:39:33 +08:00
感觉怎么很巨婴?简单和 mentor 沟通一下不就好了?
另外什么叫名校出来?中国 top 2 还是美国 top 20 ?(其余都是杂牌
izzy27
2023-11-24 08:53:43 +08:00
听你 mentor 的,别犟,犟下次不教你了
izzy27
2023-11-24 08:55:08 +08:00
“可能 mentor 觉得我菜吧,但我觉得我只是经验不足,好歹哥们也是名校出来的,开发工作难度也就那样,要是功能缺陷那让我改我没话说,但只是代码习惯不一样就被要求改就很烦”

说真的,你这个心态要吃大亏。。。
tracebundy
2023-11-24 09:48:30 +08:00
放平心态,也要放低姿态,很明显 mentor 的好
sxfscool
2023-11-24 09:50:16 +08:00
@moon8sky 这种该辞就辞,不能给自己挖坑埋雷
Sfilata
2023-11-24 09:50:37 +08:00
名校和写不写得好代码完全没有任何关系,充其量只是优秀的概率大一点。另外我看了下你贴出来的代码,我也是觉得你 mentor 的代码好一些。

除了这些具体的点,我想说 review 代码不明白就写 comment 是一种非常负责的行为,如果你觉得需要改的话你也继续写 comment 和他交流呗。

在开源项目中,因为代码风格或者实现细节,几行代码被 comment 十几次是很正常的事情。我不知道为啥你偏要把这个理解为不走心或者不舒服。工作真的没那么多戏,就是纯纯觉得改一下更好而已。遇到事情多交流,不要因为名校就看不起谁,这世界很大,你才刚刚开始。

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

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

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

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

© 2021 V2EX