作家
登录

这些不良习惯可能会导致你的代码无比糟糕

作者: 来源: 2017-04-25 17:34:46 阅读 我要评论

当在将老的 Python 代码库移到 Node 的时刻,我心坎是有点小冲动的。这些项目相对于惯例的代码保护工作总会给你更多的创造性的自由。从新编写其他人的代码带来的挑衅使得这一切变得异常高兴。

这些不良习惯可能会导致你的代码无比糟糕

但这种高兴之情在我看了一眼我们即将要做的工作的时刻很刻就稃掉了。旧代码真的是很恶心,我已经编程 15 年了也就只见过几回如许的情况。原作者创建了他们本身的框架构造,并且可以称得上是一个反模式的灾害:没有存眷点的划分,混淆空格/制表符缩进,同一个概念有多个名字,变量被来自不合的然则几乎有雷同的办法下的同一个数据过多的重写,字符串。。。这一烂摊子就似乎是呀呀学语的猴子大年夜 Google 随便复制代码的结不雅。

结语

然则,刺激我写下这篇文┞仿还不只是因为代码本身糟糕的质量,而是在经由几个月工作下来,我惊奇地发明原作者实际上是一群拥有很高技巧程度的资深工程师。是什么导致一群有才能的开辟者产出场交付如许一堆垃圾呢?我能想到的原因有很多。这些是我认为连资深的团队都可能会感染的坏习惯,这些坏习惯会严重地影响你的终端产品,甚至连源码检查或者开辟办法论都无法拯救。

过于强调预算

这个项目标一个重要问题就是过多的存眷截止刻日,这对代码质量带来了很大年夜的伤害。如不雅开辟者们被迫存眷交付而非编写一个好的代码本身,他们最终不得不为让老板高兴而买单。原因有两种,一是估计过高,二是承诺过多,不管如何,最终都邑带来更多的包袱。

举一个例子,在这个项目上,我会发明一些代码明显在其他处所已被写过,然则似乎当时急于交付,一些开辟者也就懒得检查是否有其他人在此之前已经写了雷同的办法或者SQL萌芽。

有些时刻,预算可能是假的。例如,Agile有一个术语叫“速度”,这个概念是为了计算你的团队交付有多快,然后做一些须要的调剂来提速。问题是在短期到中期里是不太可能算出一个精准的速度的。平均轨则强度,你不克不及凭借以前的事迹来测量你如今的速度,因为以前的事迹并不是一个好的将来结不雅的指导器。

(注:平均轨则是一个外行术语,认为一部分小样的数据分布的结不雅肯定会反竽暌钩全部数据分布的结不雅)

平日来说,因为效不雅很快会在项目标成本上表现,是以您的开辟人员可能会选择过度承诺,然后跳过重要的工作,如推敲架构的问题,或者若何使义务主动化,大年夜而达到一个不实际的截止刻日。这些义务平日是被视为附加值,所以它们会在没有通知的情况下直接削减。积聚的技巧债务越多,产品的质量也就随之降低,甚至会比以前假想的更多,因为在一个项目上后期重编代码的价值会成倍增长。

不看重项目常识

跟着您的项目标推动,您的团队会进修营业,营业背后的概念以及它们是若何联系袈溱一路的。他们还会在编写代码时研究实现方法,因为您无法完全懂得营业的演变以及将会见临的挑衅。一些营业范畴甚至本身就很复杂,须要很长时光才能消化。

因为这是对旧代码的周全重写,在这方面特别有趣,因为它可以显示您的团队的治理层是否懂得项目常识以及它对开辟的影响。如不雅你在一个大年夜型项目中,没有专家,没有人干预干与项目常识,这是一个很大年夜的危险旌旗灯号。重写代码的价值完全在于应用你第一次学到的项目常识,所以项目常识很名贵。

如不雅你把不合的团队放在一路做重写,就像我的情况一样,你忽视了所有的项目常识进修,只依附你的新队员的技能,这可能不会弥补缺乏的信息。比起把工作完全交给别人,一个通俗的开辟人员能更好地重写他本身写的内容,他会做的更快。

即使雇用也受到项目常识的影响。项目标信息越多,人们成长须要的时光就越长,所以不仅仅常识很重要,还要重视雇用好的人才。如不雅招的不好,你会忙于敷衍一个糟糕的团队,几个月内什么事也做不成。

重点存眷诸如 “封闭的问题” 或 “天天的提交” 等不好的指标

  • 当一个政策变成目标,它将不再是一个好的┞服策。 - 古德哈特定律(Goodhart's law)

一些时刻当我开端着手于推动项目标进度,一些人会问我为什么另一些开辟者封闭问题的速度远远快于我,似乎解决得越快是一件功德。你可以想象到,当我去瞥一眼他写的代码,在一行琅绫擎发清楚明了 4 个 bug。存眷于像如许弗成靠的指标美满是与项目脱轨的,会引起人们类似于项目截止期即将到来般的压力。

似乎很少人存眷的一个指标是问题的重现率。一些 bug,例如空指针异常, 可能会在后期反复的出现,如不雅你并没有跟踪它的复现,那看起来就像 bug 会无处不在地赓续出现。在这种情况下,你将永远无法找到问题的泉源,因为你的存眷点错了。

最终真正重要的是交付给客户的器械,他们拿到产品时的愉悦,以及它若何影响他们的底线,然则它须要大年夜量的自我治理,专注于进步交付的质量和对无意义指标的忽视,如提交率或封闭的问题。

懂得一个指标有意义与否的一个好的办法是试着去懂得其所表现的小我价值。存眷那些可以给出好的建议、表现沟通技能和优胜立场,尤其是须要巨大年夜的付出才能作弊的指标。

假想好的流程能弥补人员本质的不足

优胜的流程常在贸易上被认为是灵丹妙药。以我在一些公司里的经验来说,尤其在那些应用了差劲的┞沸聘办法的大年夜公司,最终使得他们的操作流程越来越严格,这反过来限制了团队介入人自由的发挥创造性。话虽如斯,然则仍然须要人们起首按照正常的流程工作。

这永远不会停止,除非经由过程改进雇用办法来弥补该问题。人才可以弥补你的团队在效力上的不足,这是使工作化艰苦为高效的┞符个关键点。

开辟人员之间可能特别难以沟通。在应用一个复杂的代码库时,我不得不大年夜他人那边寻求赞助,也不见得每一次他人都能高兴的抽出时光赐与援手。无法回馈一个优胜的立场,并且在艰苦的义务面前如不雅你须要寻求赞助,却只能指望那有限的几个有才能且愿意帮你一把的队友,此时你会倍感压力。


  推荐阅读

  Python分布式抓取和分析京东商城评价

既然商批评价对于花费者选购商品而言至关重要,那么我想尝尝可以大年夜这些评价信息中获取到如何的价值,来赞助花费者快速获取到关于该商品的一些重要信息,给他们的购物带来加倍靠得住地>>>详细阅读


本文标题:这些不良习惯可能会导致你的代码无比糟糕

地址:http://www.17bianji.com/lsqh/34955.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)