这本书是几年前出版的,曾获得软件奥斯卡 Jolt 大奖。Maze 写的在 29 章。其中的案例很值得学习的。
你觉得怎样的代码是美的呢?估计没有标准答案,简洁,性能,可靠等等。有兴趣讨论下么?
看的懂的,易维护的。
第七章是一个二分查找的测试例子,下面的 java 代码有 bug,你能看出来么?
public static int buggyBinarySearch(int[] a, int target) { int low = 0; int high = a.length - 1; while (low <= high) { int mid = (low + high) / 2; int midVal = a[mid]; if (midVal < target) low = mid + 1; else if (midVal > target) high = mid - 1; else return mid; } return -1; }
#2 楼 @chenge 是 low+high 会溢出?貌似《编程珠玑》也有
(low + high) / 2应该用移位来计算,不然会溢出(int 类型连 13 个 9 都没法保存)
(low + high) / 2