当把我设计的服务器中心模块转交给他人时,让我意外的事情发生了,他们都不是很理解我的设计。
1.认为我的类太多,模块划分得太细
2.不是很容易了解整个流程,因为在逻辑上两个顺序执行的功能单位相差十万八千里
刚开始,我很难理解他们的想法,很难想象,就是这样一个简单的设计,竟如此的难以理解么?
但当我们交流了一下后,我慢慢发现,我和他们的很多思想都存在很大的不同。
1.我目标是建立一个可扩展性强的框架,重在可扩展,可完善;搭起一个框架,所有各个不同模块分的很开;比如通讯模块,基础数据结构,工具类,以及逻辑处理类,基本上可以达到互不影响;而他们的理解是,重在流程;一定要让整个流程非常的明了;所以从外部接收输入,到逻辑处理,到数据传输,整个流程最好要清晰可见;逻辑上相邻的功能单位最好在代码中体现出来。
2.我想,我的设计确实达到了预期的效果,在扩展和修改时,确实会比较方便,但,这仅仅限于我,或者与我在设计上有相同理解的人。对于他们,对程序的理解与我完全不同,那么,这种设计完全是一种负担,代码扩展时,不仅不会降低修改的复杂度,相反,会提高他们的难度;而且,在接手我的工作时,他们需要花费大量的时间来消化我的思路。另外一个方面,坦诚点讲,由于在许多地方用到委托和组合,程序的理解确实不是那么容易。
记下这个问题吧,后面再做类似的问题时,可以稍微借鉴下经验。
做一个好的设计,不容易。
在合适的时候,做合适的选择,很难。
分享到:
相关推荐
4. **命名空间隔离**:每个模块有自己的类加载器,防止类名冲突,保证了模块的独立性。 5. **版本控制**:OSGi支持同一服务的不同版本共存,允许模块根据需要选择使用哪个版本的服务。 在实践中,采用OSGi进行Java...
1. **重用性**:模块化设计允许开发人员重复使用已有的模块,减少了代码冗余,提高了开发效率。 2. **可维护性**:每个模块都有清晰的边界,改动一个模块不会影响到其他模块,便于调试和维护。 3. **可扩展性**:新...
本文将深入探讨CSS优先级冲突的原因、识别方法、解决策略,并提供实际应用示例,帮助读者更好地理解和处理这一问题。 #### 一、CSS优先级概述 CSS优先级是指在多个样式规则同时应用于同一元素时,决定哪一个规则会...
6. **程序设计原则**:模块化编程遵循一些基本设计原则,如单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)等。这些原则有助于创建稳定、灵活和易于维护的代码。 7. **调试与测试...
- **避免全局命名空间污染**:每个模块都拥有自己的作用域,这样可以有效地避免全局变量冲突的问题。这对于大型项目尤为重要,因为它可以确保不同模块之间的变量不会互相干扰。 - **促进代码的重用**:模块化设计...
在IT行业中,系统功能模块设计文档是软件开发过程中的关键组成部分,它详细描述了系统各个功能模块的...在实际工作中,这类文件通常会包含源代码、设计图、需求文档等,这些都是理解系统功能模块设计的重要参考资料。
- **资源隔离**:确保不同模块之间的资源(如类、库等)相互隔离,避免冲突。 - **版本管理**:通过版本号机制来管理模块间的依赖关系,确保系统的稳定性。 #### 应用场景 1. **企业级应用开发**:对于大型企业级...
3. **服务设计**:设计好服务接口,避免过度依赖,使服务易于复用和替换。 4. **监控与日志**:利用OSGi提供的监控工具和日志服务,确保系统的稳定性和可诊断性。 通过对《深入理解OSGi:Equinox原理、应用与最佳...
通过学习这个主题,开发者不仅可以提升对模块化编程的理解,还能掌握一种更高效、灵活的Java应用开发方式。无论是在桌面应用、服务器端应用还是嵌入式系统中,OSGi都能带来显著的优势。因此,深入研究OSGi和Equinox...
4. **版本管理**:OSGi允许模块声明其依赖的其他模块的版本,从而解决了不同版本库之间的冲突问题,保证了系统的稳定性和兼容性。 5. **安全模型**:OSGi提供了细粒度的安全控制,每个Bundle都可以有自己的权限策略...
Kontron ETX模块设计指南是针对Kontron公司生产的ETX CPU模块的一份详细技术文档,旨在为工程师提供关于如何设计和构建基于ETX模块的系统提供指导。ETX是一种嵌入式计算机模块标准,通常用于工业自动化、医疗设备、...
《Java模块》是一本深入探讨Java模块化系统的专业图书,旨在帮助读者理解并掌握Java平台的模块化设计。这本书详细阐述了Java 9及其后续版本引入的模块系统(Project Jigsaw),这一重大更新显著改进了Java应用程序的...
此文档的主要目的是为项目团队提供一个清晰的模块设计蓝图,以便于各开发人员理解和实施各自的职责。通过明确每个模块的功能和相互关系,可以有效地减少沟通成本,避免设计冲突,并确保软件的整体质量和可维护性。 ...
本文将深入探讨“学生管理系统”的完整程序设计代码及其模块设计,旨在为相关开发者提供有价值的参考。 首先,学生管理系统的核心功能包括学生信息管理、成绩管理、课程管理、考勤管理等多个模块。这些模块的设计...
### 前端开发中的模块化理解 #### 一、模块化的定义与起源 模块化是一种将复杂的系统拆分成多个独立部分的设计方法,每个部分(或称为“模块”)都有其特定的功能。在前端开发中,模块化尤其重要,因为它有助于...
- 分享模块设计模式,如单例模式、工厂模式等。 第六天:动态导入与懒加载 - 了解动态`import()`语法,及其在优化应用性能上的作用。 - 应用动态导入实现按需加载,减少初始加载时间。 - 结合路由系统实现模块的懒...
3. **模块设计模式**: - **立即执行函数表达式(IIFE)**:用于创建私有作用域,防止全局污染。 - **命名空间**:通过对象来组织和封装模块,减少命名冲突。 - **模块工厂**:返回一个包含模块功能的对象,可以...
总之,这个资源包涵盖了Java公共资源模块设计与开发的多个方面,从理论到实践,对Java开发者来说是一份宝贵的参考资料。通过学习和分析,开发者可以提升自己的技能,更好地应对实际项目中的挑战。
《基于jspm的仓储系统出入库模块设计》 在当今数字化时代,仓储管理系统已经成为企业管理物流流程的核心工具。本文将深入探讨一个特别的案例——基于jspm的仓储系统出入库模块设计,该系统旨在提高库存管理效率,...
- **兼容性**:确保模块与现有的系统和环境兼容,不会引发冲突。 - **文档更新**:伴随新版本发布,可能有对应的更新文档,详细解释了改动内容和使用方法。 对于开发者来说,理解和掌握"精易模块"的特性和用法,...