《编程珠玑》第 5 章──编程小事

万事俱备,只欠不起眼的编程了。

原理

  • 脚手架。最好的脚手架通常是最容易构建的脚手架,比如简单的命令行技术。
  • 编码。使用高伪代码来构建程序框架,然后翻译成需要实现的语言。
  • 测试。在脚手架中对组件更容易测试。
  • 调试。嵌入在真实环境中,调试工作会更困难。
  • 计时。确保程序能够达到我们预期的性能。

习题

2

将二分搜索的伪代码描述转换成 C 语言之外的其他编程语言,并建立脚手架对你的实现进行测试和调试。所使用的语言和系统对你有哪些帮助,又有哪些妨碍?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import unittest

def binary_search(data, target):
left = 0
right = len(data) - 1
while left <= right:
mid = left + (right - left)//2
if data[mid] == target:
return mid
elif target > data[mid]:
left = mid + 1
else:
right = mid - 1
return -1

class TestBinarySearch(unittest.TestCase):
def test_search(self):
self.assertEqual(0, binary_search([1, 2, 3, 4, 5], 1))
self.assertEqual(-1, binary_search([1, 2, 3, 4, 5], 0))
self.assertEqual(-1, binary_search([1, 2, 3, 4, 5], 6))
self.assertEqual(2, binary_search([1, 2, 3, 4, 5], 3))


if __name__ == '__main__':
unittest.main()

Python 的单元测试包括内置的 unittest,常用的 pytest、nose、testtools 等等。