今天把聊天系统的代码分析了一下,发现代码耦合度很高。各个类相互调用其中的方法,A类调用B类的方法,B类调用C类的方法,又发现C类还调用了A类的方法。如此带来的问题出现了,要想修改其中一个类,就得修改使用了该类的类,以致整个代码都需要修改,使人头昏脑胀。这样的高耦合的代码,可扩展性低,不可能做到增加一个新的功能而只需修改少量代码。我们不能只专注于代码本身,而是应该跳出代码,去思考和设计代码的结构。理想的模式是一个类去调用其他的各个类,增加一个新的功能时,只需增加新的类,原来的类也不用做太大修改。
设计代码结构的时候,可以考虑采用监听器模型。比如一个简单的聊天客户端程序,我们把通信模块和界面分开,自己定义一个监听接口,通过这个监听接口将他们联系起来。通信模块就相当于一个事件源,当接收到消息时,即事件发生,界面监听到事件源,马上做出相应的处理,如显示接收到的聊天消息。这样通过接口将通信层和显示层分离,降低了它们的耦合度,便于代码的修改和功能的扩充。
在把简单的聊天系统初步完成后,发现设计文档真的很重要。之前写的程序,因为没有一个系统的规范的设计文档,使得写代码没有指导和方向,导致客户端和服务器端的消息格式不一致,或者通信流程不协调。要修改这样的代码更是难事,没有设计文档作为参照标准,很容易造成修改后还是会出现同样的问题。因为之前花了较多的时间把文档写的比较规范,然后按照文档去落实代码,就会发现敲代码只是顺水推舟的事情。
现在我们编写的都是小程序,似乎都用不着设计文档,但是我们以后面临的必然是编写较大的程序,设计文档作为程序的说明书和编程指导,肯定会凸显其重要性。我们应该渐渐地养成先写文档,把程序中的重要问题和关键点考虑好。在实际中按照文档实施的时候,会发现当初没有考虑到的问题,可以对文档进行修订,使文档不断系统化和规范化。
分享到:
相关推荐
### SecureCRT脚本编写心得详解 #### 一、前言 在IT运维工作中,面对大量网络设备如CE设备(Carrier Ethernet设备)时,如何高效地完成日常巡检和维护成为了一个亟需解决的问题。SecureCRT作为一款强大的终端...
从“编写程序心得”的标题和描述中,我们可以提炼出以下几点关键知识点: ### 1. 时间管理与目标设定 时间是程序员最宝贵的资源之一。有效的时冋管理不仅能够帮助程序员更高效地完成任务,还能留出更多时间进行...
本文作者在编写温控系统的通讯部分时,遇到了一些具体问题,并分享了他们的解决方案。 首先,理解Modbus RTU的数据格式至关重要。每个Modbus RTU报文包括设备地址、功能码、数据地址、实际数据和CRC校验。设备地址...
最后,报告中提到的心得体会部分可能涵盖了在实验过程中遇到的问题、解决办法以及对编译原理的理解深化。这部分内容虽然没有直接列出,但可以推测学生可能分享了如何克服技术挑战、优化程序设计以及对未来学习和工作...
C++ C语言学习资料,源代码,学习心得及攻略,供相关学生及从业者参考C++ C语言学习资料,源代码,学习心得及攻略,供相关学生及从业者参考C++ C语言学习资料,源代码,学习心得及攻略,供相关学生及从业者参考C++ ...
在这一阶段,学员可能经历了从编写简单的代码到解决复杂问题的转变,理解了团队协作、版本控制和敏捷开发的重要性。这些心得分享有助于后来者更好地规划自己的学习路径。 "成为软件工程师之心得"意味着学员已将目标...
3. 直接使用`pdflatex`命令编译LaTeX源代码,生成PDF文件。 ##### 高级特性探索 - **宏定义与条件判断**:通过定义新的命令来简化文档编写过程;使用条件语句实现动态内容生成。 - **图形与表格**:利用`pgfplots`...
学习 Java web 开发需要通过实践来巩固知识,例如编写 Java 代码、开发 JSP 页、使用 Servlet 等。 ### 3. 问题解决 学习 Java web 开发需要具备问题解决能力,例如遇到编译错误、运行错误等问题时,需要能够独立...
网页设计心得:高效编写网页代码是一项至关重要的技能,特别是在快节奏的互联网环境中。网页设计师不仅需要关注设计的美感,还要注重提高工作效率。以下是从标题和描述中提炼出的关键知识点: 1. **包含文件的使用*...
在实际工作中,我们往往处理的不是复杂算法,而是更注重实用性,因此,遵循规范编写代码,可以使代码库更加整洁,便于理解和维护。 对于变量和函数的命名,这是提升代码可读性的关键。良好的命名习惯可以帮助其他...
此外,了解一些设计模式如单例模式、工厂模式等,也有助于编写更高效、更优雅的代码。 #### 心得二:不断丰富自己的知识体系 随着技术的不断进步和发展,JAVA生态也在持续演进。作为JAVA程序员,应当保持好奇心和...
- **MASM.EXE**:这是一个汇编程序,用于将汇编语言编写的源代码转换成目标代码。 - **LINK.EXE**:这是一个链接程序,负责将多个目标文件连接成一个可执行文件。 - **DEBUG.EXE**:这是Windows自带的一个调试...
代码编写是软件开发的关键部分,需要编写高效、可靠的代码。在实践中,需要能够编写简洁、可靠的代码,提高工作效率和质量。 六、专业知识的重要性 专业知识是软件开发的基础,需要掌握大量的技术和知识。在实践中...
Java语言的设计理念是“一次编写,到处运行”,这要求我们编写代码时要具备良好的可移植性和可维护性。在实践中,我学会了如何将现实世界的问题抽象成类和对象,利用封装、继承和多态三大特性来设计程序。 其次,...
例如,如何编写可读性强、易于维护的代码,如何避免常见的陷阱和错误,如何进行有效的调试,以及如何设计良好的软件架构等。这些经验教训往往来源于实战,对提高编程效率和解决实际问题大有裨益。 此外,C++ Primer...
通过以上介绍,我们可以看出JavaScript虽然是一门简单易学的语言,但在深入了解其内部原理后,能够帮助开发者编写出更加高效、稳定的代码。对于初学者来说,掌握这些基础知识是非常重要的,它们是后续深入学习的基础...
1. 软件开发的目的:通过实训,掌握软件工程设计标准及其开发流程,包括需求分析、概要设计、详细设计、代码编写等。 2. 实训目的:通过对java语言、sql数据库的应用以及sql语言的复习和锻炼,并且通过使用...