`
frenchmay
  • 浏览: 232299 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

柔性设计

阅读更多

昨天和同学打电话,

讨论在类的一个方法,关于在方法体中满足某些条件

或者不满足某些条件直接return的做法,

与在方法体中进行很多的逻辑判断在方法体的最后位置return掉好的做法的优劣比较.

感觉如果在方法体的最后做逻辑判断并且return的话,

阅读代码的人要阅读很多无用的代码,

会增加大脑的负荷.

而且这种做法一般是c语言等面向过程思维的结果.

另外一个问题是关于方法堆栈的问题,

因为静态类的不修改类属性的静态方法在多线程并发的环境中调用是否安全.

类的方法是方法体的代码堆栈在整个内存中是为多个线程共享的,

对于不同的线程,线程拥有各自的隔离区,

包含该方法体内部的局部变量和临时变量,

因此在多线程环境中调用静态类的不修改类属性的静态方法在内存角度看是安全的.

接下来是关于方法的引用参数的问题.

我最近常常写这样的代码

void modifyDOContent(XXDO xxDo);

通过参数引用来修改参数状态

然后在把这个参数引用传递给另外一个方法

void modifyDOStatus(XXDO xxDo);

之前考虑这样写的优点是可以创建比较少的值对象,

通过变更值对象的属性来实现业务逻辑功能.

但是缺陷随之而来

就像你在吃火锅的时候,夹起一块羊肉,蘸蘸火锅料,蘸蘸芝麻酱,再蘸蘸甜面酱..

到最后乱糟糟的一块,也忘记最后吃的到底是什么了.

另外对于方法体内部的代码逻辑并没有进行显性地说明,

阅读者必须通过阅读整体的方法体代码才能了解处理的意图.

因此无法做到对业务逻辑或者代码逻辑的封装.

更加恶劣的是如果方法内的逻辑失败,

除非抛出异常否则因为不修改参数引用只是修改参数引用对象的属性,

这个很参数引用对象还是可用的,因此就为代码质量埋下了隐患.

另外修改值对象本身就破坏了领域对象的封装性,

如果有多个领域逻辑混杂在一起是不法简单地通过值对象状态来区分的.

恰好手边有 领域驱动设计 这本书

里面有一章讲解 柔性设计

对于这种情况,采用了释意接口,不可变值对象和无副作用函数的方法解决这一问题

释意接口可以认为是一种类似与约定优先的编程理念,对方法内部逻辑在名称上做直观显性地说明.

不可变值对象,一个包含业务逻辑的值对象创建后既不修改引用也不修改属性,

如果有这方面的需求可以使用DTO

数据传输对象

无副作用函数

不修改传过来的方法参数引用对象,而是作为返回结果返回一个新的值对象

如果方法内部逻辑处理失败可以通过抛出自定义异常或者返回null值来进行控制

分享到:
评论
2 楼 frenchmay 2008-08-22  
  我会改进的
1 楼 duooluu 2008-08-22  
楼主的句子好长,读一句要换两口气

相关推荐

    SH3041-2002石油化工管道柔性设计规范.pdf

    SH3041-2002石油化工管道柔性设计规范,SH3041-2002石油化工管道柔性设计规范SH3041-2002石油化工管道柔性设计规范下载

    13 柔性设计 199-212.rar

    柔性设计是一种重要的工程设计理念,它在信息技术领域,特别是在软件工程、机械工程以及产品设计中扮演着关键角色。这种设计方法强调的是系统或产品的适应性和可扩展性,使其能够灵活应对变化的需求、环境条件或者...

    13 柔性设计 213-224.rar

    柔性设计是一种创新的设计理念,它强调产品的可适应性、可扩展性和灵活性,旨在应对快速变化的市场需求和技术环境。在IT行业中,柔性设计尤其重要,因为它允许系统和产品随着时间和用户需求的变化而进行调整和改进,...

    13 柔性设计 184-198.rar

    柔性设计在IT行业中通常指的是软件或系统设计的一种方法论,它强调灵活性、可扩展性和适应性,以便在不断变化的需求和技术环境中保持系统的有效性。在13章“柔性设计”中,我们可能探讨了如何构建这样的系统,以确保...

    ACT敏捷教练工具箱之柔性设计.pdf

    标题中的“ACT敏捷教练工具箱之柔性设计”指的是在敏捷开发环境中,教练使用的一套工具和方法,旨在帮助团队实现灵活、适应变化的设计策略。在敏捷软件开发中,柔性设计是至关重要的,因为它允许团队迅速应对需求...

    论文研究-泸天化计算机生产调度辅助决策系统自适应机制和柔性设计.pdf

    论文研究-泸天化计算机生产调度辅助决策系统自适应机制和柔性设计.pdf, 综合运用系统工程的观点、运筹学的方法、管理信息系统开发的原则和现代管理理论,以泸天化实际...

    EDA/PLD中的基于FPGA的电子系统柔性设计

    在电子设计自动化(EDA)和可编程逻辑器件(PLD)领域,基于FPGA的电子系统柔性设计是一种创新方法,旨在应对21世纪制造业中电子产品多样性、小批量生产和快速迭代的需求。这种设计策略通过电路结构重置技术,利用可...

    基于FPGA的电子系统柔性设计

    【基于FPGA的电子系统柔性设计】是一种利用在线重置技术实现电子系统设计灵活多变的方法。这种方法在微电子技术和电子设计自动化(EDA)技术快速发展的背景下,具有广阔的应用前景,尤其适用于复杂电子系统的设计。 ...

    完全柔性机械设计方法与设计区域的有限元建模研究

    在本文中,我们将探讨有关完全柔性机械设计方法与有限元建模研究的知识点。文章分析了柔性机械与传统刚性机械在结构和功能上的差异,并深入研究了完全柔性机械的设计方法。同时,文章对柔性机械的有限元设计方法进行...

    高速爬坡自行小车智能柔性输送系统的设计.pdf

    该机构采用了柔性设计,能够适应不同的生产环境和需求。 柔性旋转吊具和自平衡柔性工件吊具是该系统的两个重要组件,能够满足生产单元输送速度高、转换时间短、柔性化高等要求。这些组件的设计 采用了先进的材料和...

    基于柔性流程的NGW行星齿轮减速器CAD系统开发.pdf

    柔性设计流程是指在计算机自动设计的过程中,用户可以通过交互接口随时干预设计进程,调整设计参数并比较不同的设计方案,从而获得更加合理的设计结果。这种流程模拟了设计思维过程,使得系统具有较高的柔性。柔性...

    基于SOA的柔性分布式仿真框架的设计.pdf

    这种柔性设计不仅能够处理传统仿真系统难以应对的不确定性,也大大增强了分布式仿真系统的适用性和灵活性。 8. 项目的基金支持和作者信息:文档中还提及了项目基金支持信息,即“重庆市教委科技计划(IQO 81109)”,...

    深度迁移学习在柔性末端执行器端点检测的应用.pdf

    柔性设计使得末端执行器能够更好地适应不同的环境和接触条件,从而在医疗康复、美容护理等场景中发挥更大的作用。 综上所述,深度迁移学习在柔性末端执行器端点检测中的应用,不仅提升了检测精度,而且通过预训练...

    柔性生产线加工站的PLC程序设计.pdf

    "柔性生产线加工站的PLC程序设计" 柔性生产系统是一种集成了可编程控制器、电子计算机、组态监控、人工智能等现代化技术的生产设备。该系统由六个工作站组成,分别是上料检测站、搬运站、加工站、安装搬运站、安装...

    柔性铰链设计分析软件

    柔性铰链设计分析软件——Vink的FlexHinge是一款专为工程师和设计师打造的专业工具,旨在简化和优化柔性铰链的设计过程。这款软件利用先进的计算算法和可视化技术,帮助用户在设计阶段就能预见到铰链在实际应用中的...

    电信设备-柔性通讯装置.zip

    4. **医疗设备**:如可植入体内的传感器和电子设备,柔性设计减少了对患者身体的侵入性。 四、挑战与发展趋势 尽管柔性通讯装置展现出巨大的潜力,但目前仍面临诸多挑战,如设备的耐用性、稳定性、能量效率及大规模...

    基于PLC的柔性制造系统供料检测单元设计.pdf

    在柔性制造系统的设计中,涉及到硬件设备工作原理、软硬件的配合、系统算法设计等多个方面。现有的研究文献在硬件系统设计、软件系统设计等方面各有侧重,但仍难以找到能够全面指导制造业自动化生产设备开发者的设计...

    电信设备-轻量化高柔性移动电缆.zip

    2. 海洋通信:海底光缆和电缆需要在水下长时间移动,高柔性设计可防止因水流冲击或海洋生物影响导致的损坏。 3. 航天通信:卫星通信系统中,轻量化和高柔性的电缆能够在微重力环境下正常工作,适应舱内空间有限和...

    行业分类-设备装置-气悬浮柔性空间对接平台.zip

    柔性设计允许对接装置在一定程度上自我调整,以适应对接对象的动态变化,确保对接的成功率。 气悬浮柔性空间对接平台的实现涉及到多个关键知识点: 1. **气浮控制系统**:设计和实现一套能够精确控制气体流量的...

Global site tag (gtag.js) - Google Analytics