开发者常见的十种不良编程习惯
陈峻编译   51CTO   2020-01-10

开发者常见的十种不良编程习惯

【51CTO.com快译】常言道:头上说不要,习惯却很诚实。爱人,您是否扪心自问过:有过若干次违背了编程的中心标准?或许您根本就没有意识到自己会常犯的这些不良编程习惯。实际上,咱们在交付已编译好的编码后,我家是不会在采取中牛上发现到程序的缺点。

普通,编程规则只会规定程序员在编辑代码时,要求遵循的规律、以及建议使用的品格,而不是这些细枝末节需要遵循的、有序的吩咐。故此,就算您偶有“犯规”也并不可怕。可怕的是不去认真总结,甚至置若罔闻。下,我将和您讨论十种普遍的不善编程习惯。

不善的编程习惯1:直接复制操作

请不要直接将他人的编码整块地研制、粘贴到自己之程序中,特别是这些已经标记了发言权信息的专有代码。请最好在知道的基础上,着手键入自己之本子。毕竟,您的老板或客户并不是花钱来请你专门进行研制、粘贴的。

当然,副代码的可靠性来说,咱们常见应当从信誉良好的源泉,获取那些经过原创作者深思熟虑、以及反复测试的编码。为了避免重蹈覆辙造轮子,诸多原始创作者会在各种在线编程论坛上共享、并开放自己之编码。不过,有时候他们可能会带有许可证(如BSD或MIT)、以及使用范围之限制。

此外,局部程序往往是针对某个特定的老大难问题所付出的。其中难免会生活着一些未被发现的错误、或是对现实情况之假想与限制条件。如果您只是将他简单地补充到自己之编码段中的话,很有可能会出现空指针、或是死循环之类的潜在错误。而由于原始代码并未预见到您的采取环境,故此可能会出现“水土不服”,甚至是促成效果并不可以的状况。

不善的编程习惯2:非赢利性的编码

在过去的十年间,服务性范式有了迅速发展。有多项研究证明:采用嵌套函数调用程序来构建程序的主意,与旧式的总分和循环模式相比,先后代码本身会更加安全,错误也会更少。故此,闻名程序员往往会通过核查代码、以及推拉请求的措施,来发现这些非赢利性的编码,进而让程序的组织更为合理且协调。

请不要妄想一次性设计出全面的架构。毕竟,仔细的分支设计、复杂的层面导航、以及用于构建的配套代码,都要求事先向程序员提供充足的年华、以及昂贵的花销。故此,为了确保所有必不可少的多寡能够正确地被定义,并能够通过准确的路子进行传递,进而让所有系统能够以高效的措施运行起来,咱们应有尽量保持代码的简短与宏观,无需遗留各种冗长的非赢利性代码。

不善的编程习惯3:非标准的区间

强烈,除了诸如Python等等少数编程语言使用空格间距来标识代码块之外,绝大多数次中的空格一般都不会影响软件的所作所为效果、以及整体性能。尽管如此,咱们依然需要抱着“糖尿病”的态势,渴求自己不要写出“非标的代码(Non Standard Code)”,特别是在等号的右手不要留下空格,以至于违反了ESLint space-infix-ops规则

有时候,过多之空格会导致必发娱乐登录的过载,甚至是出于空指针导致了序运行的崩溃。故此,在少数要求严格的硬件开发集团中,她们会专门成立标准委员会,以专业各种空格、或制表符在代码、以及页面中所允许出现的岗位。

在现实编程过程中,付出人员往往更注意于程序的效应与功力,而忽视了距离与空格之类的公式问题。不过,值得庆幸的是:脚下有某些种工具得以协助您自动化地正式代码的公式,并能遵守各种预先定义之插入规则。

不善的编程习惯4:goto的采取

人人使用goto的历史可以追溯到这些早于结构化编程工具的时期。那时,如果程序员们想创建一个循环,或是跳转到另一番例程,就要求键入goto、且后面跟上行号。多少年以后,玉器出现了,他允许程序员使用字符串标签,而不再是进号。那时,该系功能曾经被认为是一种热门技能。

现行,有越来越多之人数将此类编程习惯所产生之编码称为“意面式代码(spaghetti code)”。该系混为一团的点程纠缠在总共,别人完全无法读懂,而且其自己很可能会陷入遵循执行的门路。布局程序设计之父Edsger Dijkstra曾经针对此现象发表了《Goto声明显然有害(Goto Statement Considered Harmful)》的篇章

表现解决方案,您可以巧妙地采取break或return,来清晰地声明代码执行到这里的后继行为。当然,咱们有时候也得以把goto补充到case说话中,名将产生比级联“if-then-else”块结构,更为正确的列表,以及更容易理解的情节。

表现一个反例,您也许听说过苹果SSL堆栈中的“goto fail”安全漏洞。如果我们能够谨慎地避免case说话与循环相关的老大难问题,只插入break或return等等有效的绝对跳转,这就是说就会让所有问题容易处理得多。

不善的编程习惯5:未声明的项目

有经历的程序员都晓得:只有为每个变量的多寡类型都添加清晰的声明,咱们才能编纂出更美好,bug更少的编码。咱们只有提前完善了品种的声明,玉器在执行程序代码时,才不会遇到一些“愚蠢”的错误。这种编程习惯的养成虽然可能很痛苦,但是它绝对会让您受益。

当然,随着技术之上进,现行许多新式的变压器已经足够聪明,能够通过查看代码的上下文,来推断变量是否属于string、int或其它品种。如果编译器实在无法推断出正确的项目,他也会抛出相应的错误。

不善的编程习惯6:yo-yo代码

“yo-yo代码”是指:表现字符串存储的数值被解析为整数,接着又把更换回了字符串。众目睽睽,这是一种特别低效的措施。他额外地耗费了大量之CPU能源。故此,经历丰富的码农会通过合理的顺序结构,来大幅削减转换所需的总量,进而提升代码的运作效率。

现行我们时常听到业界有人谈论偿还“艺术债”的传教。他在此地可以把理解为:程序员通过重写所有现有的编码,清除yo-yo代码,以最大限度减少数值类型转换的资金与时间。

不善的编程习惯7:编纂自己之多寡结构

一部分初出茅庐的程序员往往喜欢自行编写某种用于存储数据的编码。而那些数据结构难免存在着他们着想不周的潜在漏洞。其实他们应该知道:表现一种成熟的编程语言,各族常见的多寡结构已有前人提前准备好了。而且这些程序代码往往与语言捆绑在总共,历经了多年之统考与检验,开发者可以放心大胆地免费使用。

当然,有时候现成的多寡结构库为了规范的要求,而在存放之前迫使我们重新安排输入的多寡。故此,咱们可以方便地针对线程锁等效果进行代码级别的调节,剔除不必要的、数量格式化之类的编码,以实惠整体布局更加简洁。

不善的编程习惯8:老式循环

很久以前,C语言的创作者希望名将全部的泛可能性都封装到一个简单的结构之中,这就导致了每次调用都要求循环地展开各类操作,并要求告知操作的成就。众目睽睽,这会让程序的读报变得很差。现行,人人更趋向具备功能性的范式(paradigm),直接将功能函数应用到列表中,名将计算模板映射给一点数据,而不再利用循环。

在只有一度清洁的函数和一个数组的时节,采用不带循环的主意会让程序变得更加易读且简洁。但是在需求首先找到匹配项就立即停止搜索的面貌下,老式的循环仍然会让程序既简单又高效。

当然,照耀函数更适于您对数据执行多项操作。例如:您想先取绝对值,下一场取每个数字的变数。这就是说最快的主意就是:先映射第一个函数,下一场映射第二个,接着将数据循环两次。

不善的编程习惯9:副循环中跳出

局部程序员在上下班的时节,喜爱在每个循环中都使用一个变量,并且在该变量为真(true)的时节,就结束循环。虽然这是处置复杂循环的一种好办法,但是它会在某种程度上禁止我们在循环中采用return或break。

不善的编程习惯10:重新定义运算符和函数

对于一些初级程序员而言,出于文化与经验的欠缺,她们可能会重新定义运算符和函数。例如,在Python 2.7、及其之前的本子中,您可以指定TRUE=FALSE。这将导致的结果是:他会在您的编码中将TRUE和FALSE的意思进行交换。同时,在C语言预处理器、以及一些其他语言中,您也得以去重新定义加号之类的运算符。

当然,该系重新定义也并非百无一用。面对巨大的既有库,您可以在无需重新改写代码的情况下,临时借用一下该“反转”效益,来简化大段的编码。

概括,咱们在此罗列的所谓开发者常犯的十项恶习,实际上并非一成不变的。第一就在于您是否能够在方便的面貌下,采用方便的编程方式。

原文标题:10 bad programming habits we secretly love,笔者:Peter Wayner

【51CTO来稿,合作站点转载请注明原文译者和出处为51CTO.com】

【义务编辑: 庞桂玉 TEL:(010)68476606】
分享到朋友圈 分享到微博
  • 开发者
  • 编程习惯
  • 编程方式
  • 相关推荐

    C还是Rust:慎选哪个用于硬件抽象编程

    2020-01-29 09:20:47

    阿里开源MNNKit:基于MNN的运动端深度学习SDK,支持安卓和iOS

    2020-01-23 15:08:02

    分享一些有意思的程序员资源与工具

    2020-01-20 14:28:05

    Copyright © 2005-2020 51CTO.COM 必发娱乐登入
    情节话题
    必发娱乐登入 移步 传感器 系统 安全 网络 必发娱乐登录 虚拟化 付出
    热门产品
    51CTO必发娱乐登录 51CTO高招 移步开发者服务联盟网+ 51CTO博客 WOT碰头会