
获得徽章 15
- “有时候你受命去解决一些本身就非常复杂的问题,比如编写拼写检查或国际象棋的程序。问题复杂,解法不一定会复杂;相反,在处理此类问题时,你必须更努力地追求代码的简洁。如果你在解决复杂问题时遇到了麻烦,那么用简单易懂的文字把它写在纸上,或者画出来。有些最优秀的程序设计就是在纸上完成的,真的。把它输入到计算机里只是次要的细节。大多数麻烦的设计问题,都可以用在纸上画图或写出来的办法找到答案。
如果系统中某个部分太过复杂,有个好办法来解决:把它分解成几个独立的小部分,逐步重新设计。每次修改都应该足够小,这样可以放心动手,不会让事情更复杂。
“你对软件行为的了解程度,等于你真正测试它的程度。
你必须观察测试的结果,确保它们是有效的。如果测试失败了,必须有办法让你知道这个情况,以及失败的具体原因。
你还必须保证测试是准确的。如果测试显示程序的行为完全符合预期,事实却并非如此,或者测试显示程序崩溃了,其实它跑得好好的,那么这些测试都是不准确的。
如今的程序员在落实测试法则时,会编写许多自动化测试来测试所写的每一段代码。这样做的好处在于,有任何改动都只需要重新运行这些测试即可,程序会测试系统中的方方面面,确保修改之后所有部分仍然保持正常。
-- 来自《简约之美:软件设计之道》”
上面的文字合并了本书第八章的后半部分以及第九章的内容。
介绍了作者推荐的解决复杂问题的方法以及关于测试的相关知识。很惭愧现在还不太会写测试代码,但是作者所说的“对软件行为的了解程度,等于你真正测试它的程度”提醒了我在后面开发的时候,最好可以多思考软件执行的几种路径,并且可以编写配套的测试代码来验证程序。展开29