共享状态在某些情况下是坏事。我现在在一个项目中,几乎所有的方法都会执行某种状态更改。我相信这是一个问题。一方面,我不能重用这些方法,因为根据当前的系统状态,方法调用后的新系统状态将会不同。另一方面,在这个项目中,测试非常困难或几乎不可能。
问题
所以我想知道什么技术在那里防止共享状态或重构这样的应用程序,以便有依赖性少间。
一种方法是以更多功能的编程方式进行编程。还有哪些其他最佳做法,以及哪些情况最适合他们?
代码示例将非常赞赏,如果他们帮助解释技术。
例
为
ModuleA
Public Sub DoSomething
Range("A2").Value = Worksheets("Sheet2").Range(cellReference).Value + 10
End Sub
ModuleB
Global cellReference = "B22"
更好(因为为全局变量和没有硬编码片和单元格引用无附图)
ModuleA
Public Sub DoSomething(resultCell, sourceSheet, sourceCell)
Range(resultCell).Value = Worksheets(sourceSheet).Range(sourceCell).Value + 10
End Sub
ModuleB
deleted
说明
所以,我想在这里应用的技术是:
- 删除硬编码值,并通过他们在作为参数
- 删除引用全局变量,并通过他们在作为参数
我知道,这是一个无论如何都应该遵循基本的最佳实践。但也许有一些特别有助于防止共享状态。我认为Erik Meijer表示,如果你有共享状态,通常会出现问题(我不确定我是否正确地引用了他)。
环境
顺便说一句,这是一个Excel VBA项目,没有软件工程背景的人开发的大量的遗留代码。不过,答案并不一定要针对这个特定的设置。
我会大量重构删除尽可能多的全局变量,这将是第一步。 作为第二步,对had-code和制作属性文件的一些重构可能是有用的。 稍后,您可以分析方法,找到代码重复(通常在这类软件上有大量重复...) 也许,随着应用程序的知识需求,您可能可以更进一步并使用一些状态机... – SoulWanderer 2010-10-04 07:34:32
你是对的:很多重构是最有可能的路要走。是的,许多重复的代码遍布整个地方。如果你想添加你的评论作为答案,我会接受它作为答案。 – Lernkurve 2010-10-04 18:12:44