跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 《关于我对审核同事代码的标准已经降低到“只要把所有成员命名按照驼峰规则+单词拼写没有错误就行了”然而她还是做不到的这件事》
未分類
23 1 月 2021

《关于我对审核同事代码的标准已经降低到“只要把所有成员命名按照驼峰规则+单词拼写没有错误就行了”然而她还是做不到的这件事》

《关于我对审核同事代码的标准已经降低到“只要把所有成员命名按照驼峰规则+单词拼写没有错误就行了”然而她还是做不到的这件事》

資深大佬 : Vveeb 5

前提: .NET 开发,不是正规开发团队,帮国外分公司的开发打杂的,人家写好的框架我们在上面实现个小功能或者修 BUG 啥的。
本人水平也只是熟练使用 Console.WriteLine() 的水平,但是差不多也能看出来代码写的漂亮不漂亮。

OK,正文:组里的毒瘤同事终于要走了,走之前要给她之前的工作交接给我。因为这些成果最终还是要提交给国外开发团队去 Merge 的,所以之前需要我评审一下,尽量符合人家的标准。

拿过来先看她做的类图,基本都是“望文生疑”这么个状态。我让她:“这里,这里,方法名单词首字母大写,这里拼写不对,你回去改一下,然后从头到尾自己查一下,没问题了再给我”。

过会儿,告诉我改好了没问题了,我随便看,还有同样问题,又让她改+自己查。

就这样来回来去三四遍了,一个类图,里面总共列出来才不到 200 个成员,每次说改好了没问题了,我都还能发现“大小写”&“拼写”问题。

所以说之后评审代码这种事是我完全没有勇气去做的,里面放眼望去基本都是 Yin 间代码。

大佬有話說 (100)

  • 資深大佬 : JavaFirstMaster

    可能是看上你了, 想和你有更多交流

  • 資深大佬 : learningman

    @JavaFirstMaster ++

  • 主 資深大佬 : Vveeb

    Yin 间代码节选:
    1.一个方法写了 400 行,113 的复杂度,放眼望去全是 if…else, switch, 这个等于 0 那个不等于 1 之类的

    2.一个循环里有个变量叫`currentList`, 我想看下是个什么 List, 结果它是个别的 List 里的下角标 i 的元素。

    3.然后这个`currentList` 点出来了一个 “currentList.ArrayList`的属性,然后这个属性是个 List<string>

    4.看见个叫 “NorFunc” 的属性不知道啥意思,F12 定位过去 结果是个 string 类型的属性….

    冰山一角,冰山一角。。。

  • 資深大佬 : wzzzx

    1 说的没错

  • 資深大佬 : Mithril

    @Vveeb 我觉得一说的是对的

  • 資深大佬 : sunziren

    @wzzzx 你说了我想说的

  • 資深大佬 : faustina2018

    所以为什么发帖要加书名号?

  • 資深大佬 : cornetCat

    @faustina2018 日轻受害者吧

  • 資深大佬 : NexTooo

    自古一出人才

  • 資深大佬 : doveyoung

    《关于听说过名字只要够长再加上书名号就能比较突出显示主题但我还是不理解这件事》

  • 資深大佬 : h82258652

    这种你让她隔一段时间再回去看,她自己都看不懂的
    我司同事就是这样,一个类几千行,一个方法上千行,VS 敲个回车都要卡

  • 資深大佬 : jay4497

    所以,别敲码了,写轻小说去吧 doge;

  • 資深大佬 : abelmakihara

    ide 都有提示拼写错误的 我也很难忍受拼写错误

  • 資深大佬 : itskingname

    说说看她的名字,免得祸害下家

  • 主 資深大佬 : Vveeb

    @faustina2018 哈哈哈觉得标题起得太长了所以拿书名号括了起来

  • 資深大佬 : shiny

    .NET 应该也有自动化的代码风格检查工具吧,交给机器就好了,不合格自动打回就行了。

  • 主 資深大佬 : Vveeb

    @doveyoung 哈哈哈哈哈哈,好烦~

  • 資深大佬 : WinnieNumberTwo

    哈哈,好奇为什么这个同事要走?离开你们公司难道找到了更好的下家?

  • 資深大佬 : Rwing

    editorconfig 走起来,各种规则都 error,然后加上 EnforceCodeStyleInBuild,他本地都 build 不过

  • 資深大佬 : airfling

    我这边的代码审核都是代码我觉得不合格就打回去修改,什么时候修改好了什么时候我再合,反正我不嫌烦

  • 資深大佬 : caaaalabash

    哈哈哈哈哈标题是在模仿番名吗

  • 主 資深大佬 : Vveeb

    @WinnieNumberTwo 不不不,我们本身就是个测试部门(还是黑盒),这个人本身工作能力+做人、做职场人更不行,跟她共事过的人都跟她干过架不愿意待见她,自己提的不想在我们组干了,转去别的组了。难受了一年多终于等到这个神仙走了!

  • 主 資深大佬 : Vveeb

    @Rwing 嗐,这就涉及到我这个基本类型互相转换都要现去百度的选手的知识盲区了。知道有 .editorconfig 这么个东西,没研究过。

  • 主 資深大佬 : Vveeb

    @airfling “什么时候修改好了什么时候我再合,反正我不嫌烦”

    讲道理流程确实应该是这样的,但是这个人,为什么叫她“毒瘤”呢,因为她永远都是“理不直气也壮”,而且脑回路跟一般人着实不一样。共事的这一年多,经常被气到想要原地去世。而且在一个本不是开发的部门做开发的工作,就很难,领导都不会开发,向上反映开发的问题,费时费力。

  • 資深大佬 : jones

    十年前总是追求 LZ 说的这些,现在所有命名都改拼音了

  • 資深大佬 : fffang

    @Vveeb 这个复杂度怎么算的?

  • 資深大佬 : forgottencoast

    @Vveeb 为什么上级领导坐视不管,是他亲人吗?

  • 主 資深大佬 : Vveeb

    @jones 哈哈哈,我看别的公司我朋友写的代码,命名都用中文的,但是我们这个不是国内的项目,所以没招

  • 主 資深大佬 : Vveeb

    @fffang 我用的个叫 “CodeMaid” 的插件,提供了一个很 nic 的 e 窗口,上面列出了所有成员,方法,返回值类型,方法复杂度。 我之前还用过一个叫什么 “CodeMatrix”(记不太清),是直接可以在方法前面标注出方法复杂度的。

  • 資深大佬 : zypy333

    用书名号我还以为是讨论另外一个帖子呢, 这也属于不符合规范吧

    我这个小公司也有这种同事, 各种下划线驼峰大小写来回穿梭用, 这边都没代码审查,当初把我跟他分一组, 找理由婉拒了,感觉只要不接手不合作,再乱由他乱去吧

  • 主 資深大佬 : Vveeb

    @forgottencoast 也不是不管,我们这儿说白了是个外企养老公司,公司基本不会主动开你,因为开人公司还要赔偿。
    这个交接工作进行了一周下来,她已经成功气坏了我 + 组长 + 科长 (除了我都不是开发)。甚至三人组成了“同仇敌忾”小组。

  • 資深大佬 : lemon94

    @Vveeb 第一条,如果业务需求中就有很多条件判断的话不用 if else 有什么别的办法么

  • 主 資深大佬 : Vveeb

    @zypy333 Sorry Sorry, 在这个社区混( mo )迹( yu )时间不长, 条条框框的还没来得及仔细了解。

  • 資深大佬 : cco

    俺们一个接口能大约有 30 多种功能- -。
    冰山一角,冰山一角。。。

  • 主 資深大佬 : Vveeb

    @cco 这不是接口,怕不是个“接洞”了哈哈, 虽然我也不太懂接口是啥,没设计过

  • 資深大佬 : cco

    @Vveeb 据说是为了接口复用。除了请求报文和响应报文长得一样外- -。我没觉得哪里可以复用的。这种还有很多,最近改 bug 快疯了- -。

  • 主 資深大佬 : Vveeb

    @lemon94 Emmmm 我也是菜鸟,搞个“设计模式”啥的? 之前还特意去查了 “优化多 if else 分支”的方法。有啥“反射+字典”的,还有啥一些我也不太懂的。反正就我们现在这个微乎其微的代码量+业务逻辑需求。

    有一个事件处理方法是处理所有收到的消息,然后要判断这个消息各个属性的值是什么来进行不同的处理,我目前能想到的,就是写一个类,然后用收进来的消息构建类对象,逻辑放在类里面的方法&属性 GetterSetter 去处理。

  • 資深大佬 : zypy333

    @lemon94 整理清楚,拆分到不同抽象层级里的方法里去就差不多了吧,也可以用卫语句提前 return,参考<<代码整洁之道>>,设计模式的话,有模板模式,策略模式等可以用

  • 資深大佬 : lemon94

    @Vveeb 你说的映射+字典我也在用。我是做前端的,经常会根据后端返回的状态码来展示不同的文字,这种时候可以把状态码和对应的字符串以 key-value 形式保存在字典里,用的时候可以直接映射取值。但如果状态码对应的不只是字符串,而是一整段逻辑,这时我就只能用 if else 判断,虽然丑陋,但想不到更简洁优雅的方式。

  • 資深大佬 : jadeborner

    这个同事长得怎么样?

  • 資深大佬 : annielong

    涉及流程跳转,有时候只能 if else,没有特别合适的优化方法,

  • 資深大佬 : janxin

    宁就是轻小说带文豪?

  • 資深大佬 : sevenzhou1218

    没啥好吐槽的,人都要走了,干嘛还很认真的给你搞。。。

  • 主 資深大佬 : Vveeb

    @sevenzhou1218 没错的,她就是这么个态度,东西都交出去就完了,就是一坨屎也得让我接着。

  • 主 資深大佬 : Vveeb

    @jadeborner 长得? 那差不多就是”亲者痛仇者快“这么个水平了

  • 資深大佬 : CrazyRundong

    代码风格的问题不应该是交由 CI 吗?风格检查不通过不给 merge 不就行了 = =

  • 主 資深大佬 : Vveeb

    @CrazyRundong @_@ CI 是个啥, 可能还没用到这么高级的东西,我们用的顶多就是个 StyleCop 检查下风格。而且 Merge 的话,也是我们这边先过一遍,最后交给外国的开发团队去 Merge 。他们那边会有一次 Code Review & Function Review 。

  • 資深大佬 : lights

    和领导摊牌,要么她能持续改正,要么你走

  • 資深大佬 : CrazyRundong

    @Vveeb https://en.wikipedia.org/wiki/Continuous_integration

  • 資深大佬 : qping

    @Vveeb #45 指望要离职的同事给你写代码,是不明智的,可能还越改越差呢

  • 資深大佬 : fiveelementgid

    Case sensitive…….
    话说你这个工作性质
    是不是外包?

  • 主 資深大佬 : Vveeb

    @CrazyRundong 扫噶,持续集成啊,那么 jenkins 应该算是吧,我们的服务器有跑 jenkins,但是好像没有代码风格检查

  • 主 資深大佬 : Vveeb

    @fiveelementgid 哈哈不是,是分公司给母公司打工这样子

  • 資深大佬 : css3

    所以一个方法或者类最多写多少行合适?

  • 資深大佬 : jzmws

    加个扫描 代码不符合规范的都拒绝提交

  • 資深大佬 : ETiV

    好家伙,这标题,我还以为要动画化了呢

  • 資深大佬 : Keyes

    @ETiV 哈哈哈哈就你最皮

  • 資深大佬 : Lemeng

    她,她的话,是不是你未婚她未嫁呢。感觉怎么样呢

  • 資深大佬 : no1xsyzy

    @lemon94 最重要是要把逻辑隔离出来,最完全的隔离是所有 if else 串的 if (…) 和 {…} 的部分都应当是一个具有有意义的名字的 function call 或者 method call 。尤其 if (…) 最好不要有运算,最多 if ((name = value) == another_value)

    而且这样的代码运行效率会很可能变高(假设不内联):
    if (longCondition1()) {longOperation1()} else if … else {longOperationN()}
    因为你要把这些东西内联进去这段代码很可能会超过缓存大小,再从更低速的缓存甚至内存里刷进缓存的话效率就低了。

  • 資深大佬 : KeepingNow

    都给我看乐了

  • 資深大佬 : impanghu

    哈哈哈哈哈哈哈哈哈哈

  • 資深大佬 : bclerdx

    LZ,你不要把你的想法和方式强加给她人吧。

  • 資深大佬 : dayeye2006199

    这种都不需要人工 review,搞个 linter,要求对方先改到没有 warning 你再给她看逻辑就好了

  • 資深大佬 : laminux29

    这个妹子,应该是那种曾经真实水平只是星耀,但以前的版本允许有运气能上王者,然后她上了王者,就骄傲了。后来版本变化,让运气变得无效,要靠真正实力才能上王者,妹子怎么也回不去王者段位,懵逼了,然后就暴躁了。

    你要想解开她的心结,得让她明白,她掉段且上不去的真正原因,是她从头就没有王者的真正水平,而且当时游戏公司也犯了错误,让她这种人上了王者。不过你对一个成年人这么说,大概率的结局是,会不听你的,然后记恨于你。

    你作为中层,应该对公司负责,把精力集中在工作上,而不是搞内斗。我如果是你,会先给她一个机会,直接告诉她,你是她的上级,你交代的任务,她必须无条件完成。她可以提建议,但听不听建议是你的事情,她不能因为你不听她的建议而反对你。接着,如果她仍然反对你,你就直接找上级,或者找 HR,把这妹子调离你的部门,原因很简单,就一条,员工不服从领导安排。

  • 資深大佬 : hpu423

    标题很长

  • 資深大佬 : cominghome

    草,看这标题想起了改论文的时候,初稿改格式都改了四五版。。。

  • 主 資深大佬 : Vveeb

    @css3 之前装了个方法复杂度的插件,默认配置下,复杂度超过 3 就标红了。一个方法体,之前看过有人说他都控制在 10 行以内。但是我觉得要是一直追求这样的书写方法,应该会挺累的。

  • 資深大佬 : ragnaroks

    培训班都没有这么离谱

  • 主 資深大佬 : Vveeb

    @bclerdx 因为她的代码的设计和逻辑这块我是根本不敢审的,看都看不懂。清一色 public void 方法。所以只能抓一抓这种初高中生都能理解的大小写&拼写问题,而且这种问题上报到领导,领导也能懂。总不能从头给领导讲清楚.net 开发,然后再告诉领导她哪哪哪的代码根本就不符合规范吧~。

  • 資深大佬 : Marszm

    羡慕能找到这么舒服的工作…..对比下自己,自己简直是劳模.

  • 資深大佬 : sigl0p

    Code Metrices 插件,提示得丑了一点。

  • 資深大佬 : meepo3927

    截个图让大家瞧瞧

  • 資深大佬 : peapods

    为什么这样的人会做程序员

  • 資深大佬 : no1xsyzy

    后续,搞快点 gkd
    其实可以从系统理论挑几句话,也能向外行说明不对劲的地方,因为系统理论是跨学科的,经管方面也会重新发现一遍的(查一般系统论,第二个就是 MBA 智库……)
    可维护性问题多半从属于耗散结构论

  • 資深大佬 : RlhholylightR

    我能说我们使用手机号码注册获取验证码前要先调用校验接口校验该手机号码是否注册过吗

  • 資深大佬 : Bzero

    身边就有一例,真的让人很难受。自己从来没主动过,对代码没有追求,用好吃懒做一点不过分。责备的时候,还顶嘴,不知自己哪里有问题。

  • 資深大佬 : xrr2016

    @lemon94 策略模式

  • 資深大佬 : cheng6563

    @cco 老大说了:把所有功能丢到一个接口里取,跟第三方宣传的时候就可以说“一个接口实现 XXX 功能”

  • 資深大佬 : msy45

    看了这日系标题和 1 ,这就是轻小说吧

  • 主 資深大佬 : Vveeb

    @peapods 其实是个很拧巴的事儿,本来就一个测试部门,完了非要揽开发的活儿。因为我本科是软件专业的,就先给我派去学技术了,学成龟·来之后,再带俩人,其中一个就是这女的,据说是也有一定基础,之前做过开发,还是研究生,然后…..就这?就这?就这????

  • 資深大佬 : fuwenpei

    好家伙,老二刺螈了。

  • 主 資深大佬 : Vveeb

    @xrr2016 对对对,想起来了!是有这么个东西~

  • 資深大佬 : LiuJiang

    我把这样的人,统一称为”老黄牛”

  • 資深大佬 : morimi2026

    这其实没法沟通,所以正确做法是不要去指出,水过就好

  • 資深大佬 : tutustream

    低情商:什么鬼标题

    高情商:有没有考虑改行去写轻小说

  • 主 資深大佬 : Vveeb

    @no1xsyzy 大佬所言全是我知识盲区…..
    后续的话,应该是没有了,领导也没招,所以工作内容就直接拿过来了不审了。反正不是特别重要的模块,到时候如果真的有需要往国外开发的仓库提 Pull Request 的话,就直接重做就完了。

    但是 《前传》的话,我估计真的能写上一本书了,共事一年多,一些惊天地泣鬼神的事迹我都用小本本记下来了。也成了日后跟朋友、同事闲暇之余的一段笑谈了属于是。

  • 資深大佬 : LokiSharp

    用过好点的 IDE 都能解决啊,买个 Rider 和 ReSharper

  • 主 資深大佬 : Vveeb

    @morimi2026 是的是的! 最后就是“闭一只眼瞎一只眼” 过去了。

  • 主 資深大佬 : Vveeb

    @tutustream 低情商: 一个方法写了 400 行,100 多的复杂度,回去给我改!

    高情商:您的这个 AI 算法写得真不错,能让我学习一下么?

  • 資深大佬 : aoeui

    我只想问,

  • 主 資深大佬 : Vveeb

    @aoeui 要是

  • 資深大佬 : Shazoo

    好奇,什么是“方法复杂度”?时间复杂度倒是经常得评估下。

    什么叫做 400 行 ,100 多的复杂度?这是什么量化标准?

  • 資深大佬 : sockpuppet9527

    我有个好办法,公费让她去波兰一趟就好了。 参考 : /t/693941
    有可能波兰老哥都看了两行,都不给她 code review 了。 🙂

  • 資深大佬 : dswyzx

    啊,我就喜欢类里边属性一股脑小写开头,问就是 json 直接粘贴而成。warning? 又不是不能用
    不过我支持主这么认真的对待规范

  • 主 資深大佬 : Vveeb

    @Shazoo 可能我用词不 biu 准哈,就是那种,多一个 if else 分支就会+1 的那种复杂度。量化标准好像没什么标准,开头说了“不算正规开发团队、差不多就是打杂的”。 最后代码还是要提 PR 给外国团队审核的,但是 400 多行的一个方法,里面基本都是 if else switch,并且注释都没有, 本身做的还是写 byte bit 的操作,条件里全是 “0,1,2,3,4”的。一般人多看两眼就吐了我觉得

  • 資深大佬 : JavaFirstMaster

    @Vveeb 这个人一看就是对代码没追求, 能力和责任心不强, 但是自尊心强. 你指出她错误的时候她应该是知道有问题的, 就是嘴硬+懒而已. 让领导下场是正确的做法.

    哪里都有垃圾代码, 我现在参与的项目里经常见到”不判断 null”, “if true return true else false”的代码. 以前我是个敲两行代码就要格式化一下的人, 现在也是见怪不怪了, 因为改出来问题了人家还埋怨你…

  • 主 資深大佬 : Vveeb

    @dswyzx 嗐,其实本身我也就是个“少儿班”的水平,我们的工作也没什么高深的东西,所以有点强迫症的我,大部分之间都在格式化代码+想命名+写注释。甚至会照着 NET 官方英文文档的格式来写我的方法的 XML 文档注释 + 遣词造句。

  • 資深大佬 : Jasonwxy

    深有同感,前一段时间我们这也来了个大神,不知道怎么招过来的。啥问题都要问,说了问题也不改,一个问题过一段时间问一次,之后我都直接翻聊天记录截图给他,反正跟他合作过的都苦不堪言。还好不久前走了,现在在收拾他留下的烂摊子
    感觉这种人就是没有责任+没有能力,除非哪天突然改了性子,别人没法改变他。跟这种人合作是真的难受,我到后期反正是不怎么理这个人了,该怎么办怎么办吧,最好早点滚蛋。这种人不适合去职场跟别人沟通合作,太自我

  • 資深大佬 : heaton_nobu

    你指着那个 400 行的 function 让她给你讲讲里面逻辑

  • 資深大佬 : goodboy95

    @Shazoo 这个方法复杂度,更专业的叫法是圈复杂度

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具