【发布时间】:2009-02-10 19:45:53
【问题描述】:
我一直在花一些时间重构我的 C# 代码,我对局部变量的参数列表变得如此之大感到震惊,尤其是当您开始深入几个级别并且必须从更高层传递局部变量时调用堆栈。
例如,我有一些使用 Linq to sql 的相当复杂的代码。我在过程的早期实例化数据上下文并在整个过程中使用它。但是,在重构之后,我发现我在所有子方法中都传递了这个 DC,以及其他各种状态变量。
当然,一种解决方案是将这些局部变量变为成员变量,但这会使整个类成为非线程安全的,并且在处理异步 i/o 时,这意味着使用锁和互斥锁来破坏事物以使其安全.
在考虑局部变量时,您的最佳做法是什么?你让他们成为会员吗?还是您随身携带国家行李?还是你做别的事?
编辑:我不确定您需要更多详细信息。我不想转储一堆代码,因为本质上为了说明这一点,我必须展示一组非常复杂的程序。
我有许多局部变量,例如 Linq to Sql DC、处理的各个阶段、处理并写入数据库的大量原始数据的各个更新阶段。
我想过创建一个状态上下文并传递它,但这对我来说似乎有点骇人听闻,尽管我想这正是 Linq to SQL dc 的内容。
【问题讨论】:
标签: c# refactoring