我之前的博文在 上疯传。 这篇文章指出了问题——始终遵循某些规则实际上并不能帮助人们编写更好的代码。
我在博客上看到的最常见的问题(或反对意见)是“我们如何教新程序员如何编写好的代码?”
在这篇博文中,我尝试回答这个问题。
学会合作
我们应该教给新程序员的最重要技能是如何在共享代码库上与他人良好合作。 我在职业生涯中花了很多年才掌握这一点,但它对我的整体开发效率影响最大。
所以,这是我对新手开发人员的建议。 在我们从事的几乎每个项目中,我们的成功往往取决于其他人。
以下是一些经过验证的方法:
结对编程——良好的结对编程需要培训,但也有诸如编码道场和代码提升之类的培训方式。 世界上一些最好的编程讲师积极地将结对编程作为他们培训的一部分。
代码审查——我做了很多结对编程,所以我个人之前认为代码审查的优先级较低。 然而,许多团队发现代码审查非常有价值。
耐心——结对编程时,很容易陷入争论。 我们大多数程序员都不擅长处理人际关系,但这对我们来说非常重要。
试试这个:当你进行结对编程时,你发现你的伙伴犯了一个错误,然后等着看他/她是否发现了他或她的错误,然后再犯错误。
谦逊——经常有人问我:“我如何说服别人编写干净的代码?” 当然,这个问题假设你是对的而他们是错的。
我们大多数人都在努力改变想法。 当结对编程时,如果你的伴侣想做一些你认为是错误的事情,试着纵容他们。
最坏的情况是你终于有机会教他们一些东西了。 最好的情况是,你自己能学到一些东西!
除非您自己编写所有代码,否则协作技能是最重要的。
现在,我们来谈谈实际编写代码!
如果您是跳过本节的人之一,请返回并阅读有关协作的内容。 认真处理。 如果你不能很好地与他人合作,我所说的关于代码的任何内容都不会帮助你。
继续阅读一遍。 我会在这里等。
很高兴见到你回来!
现在,我们来谈谈如何编写好的代码。 当然,好的代码对于职业成功至关重要。 有了更好的代码库,您将花费更少的时间修复错误,更轻松地更改代码,并且您的团队将有更好的时间与您合作。
学习良好的编码很容易——你必须阅读代码,你必须编写代码,你必须修改代码,你必须删除代码,然后重新开始。
对于上面的第一点,好书可以帮助你阅读代码。 我强烈推荐的一些书籍有《Clean Code》、《敏捷的艺术》、《敏捷的艺术》和《敏捷的艺术》。 我真的很喜欢读这些书。 这些书会告诉你低耦合、高内聚和简单设计等注意事项。
他们会教你有用的原则,例如单一职责原则和开闭原则(尽管我发现我几乎从未提到过坚固性原则(SOLID))。
模式和原则教您更好地与团队讨论新信息和代码。
对于第二点,测试驱动开发是学习如何编码的好方法。 我喜欢自己编写代码,并经常将它们用于教学。 但编写代码时最有价值的技巧是我在代码静修中学到的东西(谢谢你,Corey !)。 了解何时删除您编写的代码非常重要。 我不是在谈论重构它以使其更小。
好的代码的特点是它能够轻松响应变化。 您可以浏览代码吗? 你能快速发现错误吗? 您知道具体要在哪里进行更改吗?
你可以通过阅读原理来学习,但最安全的老师是让你接触更多的经验。 当您编写和更改代码时,它会让您反思代码的局限性,而您当前的技能组合会阻碍您想要进行的更改。
简而言之,多写代码,多听代码,多听同行的意见。
能顺利发布版本吗
我差点忘记了好代码的首要品质——它必须被发布才能使用! 团队的发布周期可能会有所不同,从一天几次到一年几次。
如果您愿意随意分发您的代码,您可以了解您的代码和您的用户。 当整个团队意识到您将在明天或下周再次发布时,“现在或以后”的优先级就会变得更容易。
当你一年只发几次帖子时,人们就会感到压力,讨论也会变得激烈。
我几乎总是发现团队低估了构建和部署工具和脚本所花费的时间的价值。
“不要故意做蠢事”
如果您发现您不喜欢的代码,请理解为什么它是这样的,因为它就是这样的。 人们这样做是有原因的。 这些理由都是有道理的,无论是因为周围的需求发生了变化,还是开发人员没有足够的经验,完成任务的压力让他们想回家而不是在办公室熬夜,或者,他们只是有一个问题 对于什么是好的代码有不同的看法。
并不是每个人都同意我的观点,但是“那些不关心代码质量的人怎么办”?
作为一名程序员 20 年后,我遇到了一些与我的偏好不同的程序员。 我遇到过在很短的期限内交付的程序员。 我还遇到过一些程序员,他们因为自己的明显进步而受到赞扬,而牺牲了编写好的代码。 另外,我遇到了很多像我一样不关心代码的程序员。
我们的生活中还有各种各样的其他兴趣,这是花更少时间打磨代码的一个很好的理由。
然而,我从来没有遇到过一个不关心代码的程序员。