0%

Write Tests for People

你在为你的产品代码编写自动化测试。恭喜你!你还在写代码之前就写了测试?那就更棒了!!仅仅是这么做就可以让你成为一名软件工程实践的先行者。但你写的测试是优秀的吗?如果有一种提问:“我为谁而写测试?”你会怎么回答?若是回答:“为了我,在修复bug上的努力”或者“为了编译器,让它们能够跑起来”,那么你写的测试未必是最好的。所以你到底是为谁而写测试?为了那些想要了解你代码的人们。

阅读全文 »

Write Small Functions Using Examples

我们都想编写正确的函数,并证明它是正确的。这可以让我们带着问题思考一个函数的“大小”。这不是指函数实现的代码量(尽管那也很有趣)而是指我们代码所体现的数学函数的大小。

例如,在围棋游戏中有一个称为Atari的条件,玩家的棋子可能会被对手捕获:一颗棋子周围有两个及以上的空格即自由,否则即Atari。计算一颗棋子的自由度很困难,但推断它是否为Atari就很简单。我们可以写出类似这样的函数:

阅读全文 »

Write Code as If You Had to Support It for the Rest of Your Life

你可能会问97个人程序员应该知道什么并且如何做,可能你会得到97种不同答案。这可能会同时令人迷茫和生畏。所有的建议都是好的,所有的原则都是正确的,所有的故事都很引人注目,那么你要从哪里开始?更重要的是,一旦你开始,你又如何保持最佳的学习实践,如何确保它们能被集成进你的编程实践中呢?

阅读全文 »

When Programmers and Testers Collaborate

当测试员和程序员开始合作后会有一些奇妙的事情发生。通过缺陷追踪系统来回发送bug所花费的时间更少。浪费在争论这是一个bug还是一个feature的时间会更少,而更多的时间则用于开发出消费者可期的良好软件。在开始写代码之前的合作将会产生很多机遇。

阅读全文 »

WET Dilutes Performance Bottlenecks

DRY原则(Don’t Repeat Yourself)的重要性是它整理了这样一个概念:系统中的每个知识片段都应该有单一的表现形式。换而言之,每个知识点应该被包含在单独的实现中。DRY的对立面是WET(Write Every Time)。当知识点被整理在几个不同的实现中,我们的代码就是WET的。当你考虑DRY和WET的性能曲线的多种影响时,它们之间的对比就会非常明显。

阅读全文 »

The Unix Tools Are Your Friends

如果我被放逐沙漠,不得不在IDE和Unix工具箱之间做出选择,我会毫不犹豫选择Unix工具。这就是你应该熟练掌握Unix工具的原因。

首先,IDE用于特定语言,但Unix工具可运行于任何以文本形式出现的事物。现如今的开发环境,每年都会涌现出新的语言和符号,学习在Unix环境下工作将是一种复利投资。

阅读全文 »

Ubuntu Coding for Your Friends

很常见,我们独立写的代码,这些代码就会折射出我们个人对问题的理解,以及非常个人的解决方案。我们可能是团队的一份子,但我们在团队中也是独立的。这就让我们很容易忘记这些独立编写的代码会被其他人执行、应用、扩展以及依赖。这很容易忽略掉软件创造的社交方面。创建软件是一项技术活动,它与社会活动混合在一起。我们只需要经常抬头去想,我们并不是在独立的工作,我们有责任为每个人而不是开发团队,增加成功的可能性。

阅读全文 »

Two Wrongs Can Make a Right (and Are Difficult to Fix)

代码时不会说谎的,但它会自相矛盾。有些矛盾还会导致“这怎么可能跑得起来?”的时刻。

在一次采访中,阿波罗11号月球模块的首席设计师,Allan Klumpp透露,控制引擎的软件有个会导致着陆舱不稳定的bug。然而,另一个bug却弥补了它,在这些bug被发现并修复之前,软件都被应用于阿波罗11和12号登月。

阅读全文 »