新手程序员如何写出好的代码

我们应该一直关注如何改进我们的代码。

我之前的博客文章在推特上火了。这篇文章指出了一个问题——始终遵守某些规则实际上并不能帮助人们更好地编写代码。

我在博客上看到的最常见的问题(或反对)是“我们如何教新的程序员如何编写好代码?”

在这篇博文中,我试图解答这个问题。

学会合作

我们应该教给新程序员的最重要的技能是如何在共享的代码基础上与他人很好地合作。在我的职业生涯中,我花了很多年的时间才掌握了这一点,但这对我的整体开发效率影响最大。

所以,这就是我对新手的开发人员的建议。在我们所从事的几乎所有项目中,我们的成功往往取决于他人。

下面是一些行之有效的方法:

结对编程——良好的结对编程需要训练,但也有训练风格,比如编码dojos和代码提升。世界上一些最优秀的编程讲师都积极地使用结对编程作为培训的一部分。

代码评审——我在结对编程方面做了很多工作,因此以前我个人认为代码评审的优先级较低。然而,许多团队发现代码评审有很大的价值。

耐心——使用结对编程时,很容易陷入争论。我们程序员这个职业大部分人都不擅长处理人际关系,但这对我们很重要。

试试这个:当你在做结对编程的时候,你会发现你的搭档犯了一个错误,等着看他/她是否在正式提交之前发现了自己的错误。

谦逊——我经常被问到,“我如何说服别人写干净的代码?”当然,这个问题假设你是对的,他们是错的。

我们大多数人都在努力改变自己的想法。当结对编程时,如果你的伙伴想做一些你认为是错误的事情,试着纵容他们。

最糟糕的情况是最后你有机会教他们一些东西。充其量,你自己也能学到一些东西!

除非您自己编写所有代码,否则协作技能是最重要的。

现在,让我们来谈谈真正的编写代码!

如果您是跳过这一节的人之一,请返回并阅读关于协作的内容。认真对待。如果你不能很好地与他人合作,我对代码的任何看法都不会对你有所帮助。

继续,再读一遍。我会在这里等。

很高兴见到你回来!

现在,让我们谈谈如何编写好代码。当然,好的代码对于职业成功至关重要。如果代码库更好,您将花费更少的时间修复bug,更容易地更改代码,您的团队将有更好的时间与您一起工作。

学习写好代码很简单——你必须读代码,你必须写代码,你必须修改代码,你必须删除代码,然后重新开始。

对于以上几点中的第一点,优秀的书籍可以帮助您阅读代码。我强烈推荐的一些书籍有Clean Code, Implementation Patterns, Refactoring, The Art of Agile, Pragmatic Programmer, 和Practices of an Agile Developer.。我非常喜欢读这些书。这些书将告诉您一些注意事项,如低耦合、高内聚性和简单的设计。

它们会教你有用的原则,比如单一责任原则和开放式封闭原则(尽管我发现我几乎从不提及可靠原则(SOLID))。

模式和原则教会您更好的与您的团队讨论新的信息和代码。

对于第二点,测试驱动开发是学习如何编写代码的一种很好的方式。我喜欢自己做编码,经常用它们来教学。但是,编写代码时最有价值的技巧是我在代码静修(code retreats)中学到的(谢谢你,科里·海恩斯!)学习何时删除所编写的代码是非常重要的。我不是说为了代码量更小而重构它。

优秀的代码的特点是很容易的应对变化。你能在代码中导航吗?你能很快发现错误吗?你知道在哪里做特别的改变吗?

你可以通过阅读原则来学习,但是最安全的老师是让你接触到更多的经验。当您编写和更改代码时,它会导致您反思代码的局限性,而您当前的技能集会阻碍您想要进行的更改。

简而言之,多写一些代码,多听一些代码,多听一些你的同行。

你能顺利发布版本

我几乎忘记了优秀代码的首要品质——它必须被发布使用!团队的发布周期可以从每天几次变化到每年几次。

如果你可以随意发布你的代码,你可以了解你的代码和你的用户。当整个团队意识到你将在明天或下星期再次发布时,“现在或以后”的优先级会变得更容易。

当你一年只发布几次,人们就会感到压力,讨论也会变得激烈。

我几乎总是发现团队低估了花时间在构建和部署工具和脚本上的价值。

“不要故意做蠢事”

如果你发现你不满意的代码,要明白它是这样的原因就是,因为它是这样的。人们这样做是有原因的。这些理由都是合理的,无论是因为周围的需求改变了,或是开发人员没有足够的经验,完成任务的压力让他们想回家,而不是在办公室里坐得很晚,或者,他们只是对什么是好的代码有不同的看法。

不是每个人都同意我这个观点,但是“还有那些不在乎的代码质量的人呢”?

在做了20年的程序员之后,我遇到过程序员,他们的偏好与我不同。我遇到过在短期限内交付的程序员。我也遇到过程序员,他们因为明显的进步而牺牲了编写好的代码而受到表扬。而且,我遇到过很多程序员,他们并不像我一样关心代码。

在我们的生活中还有其他的各种兴趣爱好,这也是花费更少时间打磨代码的一个很好的理由。

但是,我从来没有遇到过一个程序员不在乎代码。

原文发布于微信公众号 - 程序你好(codinghello)

原文发表时间:2018-07-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏灯塔大数据

探秘 | 写了一百万行代码是什么体验?

搞程序的累计写到一百万行代码到底是什么体验呢? 如果一百万是标量的话,来和大家研究一下这个数据,假设最好的情况,一天100行高质量代码,一年36500,100/...

4084
来自专栏纯洁的微笑

如何成为一位「不那么差」的程序员

也不知道啥时候我居然成人生导师了。当然我不排斥这些问题,和大家交流都是学习的过程。

1273
来自专栏极限编程

简单设计落地三板斧

如果你认同 简单设计的价值观,我相信 解析简单设计原则 对你来说很容易理解并接受,它不像面向对象设计原则(比如:SOLID)那么晦涩难懂,它给你指明了一条明朗...

1041
来自专栏编程

手持 Python 利剑,一路向前

学习 Python 课程究竟有什么用?Python 课程学员假牙运用课程所学,在工作中设置自动化检验脚本,为团队排除 bug 规避风险。「最难受的时候再坚持一下...

21210
来自专栏数据库新发现

拉里·埃里森亲自支招,数据库自动化之后,DBA何去何从?

作者:eygle |English 【转载时请标明出处和作者信息】|【恩墨学院 OCM培训传DBA成功之道】 链接:http://www.eygle.com...

1863
来自专栏Albert陈凯

2018-08-13 如何成为一位「不那么差」的程序员

一个学渣的阿里之路 https://crossoverjie.top/2018/06/21/personal/Interview-experience/

811
来自专栏北京马哥教育

不懂Python学习如何下手?看完本文您能知道60%

本文由马哥教育Python自动化实战班导师wayne撰写,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。 你觉得Python真的好吗?或...

4595
来自专栏ytkah

小程序内嵌网页的开放是一场创业公司的及时雨吗

  11.2晚小程序突然开放两个重磅能力:1.小程序内可直接打开网页,2.小程序可关联500个公众号。通过研究,我们发现这次新能力的开放,促使小程序推动微信的春...

3655
来自专栏数据猿

【视频&PPT】《数据猿巅峰思享会》之巨杉数据库CTO王涛:大数据和数据库的未来趋势

<数据猿导读> 在去年的Strata+Hadoop World大会中,巨杉数据库作为唯一的中国参展商在大会上做了展览和演讲,在本次《数据猿巅峰思享会》现场,王涛...

3376
来自专栏腾讯大数据的专栏

APP 精细化运营中,动态运营是关键!

腾讯移动分析(MTA)首家推出可视化埋点功能,方便App运营者可视化配置数据埋点,简化原有数据代码、审核、发布上架流程;快捷配置,即时生效,精细化运营瞬间加速。

3290

扫码关注云+社区

领取腾讯云代金券