- 软件是这样“炼”成的:Java学习全演练
- 王朔韬编著
- 1829字
- 2025-02-17 11:21:21
5.5 不可思议的代码
计算机软件工具的应用目标是使我们的工作量大大减小,工作效率大大提高,能够体现更大的社会效益。那么,作为初学者,我们实在无法理解程序代码的应用场景如何,以及某些开发思想能够给我们带来什么样的益处。针对这些困惑,晨落和洪杨俊就此内容进行了比较详细的讨论。
晨落:我们在讨论Java代码之前,请大家先读例程5-1的代码,然后我们再讨论这些代码。
[例程5-1] 学籍档案输出的一段代码。


洪杨俊:老师,以上代码排版很整齐,编写也很规范,但是,请问按照您的这个代码设计思想,是不是需要针对每位学生设计同样的代码?
晨落:是的。
洪杨俊:按你的说法,2011年全国将招收675万新生,按照你的设计思路将有675万个程序文件生成,每个程序文件按照75行计算,这程序将有大约50亿行,这真是个天文数字。并且还没有考虑到要完成其他功能所需要的代码行,噢,软件开发真的是这样吗?
晨落:哈哈,确实不是这样,如果我们的程序员确实以这种思想和编程方法来开发“学籍管理软件”,这将是一场灾难。这也是对计算机开发的“侮辱”。至于Java干不干,反正我不干!。当然,在计算机刚刚发明之时,计算机的主要功能就是这样,仅仅是计算功能,其功能连现在的普通计算器的功能都不及。
洪杨俊:Java有这么弱智吗?
晨落:我想不会的,一定不会的,哈哈。你可以分析一下这段代码的缺点吗?当然,我展示这段代码的主要目的不是为了展示“学籍管理软件”的最终实现,而是“凿石开路”,将此作为“反面教材”展示给大家,我们共同分析很好的代码设计应该具备哪些特质。我们现在开始分析一下吧!
洪杨俊:好的。
晨落:请讲出你的想法。
洪杨俊:即使我们现在不考虑“学籍管理软件”的数据可以存储和检索,即使通过变量的形式动态输入,动态输出,这样觉得代码量就会大大地减少。全国650万学生的档案打印输出由一个程序完成。这样可以用六百五十万分之一的工作量完成所有的功能。
晨落:这是可以解决的,随着我们对Java的学习,能够逐步地解决这些问题——数据类型和变量就能解决。
洪杨俊:当然,数据存储是非常关键的问题。我相信老师肯定会考虑到数据的存储问题,这样我们就可以实现数据的一次输入“终身享用”的功能。如果不具备数据的存储功能,那么“学籍管理软件”的开发没有实际意义了。
晨落:这个问题显然是要解决的了,当然,数据的存储方式需要根据不同需求确定不同的存储方式。所以,在本书的第17章,将介绍如何实现数据的存储和查询功能。
洪杨俊:如果实现了数据的存储,统计分析是系统的核心功能之一,也是系统设计者的重要需求之一,请问,Java具备这样的复杂计算统计功能吗?
晨落:可以的,这个是完全可以的,也就是Java的数据结构和算法的问题了。本书的第13章、第14章和第15章就是讲解数据的算法和数据结构的。
洪杨俊:我想到的还有,应该有可以控制的输入和输出,也就是说,我们提供这样的功能,可以让用户根据自己的需要选择完成的功能项,并且有很友好的用户界面。这样在Java中可以完成吗?
晨落:如果Java不具备这个支持能力的话,Java不会“混到”今天这么受热捧了。本书的第18章和第19章就是为完成这项功能而设计的。
洪杨俊:对了,老师,我想问您一个问题,您打算这个系统只使用一个Java程序来完成所有功能吗?
晨落:你觉得呢?我个人认为,至少按照不同的对象来进行规划,我们将在第6章中分析如何归纳程序,但不是最优化的设计,程序的优化程度与我们对知识的了解和经验有很大的关系。
洪杨俊:我在相关书籍中了解到了Java是面向对象的,而面向对象的核心思想是继承和封装,请问老师,这个与我们的程序代码有什么关系呢?
晨落:这个问题问得很好,优化代码和提高软件性能是软件开发永恒的主题,你刚才所说的继承和封装仅仅是Java程序的核心思想的一部分。很好地利用继承和封装,确实能够提高软件的可读性、可重复性,提高性能等。这部分内容将在本书的第11章和第12章给大家交代。
洪杨俊:我能想到的只有这些,但是我想应该有许多我没有想到的。
晨落:这样吧,我们现在将“学籍管理软件”应该具备的功能和性能以表格的形式列出来,然后我们在每章学习完成后,结合“学籍管理软件”案例,检查是否满足了这些要求以及这些要求在Java中是如何得到支持的。好吗?
洪杨俊:好的。请老师查看表5-11所示“学籍管理软件”需求检查与Java支持说明表。
表5-11 实现进程检查表

晨落:我觉得可以满足对Java基础学习的要求了。希望我们在后面的学习过程中,以章节为单位,严格检查表格所列出的项目。这样,一方面跟踪了案例的需求实现,另外一方面对我们的Java学习也是个总结过程。