更新个《篇二》吧,就叫.... 《以为丈育女同事脑子开窍了向我讨教代码,结果是让我朗读课文》
大部分是之前写的,复制过来改了改。
时间要往前推移一点
一天下午, 她给我发消息 “拿着你的(笔记)本过来一下啊 ”。然后我就带着我的笔记本去她的位置(挺远,不在一个办公区)找她。
问她为啥,她说自己的笔记本太卡了,还没有最新的代码,想在我的本上看一下最新的代码。 因为她需要在她的项目里加一项功能——“检查用户的输入里是否含有非法字符串”,而这个功能我已经做过了,她想看下我的代码参考一下。 这很正常,然后她就叫我把我写的代码里逻辑的地方给她看一下。
这也很正常,我就给代码打开了定位到我写的方法上了,我说“就在这个地方,调用了个人家外国人写好的方法。” (其实就一行)
事情到这里,可能作为一个正常人,如果从她的角度来讲,可能就会说: “谢谢,等我研究研究怎么用,要是不懂了再问你”或者, “你能跟我讲讲为什么要调这个方法,这个方法是干什么的,这个方法怎么用呢?” 之类的话。
但是!你绝对!!想不到!!!接下来她说了什么!!!
她说:“哎你给我念一遍”
我听完她说这话之后我整个人愣住了!愣住了.... 在长达两秒的时间里,我的大脑是空白的,我不知道我要说什么,我要回答她什么。
我整理了下思路,有点语塞地问出“_啊?这为什么要念呢?方法名不都写的很清楚么?_” 她说“你给我念一遍,我看着费劲。” (费劲...费劲...费...劲...?) “嗯,一个一个单词地念”她补充道。
我当时的心理活动:你是看不懂英文啊?还是说我的电脑屏幕有问题,亮度太低?显示器坏了?都没有啊?为什么、为什么?我要给你念一遍呢?你是老师来检查我作业的么?让我给你念一遍?这是一个请求别人帮助,参考别人成果物时候的态度么?退一步说,你要是英文水平不好,或者盯了大半天屏幕了眼睛难受,你都可以说啊? “你给我念一遍,一个一个地念”....是什么意思?
听到了她的这句话,
就像是,一个正跟你谈笑风生的朋友毫无征兆地给你脸上来了一拳。
就像是,七月份三十多度的天气你走在路上,一个砂锅大的冰雹砸到了你的头上。
惊喜?惊讶?震惊?费解? 都不足以确切描述我的心情。
但是最后我还是把方法名一个单词一个单词地给她读了一遍,然后给参数列表的参数都给读了一遍,并解释了一下参数是干什么用的。 我也不知道她究竟在我讲完了这一遍之后听懂没有(我觉得是没有) 最后,她说“好,回头我再看一看这里”
我背负着沉重的心情离开了她的工位,总觉得是我自己做错了什么,感觉我在与人的沟通交流上,遇到了重大瓶颈,甚至开始了自我剖析。 以上,就是我那一天里遇到过的,最令我辗转反侧的事情了。
1
JavaFirstMaster 2021-01-27 16:26:14 +08:00 38
可能是看上你了, 想和你有更多交流
|
2
learningman 2021-01-27 16:28:22 +08:00
@JavaFirstMaster ++
|
3
Vveeb OP Yin 间代码节选:
1.一个方法写了 400 行,113 的复杂度,放眼望去全是 if...else, switch, 这个等于 0 那个不等于 1 之类的 2.一个循环里有个变量叫`currentList`, 我想看下是个什么 List, 结果它是个别的 List 里的下角标 i 的元素。 3.然后这个`currentList` 点出来了一个 ``currentList.ArrayList`的属性,然后这个属性是个 List<string> 4.看见个叫 “NorFunc” 的属性不知道啥意思,F12 定位过去 结果是个 string 类型的属性.... 冰山一角,冰山一角。。。 |
4
wzzzx 2021-01-27 16:29:52 +08:00 2
1 楼说的没错
|
7
faustina2018 2021-01-27 16:32:10 +08:00 4
所以为什么发帖要加书名号?
|
8
cornetCat 2021-01-27 16:34:00 +08:00 4
@faustina2018 日轻受害者吧
|
9
NexTooo 2021-01-27 16:34:15 +08:00
自古一楼出人才
|
10
doveyoung 2021-01-27 16:35:31 +08:00 8
《关于听说过名字只要够长再加上书名号就能比较突出显示主题但我还是不理解这件事》
|
11
h82258652 2021-01-27 16:35:34 +08:00
这种你让她隔一段时间再回去看,她自己都看不懂的
我司同事就是这样,一个类几千行,一个方法上千行,VS 敲个回车都要卡 |
12
jay4497 2021-01-27 16:37:16 +08:00
所以,别敲码了,写轻小说去吧 doge;
|
13
abelmakihara 2021-01-27 16:39:01 +08:00
ide 都有提示拼写错误的 我也很难忍受拼写错误
|
14
itskingname 2021-01-27 16:42:08 +08:00
说说看她的名字,免得祸害下家
|
15
Vveeb OP @faustina2018 哈哈哈觉得标题起得太长了所以拿书名号括了起来
|
16
shiny 2021-01-27 16:43:26 +08:00
.NET 应该也有自动化的代码风格检查工具吧,交给机器就好了,不合格自动打回就行了。
|
18
WinnieNumberTwo 2021-01-27 16:44:33 +08:00
哈哈,好奇为什么这个同事要走?离开你们公司难道找到了更好的下家?
|
19
Rwing 2021-01-27 16:45:18 +08:00
editorconfig 走起来,各种规则都 error,然后加上 EnforceCodeStyleInBuild,他本地都 build 不过
|
20
airfling 2021-01-27 16:46:57 +08:00
我这边的代码审核都是代码我觉得不合格就打回去修改,什么时候修改好了什么时候我再合,反正我不嫌烦
|
21
caaaalabash 2021-01-27 16:48:48 +08:00
哈哈哈哈哈标题是在模仿番名吗
|
22
Vveeb OP @WinnieNumberTwo 不不不,我们本身就是个测试部门(还是黑盒),这个人本身工作能力+做人、做职场人更不行,跟她共事过的人都跟她干过架不愿意待见她,自己提的不想在我们组干了,转去别的组了。难受了一年多终于等到这个神仙走了!
|
23
Vveeb OP @Rwing 嗐,这就涉及到我这个基本类型互相转换都要现去百度的选手的知识盲区了。知道有 .editorconfig 这么个东西,没研究过。
|
24
Vveeb OP @airfling “什么时候修改好了什么时候我再合,反正我不嫌烦”
讲道理流程确实应该是这样的,但是这个人,为什么叫她“毒瘤”呢,因为她永远都是“理不直气也壮”,而且脑回路跟一般人着实不一样。共事的这一年多,经常被气到想要原地去世。而且在一个本不是开发的部门做开发的工作,就很难,领导都不会开发,向上反映开发的问题,费时费力。 |
25
jones 2021-01-27 17:02:57 +08:00 via Android 5
十年前总是追求 LZ 说的这些,现在所有命名都改拼音了
|
27
forgottencoast 2021-01-27 17:04:48 +08:00
@Vveeb 为什么上级领导坐视不管,是他亲人吗?
|
29
Vveeb OP @fffang 我用的个叫 “CodeMaid” 的插件,提供了一个很 nic 的 e 窗口,上面列出了所有成员,方法,返回值类型,方法复杂度。 我之前还用过一个叫什么 “CodeMatrix”(记不太清),是直接可以在方法前面标注出方法复杂度的。
|
30
zypy333 2021-01-27 17:12:00 +08:00
用书名号我还以为是讨论另外一个帖子呢, 这也属于不符合规范吧
我这个小公司也有这种同事, 各种下划线驼峰大小写来回穿梭用, 这边都没代码审查,当初把我跟他分一组, 找理由婉拒了,感觉只要不接手不合作,再乱由他乱去吧 |
31
Vveeb OP @forgottencoast 也不是不管,我们这儿说白了是个外企养老公司,公司基本不会主动开你,因为开人公司还要赔偿。
这个交接工作进行了一周下来,她已经成功气坏了我 + 组长 + 科长 (除了我都不是开发)。甚至三人组成了“同仇敌忾”小组。 |
33
Vveeb OP @zypy333 Sorry Sorry, 在这个社区混( mo )迹( yu )时间不长, 条条框框的还没来得及仔细了解。
|
34
cco 2021-01-27 17:19:14 +08:00
俺们一个接口能大约有 30 多种功能- -。
冰山一角,冰山一角。。。 |
36
cco 2021-01-27 17:23:39 +08:00
@Vveeb 据说是为了接口复用。除了请求报文和响应报文长得一样外- -。我没觉得哪里可以复用的。这种还有很多,最近改 bug 快疯了- -。
|
37
Vveeb OP @lemon94 Emmmm 我也是菜鸟,搞个“设计模式”啥的? 之前还特意去查了 “优化多 if else 分支”的方法。有啥“反射+字典”的,还有啥一些我也不太懂的。反正就我们现在这个微乎其微的代码量+业务逻辑需求。
有一个事件处理方法是处理所有收到的消息,然后要判断这个消息各个属性的值是什么来进行不同的处理,我目前能想到的,就是写一个类,然后用收进来的消息构建类对象,逻辑放在类里面的方法&属性 GetterSetter 去处理。 |
38
zypy333 2021-01-27 17:34:28 +08:00
@lemon94 整理清楚,拆分到不同抽象层级里的方法里去就差不多了吧,也可以用卫语句提前 return,参考<<代码整洁之道>>,设计模式的话,有模板模式,策略模式等可以用
|
39
lemon94 2021-01-27 17:39:28 +08:00
@Vveeb 你说的映射+字典我也在用。我是做前端的,经常会根据后端返回的状态码来展示不同的文字,这种时候可以把状态码和对应的字符串以 key-value 形式保存在字典里,用的时候可以直接映射取值。但如果状态码对应的不只是字符串,而是一整段逻辑,这时我就只能用 if else 判断,虽然丑陋,但想不到更简洁优雅的方式。
|
40
jadeborner 2021-01-27 17:42:17 +08:00
这个同事长得怎么样?
|
41
annielong 2021-01-27 17:45:26 +08:00
涉及流程跳转,有时候只能 if else,没有特别合适的优化方法,
|
42
janxin 2021-01-27 18:34:20 +08:00
宁就是轻小说带文豪?
|
43
sevenzhou1218 2021-01-27 18:57:45 +08:00
没啥好吐槽的,人都要走了,干嘛还很认真的给你搞。。。
|
44
Vveeb OP @sevenzhou1218 没错的,她就是这么个态度,东西都交出去就完了,就是一坨屎也得让我接着。
|
45
Vveeb OP @jadeborner 长得? 那差不多就是”亲者痛仇者快“这么个水平了
|
46
CrazyRundong 2021-01-27 19:50:17 +08:00
代码风格的问题不应该是交由 CI 吗?风格检查不通过不给 merge 不就行了 = =
|
47
Vveeb OP @CrazyRundong @_@ CI 是个啥, 可能还没用到这么高级的东西,我们用的顶多就是个 StyleCop 检查下风格。而且 Merge 的话,也是我们这边先过一遍,最后交给外国的开发团队去 Merge 。他们那边会有一次 Code Review & Function Review 。
|
48
lights 2021-01-27 19:59:29 +08:00 via iPhone
和领导摊牌,要么她能持续改正,要么你走
|
49
CrazyRundong 2021-01-27 20:00:15 +08:00 via iPhone
|
51
fiveelementgid 2021-01-27 20:03:16 +08:00 via Android
Case sensitive.......
话说你这个工作性质 是不是外包? |
52
Vveeb OP @CrazyRundong 扫噶,持续集成啊,那么 jenkins 应该算是吧,我们的服务器有跑 jenkins,但是好像没有代码风格检查
|
53
Vveeb OP @fiveelementgid 哈哈不是,是分公司给母公司打工这样子
|
54
css3 2021-01-27 21:23:45 +08:00 via iPhone
所以一个方法或者类最多写多少行合适?
|
55
jzmws 2021-01-27 21:44:10 +08:00
加个扫描 代码不符合规范的都拒绝提交
|
56
ETiV 2021-01-27 21:45:18 +08:00 via iPhone
好家伙,这标题,我还以为要动画化了呢
|
58
Lemeng 2021-01-27 22:01:05 +08:00
她,她的话,是不是你未婚她未嫁呢。感觉怎么样呢
|
59
no1xsyzy 2021-01-27 22:17:14 +08:00 2
@lemon94 最重要是要把逻辑隔离出来,最完全的隔离是所有 if else 串的 if (...) 和 {...} 的部分都应当是一个具有有意义的名字的 function call 或者 method call 。尤其 if (...) 最好不要有运算,最多 if ((name = value) == another_value)
而且这样的代码运行效率会很可能变高(假设不内联): if (longCondition1()) {longOperation1()} else if ... else {longOperationN()} 因为你要把这些东西内联进去这段代码很可能会超过缓存大小,再从更低速的缓存甚至内存里刷进缓存的话效率就低了。 |
60
KeepingNow 2021-01-27 22:37:18 +08:00
都给我看乐了😂。
|
61
impanghu 2021-01-27 22:40:53 +08:00
哈哈哈哈哈哈哈哈哈哈
|
62
bclerdx 2021-01-27 22:43:42 +08:00
LZ,你不要把你的想法和方式强加给她人吧。
|
63
dayeye2006199 2021-01-28 02:51:07 +08:00
这种都不需要人工 review,搞个 linter,要求对方先改到没有 warning 你再给她看逻辑就好了
|
64
laminux29 2021-01-28 07:14:57 +08:00 6
这个妹子,应该是那种曾经真实水平只是星耀,但以前的版本允许有运气能上王者,然后她上了王者,就骄傲了。后来版本变化,让运气变得无效,要靠真正实力才能上王者,妹子怎么也回不去王者段位,懵逼了,然后就暴躁了。
你要想解开她的心结,得让她明白,她掉段且上不去的真正原因,是她从头就没有王者的真正水平,而且当时游戏公司也犯了错误,让她这种人上了王者。不过你对一个成年人这么说,大概率的结局是,会不听你的,然后记恨于你。 你作为中层,应该对公司负责,把精力集中在工作上,而不是搞内斗。我如果是你,会先给她一个机会,直接告诉她,你是她的上级,你交代的任务,她必须无条件完成。她可以提建议,但听不听建议是你的事情,她不能因为你不听她的建议而反对你。接着,如果她仍然反对你,你就直接找上级,或者找 HR,把这妹子调离你的部门,原因很简单,就一条,员工不服从领导安排。 |
65
hpu423 2021-01-28 08:01:40 +08:00
标题很长
|
66
cominghome 2021-01-28 08:23:04 +08:00
草,看这标题想起了改论文的时候,初稿改格式都改了四五版。。。
|
67
Vveeb OP @css3 之前装了个方法复杂度的插件,默认配置下,复杂度超过 3 就标红了。一个方法体,之前看过有人说他都控制在 10 行以内。但是我觉得要是一直追求这样的书写方法,应该会挺累的。
|
68
ragnaroks 2021-01-28 08:42:20 +08:00
培训班都没有这么离谱
|
69
Vveeb OP @bclerdx 因为她的代码的设计和逻辑这块我是根本不敢审的,看都看不懂。清一色 public void 方法。所以只能抓一抓这种初高中生都能理解的大小写&拼写问题,而且这种问题上报到领导,领导也能懂。总不能从头给领导讲清楚.net 开发,然后再告诉领导她哪哪哪的代码根本就不符合规范吧~。
|
70
Marszm 2021-01-28 08:54:15 +08:00
羡慕能找到这么舒服的工作.....对比下自己,自己简直是劳模.
|
71
sigl0p 2021-01-28 08:59:30 +08:00
Code Metrices 插件,提示得丑了一点。
|
72
meepo3927 2021-01-28 09:08:42 +08:00
截个图让大家瞧瞧
|
73
peapods 2021-01-28 09:14:13 +08:00 via Android
为什么这样的人会做程序员
|
74
no1xsyzy 2021-01-28 09:17:33 +08:00
后续,搞快点 gkd
其实可以从系统理论挑几句话,也能向外行说明不对劲的地方,因为系统理论是跨学科的,经管方面也会重新发现一遍的(查一般系统论,第二个就是 MBA 智库……) 可维护性问题多半从属于耗散结构论 |
75
RlhholylightR 2021-01-28 09:20:05 +08:00
我能说我们使用手机号码注册获取验证码前要先调用校验接口校验该手机号码是否注册过吗
|
76
Bzero 2021-01-28 09:20:24 +08:00 1
身边就有一例,真的让人很难受。自己从来没主动过,对代码没有追求,用好吃懒做一点不过分。责备的时候,还顶嘴,不知自己哪里有问题。
|
79
msy45 2021-01-28 09:25:38 +08:00
看了这日系标题和 1 楼,这就是轻小说吧😂
|
80
Vveeb OP @peapods 其实是个很拧巴的事儿,本来就一个测试部门,完了非要揽开发的活儿。因为我本科是软件专业的,就先给我派去学技术了,学成龟·来之后,再带俩人,其中一个就是这女的,据说是也有一定基础,之前做过开发,还是研究生,然后.....就这?就这?就这????
|
81
fuwenpei 2021-01-28 09:28:37 +08:00
好家伙,老二刺螈了。
|
83
LiuJiang 2021-01-28 09:29:59 +08:00
我把这样的人,统一称为"老黄牛"
|
84
morimi2026 2021-01-28 09:31:10 +08:00 1
这其实没法沟通,所以正确做法是不要去指出,水过就好
|
85
tutustream 2021-01-28 09:31:32 +08:00
低情商:什么鬼标题
高情商:有没有考虑改行去写轻小说 |
86
Vveeb OP @no1xsyzy 大佬所言全是我知识盲区.....
后续的话,应该是没有了,领导也没招,所以工作内容就直接拿过来了不审了。反正不是特别重要的模块,到时候如果真的有需要往国外开发的仓库提 Pull Request 的话,就直接重做就完了。 但是 《前传》的话,我估计真的能写上一本书了,共事一年多,一些惊天地泣鬼神的事迹我都用小本本记下来了。也成了日后跟朋友、同事闲暇之余的一段笑谈了属于是。 |
87
LokiSharp 2021-01-28 09:36:37 +08:00
用过好点的 IDE 都能解决啊,买个 Rider 和 ReSharper
|
88
Vveeb OP @morimi2026 是的是的! 最后就是“闭一只眼瞎一只眼” 过去了。
|
89
Vveeb OP |
90
aoeui 2021-01-28 09:40:10 +08:00 via Android
我只想问,🐻大么? 🐶
|
92
Shazoo 2021-01-28 09:49:41 +08:00
好奇,什么是“方法复杂度”?时间复杂度倒是经常得评估下。
什么叫做 400 行 ,100 多的复杂度?这是什么量化标准? |
93
sockpuppet9527 2021-01-28 09:52:00 +08:00
我有个好办法,公费让她去波兰一趟就好了。 参考 : /t/693941
有可能波兰老哥都看了两行,都不给她 code review 了。 :) |
94
dswyzx 2021-01-28 10:01:15 +08:00 via iPhone
啊,我就喜欢类里边属性一股脑小写开头,问就是 json 直接粘贴而成。warning? 又不是不能用
不过我支持楼主这么认真的对待规范 |
95
Vveeb OP @Shazoo 可能我用词不 biu 准哈,就是那种,多一个 if else 分支就会+1 的那种复杂度。量化标准好像没什么标准,开头说了“不算正规开发团队、差不多就是打杂的”。 最后代码还是要提 PR 给外国团队审核的,但是 400 多行的一个方法,里面基本都是 if else switch,并且注释都没有, 本身做的还是写 byte bit 的操作,条件里全是 “0,1,2,3,4”的。一般人多看两眼就吐了我觉得
|
96
JavaFirstMaster 2021-01-28 10:19:28 +08:00 1
@Vveeb 这个人一看就是对代码没追求, 能力和责任心不强, 但是自尊心强. 你指出她错误的时候她应该是知道有问题的, 就是嘴硬+懒而已. 让领导下场是正确的做法.
哪里都有垃圾代码, 我现在参与的项目里经常见到"不判断 null", "if true return true else false"的代码. 以前我是个敲两行代码就要格式化一下的人, 现在也是见怪不怪了, 因为改出来问题了人家还埋怨你... |
97
Vveeb OP @dswyzx 嗐,其实本身我也就是个“少儿班”的水平,我们的工作也没什么高深的东西,所以有点强迫症的我,大部分之间都在格式化代码+想命名+写注释。甚至会照着 NET 官方英文文档的格式来写我的方法的 XML 文档注释 + 遣词造句。
|
98
Jasonwxy 2021-01-28 10:46:02 +08:00 1
深有同感,前一段时间我们这也来了个大神,不知道怎么招过来的。啥问题都要问,说了问题也不改,一个问题过一段时间问一次,之后我都直接翻聊天记录截图给他,反正跟他合作过的都苦不堪言。还好不久前走了,现在在收拾他留下的烂摊子
感觉这种人就是没有责任+没有能力,除非哪天突然改了性子,别人没法改变他。跟这种人合作是真的难受,我到后期反正是不怎么理这个人了,该怎么办怎么办吧,最好早点滚蛋。这种人不适合去职场跟别人沟通合作,太自我 |
99
heaton_nobu 2021-01-28 10:49:27 +08:00
你指着那个 400 行的 function 让她给你讲讲里面逻辑
|