每个开发人员应尽早学习的内容

发布于:2021-01-07 10:28:56

0

256

0

开发人员 学习 编码

作为开发人员,您将听到许多关于“代码行”含义的疯狂,令人难以置信的理论。不相信他们。代码行是用于制定决策的荒谬指标。在极少数情况下,它告诉您某些情况,在其他所有情况下,则什么都不会告诉您。使用代码行做出决策就像通过页数对书籍质量进行评分。

有些人可能会认为,应用程序中的代码行越少,读取起来就越容易。这只是部分正确,我对可读代码的度量标准是:

  • 代码应一致

  • 代码应具有自我描述性

  • 代码应有据可查

  • 代码应使用稳定的现代功能

  • 代码不应过于复杂

  • 代码不应表现不佳(不要故意写慢速代码)

减少代码行数的那一刻会干扰其中的任何一个,这将成为一个问题。实际上,它几乎总是会干扰,因此几乎总是一个问题。但是,如果您努力满足上述条件,那么您的代码将是完美的行数,无需计算。

语言不一定是“好”或“差”

{xunruicms_img_title}

除了php,只是开个玩笑。

我经常看到这样的话:

> C优于X,因为性能

> Python优于X,因为简洁

> Haskell优于X,因为外星人

语言比较可以简化为一个句子的想法几乎是侮辱性的。他们是语言,不是口袋妖怪。

别误会,语言之间肯定存在差异。只是,很少有“不可用”的语言(尽管有许多过时/过时的语言)。每种语言都有其独特的权衡点。在这方面,语言类似于工具箱中的工具。螺丝起子可以做锤子做不到的事情,但是您会说螺丝起子比锤子好吗(显然锤子更好)。

在谈论如何评估语言之前,我想先说清楚一点。在少数情况下,语言选择实际上很重要。有些事情显然是某些语言无法做到的。如果编写前端代码,您将无法选择语言。在某些特定的情况下,性能很重要,而X语言则不会,而这种情况很少见。通常,语言选择通常是项目中最不重要的问题之一。

以下是核心方面(有序的),我认为这些方面应决定您对语言的选择(这些是《口袋妖怪》的统计数据)

  • 可用在线资源的密度(StackOverflow密度)

  • 开发速度(vroom vroom)

  • 错误倾向(周)

  • 软件包生态系统的质量和广度(是npm,表示质量)

  • 性能特征(更多点)

  • 可信赖性(对不起,COBOL)

还有一些无法控制的牢固耦合。如果您从事数据科学工作,则实际上需要使用Python,R或Scala(也许是Java)。如果这是一个爱好项目,请使用使您最快乐的任何东西。我只有一条不可谈判的规则。我拒绝使用不会遇到大多数问题的语言,这些语言可以在StackOverflow上直接解决。不是我无法解决问题,而是不值得的时间。

阅读别人的密码很难

阅读别人的代码很困难。Robert C. Martin在“清洁代码”中谈到了这一点:

“实际上,读与写所花费的时间之比远超过10:1。作为编写新代码的一部分,我们不断读取旧代码。…[因此,]使其易于阅读,使其易于书写。”

很长时间以来,我以为我只是在阅读别人的代码上很烂。随着时间的流逝,我意识到几乎每个程序员每天都在为此烦恼。读别人的代码几乎就像是读一门外语。即使您对编写器的编程语言选择感到满意,您仍然必须适应不同的样式和体系结构选择。这也假定作者编写了一致且可靠的代码,可能会碰上或错过它。这是一个很难克服的难题。我发现很多东西可以帮助很多。

查看其他人的代码将极大地提高您的代码阅读技能。在过去的两年中,我已经审查了许多Github公关。有了每个PR,我都会更轻松地阅读其他人的代码。由于这些原因,Github公关特别出色

  • 可以随时练习,只需找到您想贡献的开源项目即可。

  • 在一定范围内练习阅读(驱动功能或PR的错误)。

  • 注意所需的细节,这将迫使您评估每一行。

第二种可以帮助您阅读其他人的代码的技巧更加独特。这是我想出的一种技术,它确实减少了我在外国代码库中感到自在所需的时间。看完我想阅读的代码样式之后,我首先打开vi并开始以项目所使用的样式编写代码。当您以新样式编写代码时,它还将提高您的阅读能力。就像您实际经历过的那样,这种风格会感觉不那么陌生。即使我只是在Github上浏览一个随机项目,我也会很快做到这一点。试试看。

您将永远不会编写“完美”的代码

在开始为团队工作之前,我曾是“孤独的狼”开发人员4年。在大多数时间里,我只是假设行业中的每个程序员都编写完美的代码。在我还编写“完美”的代码之前,我认为这只是时间和精力的问题。

这是我以前经常感到焦虑的事情。加入团队后,很快就会发现没有人在编写“完美”的代码。但是,进入系统的代码几乎总是“完美”的,这有什么用呢?答案,代码审查。

我与非常出色的工程师团队合作。这些是一些最有能力,最有信心的程序员可以买得到的东西。如果有人建议提交未经审查的代码,我们团队中的每个成员(包括我)都将遭受全面的恐慌攻击。即使您认为自己是下一个比尔·盖茨,您也会犯错。我什至没有在谈论逻辑错误,在说错别字,缺少字符。您的大脑会调整并永远不会加快的事情。您需要另一双眼睛的事情。

努力与注重细节并乐于批评您的作品的其他人一起工作。刚开始时很难听到批评,但这是唯一持续改进的方法。尽最大努力避免在代码审查过程中产生防御,也不要亲自发表任何评论。您不是您的代码。

在审查代码时,如果作者做出了我不熟悉的选择,我将立即Google查看他们的选择是否与强烈的舆论不同。并不是说流行观点总是对的,而是流行观点是默认选择。如果有人选择不采用流行的选择,那很好,我只是想知道这是有道理的。在查看代码时,至关重要的是,您必须了解已做出的决策背后的原理。此外,以“初学者的头脑”看同样的问题,常常可以发现这个人永远不会回头看的东西。

程序员的工作并不意味着每天要编程8个小时

这是一个非常普遍的问题,但是人们似乎从来没有给出明确的答案。一般的开发人员或“伟大的”开发人员每天花费多长时间编写代码?

很少有人每天写超过4个小时的代码

对此不同意的人要么是规则的例外,要么是在公司中应该更好地对待他们的工作。编程是一项耗费精力,集中精力的任务。期望任何人每周5天每天写8个小时的代码是完全不合理的。在极少数情况下,您需要按时完成任务或多花些时间进行拉伸,但是这种情况很少见。当我说“罕见”时,我的意思是永远不会。不要容忍因规划/招聘不足而使您受虐待并加班的工作场所。

记录下来,每天进行8个小时的主动编程甚至对您公司没有最大的利益。您的老板可能会认为是这种情况,但这是短视的,并且忽略了对生产力和心理健康的长期影响。

请注意,我不建议您每天只工作四个小时。通常最好花另外四个小时:

  • 研究与工作有关和与工作无关的主题

  • 与同事讨论您的工作

  • 帮助正在努力工作的同事

  • 计划未来的工作

  • 代码评论

  • 会议会议

我也强烈建议您在白天定时休息并锻炼身体(即使只是短暂的锻炼)。运动对精神疲劳的好处已得到充分证明。我个人发现,如果我无法集中精力,锻炼特别有帮助。