编写好的代码是每个开发人员的待办事项清单上的一个目标。一开始,我们正在学习绳索并习惯于随处可见的代码,所以我们不会太担心正确或更好的 *** ——我们只想要代码有效。
然而,当我们开始习惯编码时,“让它发挥作用”就不再那么简单了。然后我们想知道我们所做的是否真的是我们更好的,如果不是,我们如何改进。
如果你想提升和提高自己,你必须把你的编码提升到一个新的水平。本指南将帮助您了解编写好的代码需要什么以及永不回头的心态。
如果您不是计算机科学专业的毕业生,那么您可能没有在Big O 上做过很多工作。Big O 是一种数学符号,允许在假设存在无限输入时测量计算机算法的速度和内存大小。
这是衡量代码效率和成本的一个很好的衡量标准,但除此之外,Big O 无法衡量其他任何东西。它是一种数学工具,用于衡量我们代码的复杂性;但是,它不会权衡人为变量、特定系统要求或我们的软件架构。
我并不是建议你应该忽略 Big O,但你应该把它当作它的本质——一种数学 *** ,它构成了什么是质量代码的标准的一部分——而不是把它作为绝对的衡量标准。Big O 是衡量代码质量的良好起点,但不要止步于此。你还有工作要做。
代码持久性是构成高质量代码的最被低估的因素之一。简而言之,它衡量您的代码将在生成和维护生产代码的所有阶段(从功能构思到最终测试和部署,再到重构、调试和新功能的实现)的所有阶段。
想想有多少代码通过了所有这些过滤器并到达终点,更重要的是,有多少代码通过所有新的修订和未来的实现而留在那里。
当某些代码必须部分或全部重写时,这是浪费时间和巨大的障碍,因为没有人知道它做什么或它如何工作,或者因为从头开始编写它而不是试图使其工作更具成本效益。这段代码不是高质量的代码,它不会随着时间的推移而发生变化。
系统可以改变,需求和技术也可以改变,但好的代码无需修改或很少修改就能存活下来。
下次您编写代码时,请坐下来思考“我怎样才能以只需要编码一次的方式解决这个问题?” 解决方案不会像您想象的那么明显。发挥想象力并创建一些很棒的代码。
有大量的插件、附加组件和格式标准,但很可能您将被迫在特定工作中使用特定工具或标准。但不要认为这是一件坏事。相反,限制将迫使您学习新的编码模式并灵活运用您的技能。
这些工具将帮助您组织和统一您的代码,但它们不会为您完成这项工作。你拥有的更好的工具是意识到你在做什么并保持一致。
以下是一些提高代码质量的技术思路:
使用棉绒。遵守编码标准。适当地注释您的代码。使用好名字(变量、函数等)。不要忽视适当的测试。利用自动代码审查工具和持续集成工具。分享您的代码并征求反馈(代码审查)。注意项目的大局。与经验丰富的开发人员结对编程。及时了解更新和新库。阅读代码完整和干净的代码。使您的代码获得技术帮助可能会有很大帮助,但如果您不知道如何正确使用工具,这也会使您退缩。找到可以利用技术知识而无需浪费时间过度设计代码的更佳位置。
凯尔·辛普森 (Kyle Simpson ) 解释了编写“人类代码”的想法,这意味着编写代码时明确地表明它是为我们而不是为计算机编写的。是的,计算机会编译、链接、执行并与代码交互,但是现在有很多抽象层,我们的代码几乎无法翻译其确切意图。所以在这里“保存”一些字符或使用字体连字是没有意义的,因为它们会更快地解析。
这个“人类代码”的想法非常棒。它允许您编写尽可能清晰易懂的程序,并始终考虑我们未来的自己或将处理它的同事。
当然,您应该确保不会降低性能(Big O)和其他因素,例如编码标准,但始终牢记这是给人类的信息,而不仅仅是使某些事情起作用的代码片段。这是一个巨大的心态转变,将帮助您编写更好的代码。
换工作的一 *** 烦是了解新的代码库。有人不同意吗?我以为不是。在一大堆未注释的新旧意大利面条中游泳可能会令人伤脑筋。但几周后,这一切都开始变得有意义了。
帮自己一个忙,使用常识来了解如何将新代码安装到旧代码库中。您的新代码可以流畅、快速、优雅且易于沟通,但如果它位于错误的文件、错误的作用域或错误的块上,它仍然看起来不合适。上下文很重要;适合新代码的位置很重要。请记住,您正在为您和您的同事编写代码——将代码停在何处可能会产生很大的混乱或有见地的澄清。
代码库中的设计模式意义重大,所以不要破坏它们。顺其自然。如果您的项目在函数式编程上投入了大量资金,请不要像疯子一样四处创建类和 *** ;它会让你看起来很糟糕,它会让每个人都感到困惑。编写好的代码是本能与知识相遇的地方。两者都需要时间,但奖励是一种真正的艺术形式。
在您发布任何代码之前,您应该问五个问题,它们会成倍地提高您对上传的内容是好的还是只是另一个临时解决方案的认识。
在每次提交之前,尝试回答以下问题:
如果您对代码的一部分进行了错误的更改,您的系统会崩溃吗?您的代码可以在系统的其他部分重用吗?随着时间的推移,您的代码是否可以轻松更新或升级而不会添加错误?您的代码是否易于理解,是否符合逻辑?您的代码高效且体积小吗?如果您不能对这些问题中的任何一个给出明确和满意的答复,则意味着您应该回去重新考虑您的代码。假装问题不存在不会让它消失。
有时重写整个事情会更好。旧技术、有很多错误的糟糕代码库、需要全新架构的新需求以及升级问题是为什么这可以成为一个可行选择的几个原因。无论出于何种原因您正在考虑它,请确保它是正确的决定,并且下次您做出正确的决定并 *** 经久耐用的代码。
编写高质量、持久的代码不仅是可能的,而且是必要的。2019 年 6 月,Tidelift 和 The New Stack 联合对专业软件开发人员进行了一项调查,显示开发人员 70% 的时间花在阅读代码上,平均每天输出约 10 行代码。这意味着我们花费了大量时间来弄清楚我们的系统是如何工作的,而不是实际编写一些代码。
就像生活中的一切一样,伟大的代码是关于平衡的;没有一刀切的答案。这取决于您的系统、您的输入以及您想要达到的结果。但是您需要知道如何调整规模和比较,如何返回和调整,以及如何编写永不消亡的代码。
本指南将帮助您编写更好的代码。不要只是阅读它。研究它,分享它,提供一些反馈,最重要的是应用它。
伟大的程序员不是天生的;随着时间的推移,他们努力变得更好。
记住,保持冷静,远离代码!
网络安全公司Trustwave的安全团队SpiderLabs警告Windows用户,一个名为Vidar的新恶意软件活动将自己伪装成微软支持或帮助文件。因此,毫无戒心的用户可能很容易成为受害者,而Vidar是一个偷窃数据的恶意软件,可以窃取被利用者的信息。 微软编译的HTML帮助(CHM)文件虽然现在...
Hackernews 编译,转载请注明出处: 据观察,一个利益熏心的黑客正在部署一个全新的针对 Oracle Solaris 系统的 rootkit,目的是ATM机网络,并在不同银行使用伪造的卡进行未经授权的现金提款。 威胁情报和事件应急公司 Mandiant 正在追踪名为 UNC2891的组织,...
根据Motherboard购买的几组数据,一家定位数据公司正在出售与访问提供堕胎服务的诊所有关的信息,包括计划生育设施,显示访问这些地点的人群来自哪里,他们在那里停留了多长时间,以及他们随后去了哪里。 在泄露的最高法院意见草案中, Alito法官表示,法院准备废除罗伊诉韦德案的裁决,该案是数十年来为...
微软今天宣布,它将默认阻止5个Office应用程序中VBA宏脚本的执行,这是近年来影响最大的变化之一。从2022年4月初开始,Access、Excel、PowerPoint、Visio和Word用户将不能在他们从互联网上下载的不受信任的文件中启用宏脚本。 安全研究人员多年来一直要求作出这一改变,这将...
英国政府拟议中的一项措施将迫使科技公司开发工具,让用户过滤掉任何被认为 “合法但有害”的材料。这些新措施被添加到英国即将出台的《网络安全法案》中,该法案将强制要求数字平台承担起保护用户免受有害内容影响的责任。 根据英国政府周五宣布的新计划,Facebook、Google和Twitter等科技平...
根据微软蜜罐服务器网络收集的数据,大多数暴力攻击者主要试图猜测短密码,很少有攻击是针对长密码或包含复杂字符的凭证的。”我分析了超过2500万次针对SSH的暴力攻击所输入的凭证。这大约是微软安全传感网络中30天的数据,”微软的安全研究员罗斯·贝文顿说。 “77%的尝试使用了1到7个字符的密码。超过1...