优秀程序员的特质_139个使程序员更好的特质

优秀程序员的特质

您应该记住的事情。

面对现实,每个开发人员都想改善并变得更好。 大多数开发人员提出的最大问题是我将如何做。 以下是编程时应记住的事项。

代码展示

  • 随着对代码布局的任何讨论的增加,它下降为毫无结果的论点的可能性接近一个。 您知道制表符与空格,括号在新行或同一行上的放置天气。
  • 一种好的代码格式并不是您认为最漂亮的一种。 一种好的格式可以简化扫描和阅读代码的格式。
  • 良好的代码演示可以揭示您的代码意图。 这不是艺术上的努力。
  • 我们需要良好的表达方式,以避免产生代码错误。 并非如此,我们可以创建漂亮的ASCII艺术。
  • 我们编写的代码要由计算机执行,但要由人类读取。
  • 如果有人希望写出清晰的风格,首先要让他的思想清晰。
  • 选择一种布局样式并一致使用,或采用编码标准或样式指南。
  • 如果您使用的文件不遵循项目其余部分的布局约定,请遵循该文件中的布局约定。

命名

  • 一个好名字是描述性,正确性和惯用语。
  • 如果您确切知道某物是什么,则只能将其命名。 在为变量赋予隐名之前,请确保您知道它是什么。
  • 避免冗余。 它表明您没有想到要对正在构建的内容进行命名。 是类,函数还是变量
class ItemList {
public int numberOfItems () {…}
}
// numberOfItems is unnecessarily long, repeating the word Item
// it could be renamed to size or even length
  • 使用您的语言中最常用的大写约定。 与C#方法一样,大写的Console.WriteLine("Hello World")
  • 确保您的姓名准确无误,避免拼写错误。
  • 切勿同时更改演示和行为。 使它们分别受版本控制。
  • 当您获得经验时,请调整您的演示样式。 作为初学者,您不一定总是从良好的代码演示开始,而是更加担心程序是否有效。

写更少的代码

  • 编写大量代码并不意味着您已经编写了很多软件。 这可能只是意味着您编写了很多错误。
  • 更多的代码意味着有更多的阅读和更多的理解–这使我们的程序更难以理解。
  • 您拥有的代码越多,隐藏错误的地方就越多,要找到它们并找到它们可能并不容易。

避免不必要的代码

无意义代码的常见类别是不必要使用条件语句和重言式逻辑构造。 松散的逻辑是思想浮躁的标志。

// example
if (expresion) {
return true;
} else {
return false;
}
// which can be refactored to
return expresion;
  • 清楚简洁地表达代码。 避免不必要的冗长的陈述。 它们不会为您的代码增加任何价值。

复制

  • 不要复制代码段。 将它们分解为共同的功能。 使用参数来表达任何差异。
  • 如果发现重复,请将其删除。

死码

  • 无效代码是永远不会运行,永远无法到达的代码。
  • 告诉您的代码谋生或迷路。

无效代码的其他表现包括:

  • 永不调用的函数
  • 写入但从未读取的变量
  • 传递给从未使用过的内部方法的参数
  • 从未使用过的枚举,结构,类或接口

注释

  • 好的代码不需要大量的注释来进行支撑或解释其工作原理。
  • 确保每个注释都为代码增加了价值。 代码本身说明了什么以及如何进行。 评论应解释原因-但前提是尚不清楚。
  • 不要通过注释删除代码。 它使读者感到困惑,并妨碍了工作。
  • 每天,让您的代码比以前更好。 找到冗余和重复项后将其删除。

通过删除代码来改进代码

  • 您可以通过添加新代码来改进系统。 您也可以通过删除代码来改善系统。

在开发过程中如何产生死代码

  • 功能已从应用程序的用户界面中删除,但保留了后端支持代码。
  • 向导生成的UI代码插入了从未使用过的钩子。
  • 尽可能删除无效的代码。 它会妨碍您的速度。
  • 删除将来可能需要的代码是安全的。 您始终可以从版本控制中将其取回。
  • 代码清理应始终在对功能更改的单独提交中进行。
  • 死代码甚至在最好的代码库中也会发生。

警惕过去

您在编写代码时以为它是完美的,但对旧代码却持批判态度,您不可避免地会发现各种形式的代码陷阱。

  • 回顾旧的代码将使您了解编码技能的改进(或其他方面)。

如何处理现有的代码库

进入任何现有的大型代码库都很困难。 您必须Swift:

  • 发现从哪里开始看代码
  • 弄清楚代码的每个部分做什么,以及如何实现
  • 衡量代码的质量
  • 找出如何在系统中导航
  • 理解编码习惯用法,因此您的更改将同情地适合
  • 查找任何功能的可能位置(以及由此引起的错误)
  • 最好的编码方法是由一个已经了解地形的人带领。 不要害怕寻求帮助!
  • 学习代码的最佳方法是对其进行修改。 然后从错误中学习。
  • 许多程序员宁愿说“它很丑”然后重写它,而不是花精力阅读和理解现有代码。
  • 准备遇到错误的代码。 用锋利的工具填充您的工具箱以进行处理。
  • 一些肮脏的代码只是由能力较弱的程序员编写的。 或在糟糕的日子里由有能力的程序员来做。
  • 当您遇到“不良”代码时,让您感到沮丧。 相反,寻找切实改善它的方法。
  • 您不能期望任何代码,甚至您自己的代码都完美。
  • 遵守童子军规则。 每当您触摸某些代码时,都比发现的要好。
  • 缓慢,仔细地更改代码。 一次进行一次更改。

处理错误

  • 不要忽略代码中可能的错误。 不要推迟处理错误,直到“稍后”(您将无法解决)。
  • 纪律严明地使用例外。 了解您语言的习惯用法和有效使用例外的要求。
  • 必须使程序员意识到程序错误。 必须使用户知道使用错误。
  • 记录错误(在某处)还不够好,并希望勤奋的操作员会注意到错误并有一天对此做一些事情。

为意外做好准备

  • 在每一步中,请考虑可能发生的所有异常事件,无论您认为它们多么不可能。
  • 始终考虑可以从中恢复的错误,并编写适当的恢复代码。
  • 确保错误处理是惯用的,并使用适当的语言机制。
  • 在编写代码时,请考虑所有潜在的代码路径。 不要打算以后再处理“异常”的情况:您会忘记的,并且您的代码会出错。

猎虫

  • 程序员编写代码。 程序员并不完美。 程序员的代码并不完美。 因此,它第一次无法完美运行。 所以我们有错误。
  • 我们应始终采用合理的工程技术,以最大程度地减少令人不愉快的意外发生的可能性。
  • 调试的难度是一开始编写代码的两倍。 因此,如果您尽可能聪明地编写代码,那么就定义而言,您不够聪明,无法对其进行调试。
  • 将错误减少到最简单的复制步骤集。
  • 确保您专注于单个问题。
  • 断言和日志记录( even the humble console.log and nodejs assert )都是有效的调试工具。 经常使用它们。
  • 二进制剁碎问题空间以更快地获得结果。
  • 在开发软件时,请花时间编写一套单元测试。
  • 未经测试的代码是滋生错误的温床。 测试是您的漂白剂。
  • 了解如何很好地使用调试器。 然后在正确的时间使用它。
  • 尽快修复错误。 在您陷入代码漏洞之前,不要让它们堆积。
  • 调试并不容易。 但这是我们自己的错。 我们编写了错误。

始终测试您的代码

单元测试专门隔离地行使最小的功能“单元”,以确保它们各自正常运行。 这种隔离特别意味着单元测试将不涉及任何外部访问:不会运行数据库,网络或文件系统操作。

  • 质量是免费的,但仅限于愿意为此付出高昂代价的人。
  • 为了改善我们的软件开发,我们需要快速的反馈,以便尽快发现问题。 好的测试策略可以缩短反馈循环。
  • 在编写被测代码时编写测试。 不要推迟测试写作,否则您的测试将不会有效。
  • 所有测试都应在您的构建服务器上运行,作为持续集成工具链的一部分。
  • 测试您的应用程序中重要的部分。
  • 全局变量和单例对象是可靠测试的败笔。 您无法轻松地测试具有隐藏依赖性的单元。
  • 将您的代码分解为“可测试的”将导致更好的代码设计。
  • 程序测试可用于显示错误的存在,但从不显示错误的存在。

如何应对复杂性

  • 朴素是一种伟大的美德,但要做到这一点需要艰苦的工作,要学会欣赏它就必须付出努力。 更糟糕的是:复杂性卖得更好。
  • 复杂性通常是偶然的,很少有人故意添加。
  • 推迟设计决策,直到您必须做出决定为止。 当您还不知道需求时,不要做出架构决定。 不要猜

实践使完美

  • 程序员需要良好的品味和美感才能编写出色的代码。
  • 任何聪明的傻瓜都会使事情变得更大,更复杂,更暴力。 朝相反的方向前进需要一定的天才和勇气。
  • 好的软件开发不是牛仔编码,它会抛弃您可以想到的第一个代码。 这是经过深思熟虑的,准确的努力。
  • 优秀的程序员要谦虚地工作。 他们承认他们并不知道全部。
  • 好的代码和好的编码器源于以正确的方式编写正确的事物的渴望。

成为团队合作者

  • 编程团队有一套规则。 这些规则定义了我们做什么以及如何做。 但是它们也描述了一种编码文化。
  • 不要依赖模糊,不成文的团队“规则”。 使隐式规则明确,并控制您的编码文化。
  • 将错误修复应用于根本原因,而不是症状显现的地方。 粘贴石膏症状修复程序不会导致简单的代码。
  • 避免在代码中使用隐式假设。
  • 只编写所需的代码。 多余的是复杂性,这将成为负担。
  • 停下来想一想。 不要写愚蠢的代码。
  • 承认您的错误和错误的编码决定。 向他们学习。
  • 勇于动脑。 感到有能力批评代码并就如何改进代码做出决策。
  • 了解什么使软件易于更改,并努力设计具有这些属性的软件。
  • 要修改代码,您需要勇气和技巧。 不鲁ck。
  • 通常,最好进行一系列频繁,小的,可验证的调整,而不是进行大范围的代码更改。
  • 避免复制粘贴代码。 将您的逻辑分解到共享函数和公共库中,而不要遭受重复的代码(和重复的bug)。
  • 编写小的模块化代码段。 保持清洁整洁。
  • 应该将代码“共享”,因为它对多个客户端有用,而不是因为开发人员想要创建一个漂亮的共享库。
  • 不要忽略别人的密码。 使用现有库可能比编写自己的版本更好。
  • 创建软件版本需要纪律和计划。 它不仅仅是在开发人员的IDE中实现“构建”。
  • 始终从头开始以全新的方式构建软件。 切勿重用软件构建的旧部分。
  • 使您的构建变得简单,只需一步即可自动化流程的所有部分。 使用脚本语言来执行此操作。
  • 在CI服务器上部署构建以确保其运行状况。 从同一系统进行正式发布。
  • 处于持续学习的状态。 总是希望学习新的东西。
  • 我们的学习往往过于狭窄。 考虑更广泛的参考范围。 从许多领域汲取灵感。
  • 在学习时记笔记。 即使您将它们扔掉。
  • 如果您不能简单地解释它,则说明您不够了解。
  • 教一个主题以很好地学习该主题。
  • 我听到了,我忘记了。 我看到了,我记得了。 我知道,我知道。
  • 使用您刚刚学到的内容,可以将其牢记在心。 尝试例子,回答问题,创建宠物项目。
  • 警惕停滞。 根据定义,寻求成为一个更好的程序员并不是最舒适的生活方式。
  • 期望投入时间和精力来提高技能。 这是值得的投资; 它会偿还自己。
  • 不要通过编写不可读或不必要的“聪明”代码使自己“不可或缺”。
  • 兑现软件许可证。
  • 不要成为一窍不通的小马。 使自己适应新的挑战,学习并成长为一名开发人员。
  • 爱所有语言
  • 学习遵循不同习语和范例的语言。
  • 还可以考虑学习一些不再使用的“死”语言,以了解您的手Craft.io品的历史。
  • 优秀的程序员知道多种语言和多种习语,从而拓宽了解决方案的范围。 它改善了他们编写的代码。
  • 使用编程语言是您每天必须工作的一种关系。
  • 为了用一种语言编写最好的代码,您应该遵循其风格和习惯用法,而不要强加于自己。
  • 好的程序员是好的沟通者。 他们会说,写,编码,听和读得很好。
  • 不要指望在一夜之间成为语言高手,并且在工作时不要沮丧。
  • 首先将精力集中在最重要的事情上。 什么是最紧急的,或将产生最大价值的?
  • 如果您经常做某事,请让计算机为您完成。 使用脚本将其自动化。
  • 将大型任务分解为一系列较小的,易于理解的任务。 您将能够更准确地判断这些进度。
  • 确保定义“完成”。
  • 如果您无法确定何时完成,则不应该启动它。
  • 使用用代码编写的测试来定义您的代码何时完成和工作。
  • 不要做比必要的更多的工作。 工作直到完成。 然后停下来。
  • 遇到问题时,请确保您考虑了多种解决方法。 只有这样,您才应该开始研究它。
  • 有目的地将自己置于优秀的程序员旁边。
  • 更多注释不一定会使您的代码更好。 交流代码不需要额外的注释来支持它。
  • 了解开发方法,趋势,宣言和时尚。

如果您发现此帖子有帮助,请分享它,以便其他人可以找到它。 您可以在 GitHub LinkedIn 上关注我 如果您有任何想法和改进,请随时与我分享。

编码愉快! 💪

翻译自: https://hackernoon.com/139-traits-that-make-a-better-programmer-4d0d916b9f78

优秀程序员的特质

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值