范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

为了绩效,10行代码被我改成了500行

  作者 | 路遥
  审校 | 千山、云昭
  现在有不少公司,以"代码量"作为程序员的KPI,程序员写的代码数目直接关系到这个月的工资。
  这里可以用比尔·盖茨的一句话来说"用代码行数来衡量编程的进度,就如同用重量来衡量飞机的制造速度"。
  此话题在51CTO技术社群里引发了热烈讨论。
  【Isaac】作为公司的管理者,必须认识到,你考核什么,就会得到什么。也就是说,你在关注代码量的时候,代码量就会程爆炸式增长,但是并不意味着项目进度快了,反而可能是更慢了。
  【梁飞】这样想呢?如果用C语言编程,写同样一句话:"hello world"用1行,用Python可能用10行,用Java可能用20行,这个咋衡量?而且不同级别的程序员写代码质量也不一样,就好比比尔·盖茨写Winodows底层代码,10行搞定了,执行效率很高,一个普普通通的程序员写了100行才搞定,而且执行效率低下。
  【测试小秦】用代码量考核有点扯淡,容易造成代码冗余吧?质量不就差了。
  【aiyo】肯定不合理, 拿这种当绩效考核,只会让简单的程序屎山化。最简单的增加代码行数就是减少函数复现,正常会把重复使用,或者同一个功能的代码封装成一个函数,要行数的话,就不会有人这么做了。把自己封装的函数在调用的时候直接把函数内容写进来。比如我一个函数int sum(int i[]); 里面内容有10行,在程序中我调用了50次,那我占的代码行数就是50行,如果我不封装这个函数,那我代码行数就是500行, 只看代码行数,那就只能做点无用功了。 1.代码多并不代表运行好代码少可能更利于软件的运行
  代码有两个基本要求,一是完成了它该有的功能,二是结构清晰明了,方便后期维护。为KPI而疯狂"凑字数",增加代码行数只会让代码不好读,不好用。
  根据某平台统计的一组数据来看:
  Linux的内核代码超2500万,经过完善,增加了2229836行代码,同时删除了2004759行代码,在增添了许多新功能的同时,删除了许多对旧的CPU架构的支持和内核中的其他无用代码。
  可见,在软件的发展过程中,代码数量并不决定软件质量。如果想要一个软件持续发展下去,必然需要对已有代码进行重构和重写,减去那些无用冗杂的代码,以增加整个Codebase的易维护性。
  研究表明,对于常用的编程语言,生产率似乎是固定的,但如果使用适当的高级语言,编程的生产率可以提高5倍。就拿现在还比较热门的编程语言Python和老牌编程语言Java来说,Java是比较繁琐的,同样的实现一个功能,Java需要很多行代码,但是Python可能就只要几行就可以实现了。
  这一点从下面两个例子中就能看出:
  打印Hello World
  来源:51CTO博客
  字符串处理
  来源:51CTO博客
  所以,在编程领域,高产出并不等于高价值。 2.用代码多少来评价程序员的贡献无疑是外行人的决定
  有一个有趣的说法,程序员按字数考核算绩效,是沿袭稿费制度。如果按字数结算,那就玩命灌水,如果按页数结算,那就拼命换行。程序员绩效参考稿费的结算方式,得到的结果也不过如此。
  程序员的工作并不是为了敲代码,程序员作为技术人员,编程能力、技术知识才是立足之本。代码是智慧的产物,代码的多寡和能实现的功能没有直接联系,创造代码是为了提高生产效率,所以代码的数量并不重要。
  而且代码的行数其实很容易增加,换行、初始化、赋值、添加注释、大括号中括号小括号,或者多写无用的类和方法,甚至可以把第三方的源码引入到项目中。但优质代码是经过深思熟虑且极尽优化的结果,其迭代过程可能数次甚至数十次,这些努力在最终代码是看不到的。说实话,想增加行数有无数种方法。但结果是什么呢,代码规范被破坏,而代码质量却难以提高。编程的本质是解决问题,而不是书写垃圾代码。
  在网上看见一个很有意思的例子,某一位非常优秀的程序员,别人100行代码才能完成的事儿,他10行就能搞定,但就因为公司搞起了按代码行评估绩效的制度,于是他开始把一行代码就能完成的功能,写成10行。
  比如一个给定两点计算矩形面积的函数,原本他写成这样一行代码: double getRectAreaByPoints(double x1, double y1, double x2, double y2){ return abs((x1 - x2)*( y1- y2));}1.
  (来源:知乎@安晓辉)
  现在他会写成这样:double getRectAreaByPoints (     double x1,     double y1,     double x2,     double y2 ) {     double width;      width = x1 - x2;      if(width < 0)     {         width = -width;     }      double height;      height = x2 - y2;      if(height < 0)     {         height = -height;     }      double area;      area = width * height;      if(area == 0)     {         return 0;     }     else     {         return area;     } }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.
  (来源:知乎@安晓辉)
  这么一看,弊端就很明显了,很多程序员把重心放在了如何增加代码行数上,而不是如何编写高质量代码上,甚至会有人不惜一切代价换取代码量,大量复制粘贴,完全不考虑复用,从而产生大量垃圾代码。
  所以,代码的行数并不适合作为工作量的衡量标准。3.程序员的贡献应从多方面来评估
  一个项目麻烦的地方往往在与框架的搭建功能、需求分解功能以及后续的功能测试,代码只占其中工作的一部分。代码能力可以随着经验和时间的增多而提高,但算法逻辑能力和架构能力则不会这样,这两样才是衡量程序员能力的重要标准,但这些"能力"无法计算。
  所以对于程序员的绩效考核,KPI标准应该复杂一些,不能单纯的统计代码行数,可以从代码的质量,发现Bug的数量,代码检测结果,单元测试覆盖度,项目中所担任的角色和工作量等多个方面考察得出。只有多方面考察得出的结果才能更真实的反映员工的工作能力,并以此激励程序员更加努力。
  像是国内互联网大厂腾讯的绩效考核分为两部分,业务评价和组织管理评价,通俗点说就是业绩考核和行为考核,其中业绩考核的权重为70%,行为考核的权重为30%。虽说网上没有公布明确的考核标准,但是也可以看出他们的考核也是在多方位同时进行的。

如果在施工挖到古代平民墓葬,但又无重大考古价值,该怎么处理?探讨这事,必须要说到西安,本来咸阳机场正在扩建第三期工程,结果挖到了3500座古墓,这下好了,扩建的机场,现在瞬间变成了考古基地,本来都是挖掘机,现在只能小刷子再拿西安的地铁来说一魔兽世界70年代最经典的饰品有哪些?你怎么看?70年代的经典饰品有很多,那么我先来介绍一件最贵的。第一最贵的装备无疑是穆鲁掉落的灰暗的纳鲁薄片简称灰薄。物理系毕业的装备,无论是盗贼还是战士或者是猎人,甚至熊德都可以拿,金团分钱不想交社保,每月往银行存1500元,存30年,退休后够花吗?一年万八。三十年五十四万,算上利息,大约一百万。退休后活二十年,本金一年五万,算利息一年能拿七八万。五十年后,通胀会是多少?按照过去五十年看,工资水平差四五十倍。也就是说那时候拿的农业银行的股价是不是在底部?根据农业银行的股票情况来看,确实是在底部,后市农业银行股价上涨的空间会远大于下跌的空间。为什么可以肯定农业银行的股价是在底部呢?其实可以从以下三个方面足够证明农业银行股价确实底部了为什么在一些银行员工中,感觉信贷员地位比柜员高,也是银行核心中的核心员工?信贷员一般指的就是客户经理吧,客户经理在领导心中的地位高于柜员,这个基本是每个银行普遍的现象,之所以这样,最主要的原因在于客户经理是银行创收的主力,银行利润的主要来源就是靠客户经理中国邮政储蓄银行究竟是不是国有银行?若是,为什么很少和工农中建一起称呼?重要消息,紧急通知不少人都听到这样的传言国内将有17家银行消失,这三种情况,银行会一分不赔,那么存款客户的本金安全该如何得到保障呢?这句话一出不少人都非常担心,到底是真是假?自己存中国科技到底比美国差了多少,为什么还是有不少去美国留学的?差距多少,单从科技领域来说,很大,大到你无法想象。美国50年前实现载人登月,中国现在还没有实现,去年只能说机器人才上去回来。美国30年前的哈勃望远镜,中国类似的还有好几年才能实现。浅色背景中拍浅色时装,会突出时装吗?时装摄影中,我们所拍摄的时装才是画面表现的主体,在表现视觉上,一定要让时装比较突出,以便更好的展示出时装的特点和亮点。浅色背景中拍浅色时装,会突出时装吗?拍摄时装的时候,背景的选择今年春晚会有德云社成员么,如果有你们觉得谁最有希望?我最希望能见到郭麒麟和张云雷,及唱京剧的那个娃娃。没有最好,有也不奇。我觉得少班主郭麒麟吧,各方面表现都不错央视3,央视4,天天都播曲艺节目。德云社众徒咋不创作高量作品,赶快上呀!美国欠了那么多国债,那些国家都不怕美国不还吗?美国不敢赖债也赖不掉,美国的国债已经超过28万亿美元了,就靠着借债生活,一旦美国赖掉国债,先完蛋的反而是美国自己!既然能买你的国债我就不怕你赖掉,你真赖掉最亏的反而是美国自己!总之农村有哪一样美食能让你回味无穷的?我最喜欢吃的就是豆杂面红薯干面和高粮面三碰头做的芝麻锅饼,沾上辣椒酱吃着真香,在不然用这些杂面手擀面条下羊肉在放一些霜打的红薯叶,特别好吃一连吃了三大碗肚子撑得棒棒的还要再吃一些,
说说历史先秦篇历史开讲先秦主要以夏商周春秋战国这几个阶段构成,其军事文化都进行了翻天覆地的变化。夏建立于公元前2010年,其前身是二里头文化,是最先确定世袭制的部落。起先与大禹治水,后继承首领位历史今日大事记(2月26日)关天培血战虎门1841年2月26日,民族英雄关天培率部在虎门与英国侵略者激战时壮烈牺牲。关天培,江苏淮安府山阳县人,1834年调任广东水师提督。外国侵略者看到清政府腐朽昏庸,千方百计企图打开中国二中华历史上第一个女皇不是武则天每天一个历史人物故事(二)女娲,中国上古神话中的创世女神。又称娲皇,是华夏民族人文先始,是福佑社稷之正神,被称为大地之母,是被民间广泛而又长久崇拜的创世神和始母神。女娲是一个真实存学会了MybatisPlus,代码开发效率提高了10倍1。Mybatis存在的痛点我们知道MyBatis是一个基于java的持久层框架,它内部封装了jdbc,极大提高了我们的开发效率。但是使用Mybatis开发也有很多痛点每个Dao接用chatGPT评价iPhone13有人说ChatGPT会取代好多行业,咱看它能不能,取代我们这个数码博主行业,就用它来写个简单的评测,选个大家都清楚的机器iPhone13,来测试一下,先是外观方面,ChatGPT这1000多万人,10亿多元的押金,估计再也要不回来了近日,有媒体报道称OfO小黄车,彻底凉凉了,APP无法登陆,小程序无法登陆,也无法收到验证码,同时OfO的客户电话,办公电话彻底无法打通。这意味着在挣扎了几年之后,OfO真的是放弃Arbitrum今年绝对要重点埋伏的黑马,你了解多少?Arbitrum是目前市场上最受关注的以太坊扩展解决方案之一,社区对Arbitrum推出实用性代币以及后续潜在的代币空投十分期待。Arbitrum是目前市场上最受关注的以太坊扩展解被老美坑了后,台积电浪子回头?专家坚决抵制作为中国企业的台积电发展迅速,这背后少不了有美国的帮助,近段时间这位浪子大有回头的苗头,可国家却表示要坚决抵制,这到底是为何呢?一台积电在美国建厂前两年美国对华为的打压有多么的严重放弃ZeroTier吧!基于wireguard和ipv6的异地组网方案两个异地的局域网怎么无感相互访问,最简单的办法就是购买异地组网服务,但是太贵实在用不起。有没有不用花钱也可以很好用方案了。稍微借鉴一下现有的内网穿透工具就可以做到不花一分钱也没又快冲阵踩踏与冲锋?魅族新机在续航上获巨额加强,开始用心了看文章听音乐是种享受,想听什么留言告知(都是付费无损包)2022年是手机行业的激进与同质化呈现最厉害且疯狂的爆发式增长的一年。无论是什么档次的品牌,只要是想在手机行业立足或者站稳脚如果你来过呼和浩特,这3种美食套餐不容错过,解馋美味价格不贵呼和浩特市,坐落于内蒙古的中部,是内蒙古的首府城市,旧时称三娘子城归化城,呼和浩特是蒙语,意思是青色的城市,所以也简称青城。呼和浩特街景这里不仅有敕勒川大草原,大召寺,黄河大峡谷老