c# - 实例变量与参数传递?有争论吗?

标签 c# design-patterns variables constructor instance

所以,

我最近一直致力于重构一些遗留代码,并且发现自己质疑我所做的一些重构决策的有效性。一个这样的查询是关于使用实例变量在对象内的方法之间共享对象。

具体来说,在许多地方,构造函数和方法已被拆分,局部变量被提升为实例变量,从而允许从现在独立的方法进行访问。在我看来,这似乎是错误的。它破坏了封装,改变了范围并可能影响生命周期,但是,其中一些类与性能相关,因此我想知道重构这些方法以使用参数传递代替的含义是什么?

更重要的是,我想知道我的假设是否站得住脚?在私有(private)方法之间共享时,对象的参数传递是否优于实例变量?

最佳答案

我绝对认为您不应该仅仅采用局部变量并将它们设为实例变量只是为了避免传递它们。出于您已经列举的原因,这绝对不是一个好主意,包括它会使类本身膨胀。

该实例变量所表示的是否是该类本身的属性不是可以通用解决的问题。这将取决于类代表的实体。 但是,此设计与类本身的设计有关,并且可能需要重新审视其整体类设计

如果您提供了您所指的重构的示例,它可能有助于在该上下文中提供更好的答案

关于c# - 实例变量与参数传递?有争论吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4193052/

相关文章:

C# 联合和数组复制

c# - 如何在悬停时更改 gridview 内部可用控件的工具提示的背景颜色

java - 寻找基于输入参数的类创建和配置模式

php - 在没有数据库的情况下永久保存 php 变量

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

python - 为什么 Python 在函数中增加变量时会提示赋值前的引用?

c# - 在调用 BuildServiceProvider 之前将 dotnet 核心依赖注入(inject)到扩展方法

c# - 根据特定条件拆分 c# 字符串的正则表达式

php - 模块配置 Zend 框架 2 中的约束模式

Java泛型类型: how to pass the right class type properly?