6.2.2 策略
下面是一些对很多程序设计项目都有帮助的建议:
·要解决的问题是什么?首要的事情是将要完成的目标具体化,包括建立问题的描述,或者分析已有描述的真实意图。这个时候应该站在用户而不是程序员的角度上,也就是说,应该考虑程序要实现什么功能,而不是怎样实现这些功能。例如:这个程序能够实现什么功能?用户与程序以什么方式进行交互?记住,大多数人都具有很丰富的计算机使用经验。
·问题定义清楚吗?事实上,我们无法十分清晰地定义一个现实问题,即使是一个学生习题,也很难将其准确和具体地定义。但是,解决一个错误的问题是很遗憾的,所以必须弄清楚所要解决的问题是什么。另一个易犯的错误是我们容易把问题复杂化,在描述一个要处理的问题时总是表现得过于贪心/有野心。实际上,更好的方式是将问题简化,使程序易于定义、理解、使用和实现。一旦程序能够实现预期的功能,基于已有的经验可以实现它的第2版。
·看上去问题是可以处理的,但时间、技巧和工具是否足够?从事一项不可能完成的项目是没有意义的。因此,如果没有足够的时间来实现(包括测试)一个程序,最好不要启动这个项目。否则,需要获取更多的资源(包括时间)或者修改需求来简化任务。
·将程序划分为可分别处理的多个部分。为了解决一个实际问题,即使是一个最小的程序也能够进一步细分。
·你知道有哪些工具、函数库或者其他能借助的东西?答案是肯定的,因为即使是学习编程的最初阶段,你也能使用C++标准函数库的部分内容。以后,还会慢慢学习如何使用标准函数库的更多功能,还会用到图形和GUI库、矩阵库等。在获得了一些编程经验之后,通过简单的网络搜索就能发现更多的函数库。记住:在编写真正实用的软件时,重新设计基本模块是没有价值的。在学习编程的时候是另外一回事,通过重新设计基本模块可以更清楚地了解其实现过程。通过使用函数库节约的时间可以用于解决问题的其他部分,或者休息。但是,如何知道一个函数库适合于目前的任务,或者程序性能是否满足要求是一个很困难的问题。一种解决方法是咨询同事、讨论组,或者在使用函数库前首先使用例子进行验证。 ...