计算书籍并遵守惯例

Apress于几周前由最新书籍《 不良编程实践101》发布

(或者,要使用其完整的,经过SEO调整的完整标题,“ 不良编程实践101:通过学习如何(而非)编程来成为更好的程序员” 。)

正如其完整标题所暗示的那样,这不是您典型的编程教科书。 我写了这篇附带的文章,以解释它的不同之处以及促使我采用其不寻常风格的原因。

该书的读者主要包括接受培训的程序员,例如:

例如,那些想提高自己的技能并提高工作效率,但很少或没有经验的人。 这些人是许多编程教科书的典型读者。 没有惊喜。

这本书的目标也毫不奇怪。 它旨在帮助读者在较短的时间内获得更高质量的代码。 可以做的书的清单与您的胳膊一样长。

但是事情可能会令人惊讶的是这本书的方法

要学习良好的编程习惯,您可能决定阅读最佳实践,然后将其应用到您的工作中。

但是,如何最好地编程是一个棘手的问题。 实际上,您可以通过向一组编码人员询问良好的编程习惯来轻松地开始争论。

为什么? 好吧,关于经济学家的说法很老套,就像这样:

提出三个不同的经济学家的问题,您将得到四个不同的答案。

程序员并没有那么糟糕,但是如果您问三个程序员关于某个特定主题的最佳实践,您仍然经常会得到三个不同的答案(很少有人提出来)。 典型的问题可能是:

  • 应该允许使用goto吗?
  • 命名变量的最佳策略是什么?
  • 一班的最大人数是多少?

在一个完美的世界中,我们会很容易地回答这些问题,但是一个可以给我们五部加勒比海盗电影的世界远非完美。

诸如此类的问题实际上具有复杂的答案,取决于多个因素。 在任何情况下,都有许多可接受的解决方案。 最佳实践很少适用于所有情况。 此外,编程领域也在不断发展。 发现新方法并不断改进现有技术。 良好做法清单不会持续很长时间。

根据我的经验,程序员倾向于就不 进行编程。 存在许多做法,它们使经验丰富的编码员发红的怒气或汗流break背,发抖的恐惧,因为他们总是拼写麻烦。 所有程序员偶尔都会编写调用这种反应的代码,但是在其职业生涯早期的程序员尤其经常这样做。

这种见解使我在错误编程实践101中采用了不同的方法。 这本书没有重点讨论如何编程。 相反,它建议您如何不编程。 利用这样一个事实,即在过去的几十年中已经编写了大量代码,并且已经尝试了很多东西。 经验和研究的结合表明哪些东西效果不好,通常应避免使用。

有人认为“有趣”的反面是“严肃”。

—尼尔·盖曼

本书还采用了不寻常的风格。 它给出建议,好像读者试图成为失败者一样。 一个无视规则并遵循最坏做法的程序员,其贡献经常被拒绝的程序员,或者(在极少数情况下,他们通过审查做出的贡献)在曾经起作用的软件中造成讨厌的错误。

它向读者陈述和解释了许多“反建议”,例如:

  • 编写代码时绝对不带注释
  • 优先于全局变量而不是局部变量
  • 如果指针可能为空,请避免检查其值。

这种tongue谐的风格使之有趣而有趣。 那么为何不? 编程可能是一个严肃的话题,但这并不意味着我们不能同时感到好笑。

(有时,在文本中插入“合理”的声音,并解释了为什么程序员认为特定的实践是不好的。这可能是由于专业程序员之间的共识或一些实证研究。)

当然,这不是第一本采用这种方法的书。 我选择以这种方式编写“ 不良编程实践101”,因为我喜欢其他这样做的书。

我特别喜欢Howard Mittelmark和Sandra Newman的《 如何不写小说》 。 这本书充满了“反建议”,例如:“使角色完美无瑕,与世隔绝”,“保持紧张程度低”和“让主角轻松克服障碍”。 简而言之,如果您想拒绝稿件,则应遵循所有规则。 它是为希望崭露头角的作者以幽默的风格写的,他希望不惜一切代价避免出版。 这就是为什么我觉得这些建议会更好的原因。

如果有一本书要阅读,但尚未写完,则必须写。

—托尼·莫里森(Toni Morrison)

正是在阅读Mittelmark和Newman的书时,我想到了这个主意:“为什么不对编程书做同样的事情?”我认为这是一种可以在许多领域中很好地工作的方法,但是由于上述原因,它在编程中特别好。

当我查看现有市场时,我发现采取类似方法的很少。 所以,我决定自己写。

这使我想到了更广泛的观点。

我已经认为计算书应该做更多的实验。 作者有很大的余地来玩这些约定,组合看似不同的形式,从新的角度看待旧事物,讲故事,讲被忽略的故事,将看似无止尽的新事物从计算机编织成更大的叙述,让人发笑,也许甚至让他们哭泣。 不要误会我的意思,已经有一些很棒的东西(蒸汽朋克漫画形式的计算机科学的起源,有人吗?)。 我只是希望还有更多。

在写完这本书之后,我仍然持这种观点。 不好的编程习惯101并不是从标准教科书中彻底脱离的,但是它以自己的方式玩弄惯例,以一种不寻常但又令人回味和丰富的方式来处理该主题。 这只是我实践传教的最新尝试。

我打算继续玩。

如果您对我的工作感兴趣,欢迎读者参与。

通过访问我的网站或在Twitter上关注我,为自己找到更多信息。 您还可以订阅我的新闻通讯,在这里我可以分享有关我当前工作的最新新闻。

或直接与我互动。 向我发推文。 或通过我的Facebook页面向我发送消息。

想买我的书吗?

  • 直接从Apress获取。
  • 另外,亚马逊,Waterstones,Hive,Wordery等在线书商也出售书。