Roj*_*uck 15 c# variables constructor design-patterns instance
所以,
我最近一直在努力重新分解一些遗留代码,并且发现自己质疑我一直在做的一些重新分解决策的有效性.一个这样的查询是关于在对象内的方法之间使用实例变量进行对象共享.
具体来说,有许多地方将构造函数和方法拆分,并将局部变量提升为实例变量,从而允许从现在单独的方法进行访问.对我来说,这似乎是错误的.它破坏了封装,改变了范围并且可以影响生命周期,但是,这些类中的一些是性能相关的,因此我想知道重新分解这些方法使用参数传递的含义是什么呢?
更重要的是,我想知道我的假设是否有水?在私有方法之间共享时,对象的参数传递优先于实例变量吗?
在plus网站上,你不必将这些参数传递给其他方法.当一个方法有三个以上的参数时(根据Robert Martin的清洁代码),你的代码的可读性开始快速下降.我认为你应该混合这两种方法来打赌最好的结果.
您可以做的是查看是否可以从现有类中提取新类.当只有部分方法使用这些实例字段时,也许这些方法正在做一些可以抽象的方法.这样,您可以使用实例字段作为构造函数参数或属性创建一个新类,并实例化它.
我绝对认为你不应该只是采用局部变量并使它们成为实例变量,以避免传递它们.对于你已经列举过的原因,这绝对不是一个好主意,包括它会使类本身膨胀的事实.
该实例变量所表示的是否是该类本身的属性不是可以通用地解决的问题.它取决于该类所代表的实体.但是,这种设计与类本身的设计有关,也许是需要重新审视的整体类设计.
如果您提供一个您所指的重构示例,那么在该上下文中提供更好的答案可能会有所帮助
| 归档时间: |
|
| 查看次数: |
2628 次 |
| 最近记录: |