我一直在花费一些时间来重构我的C#代码,我对我的参数列表获得多大的本地变量感到震惊,特别是当您开始深入几个级别并且必须传递来自调用栈上方的局部变量。使用局部变量重构的最佳实践
作为一个例子,我有一些使用Linq到sql的相当复杂的代码。我在过程的早期实例化数据上下文,并在整个过程中使用它。但是,在重构之后,我发现我在所有子方法中都传递了这个DC,以及其他各种状态变量。
当然,一种解决方案是将这些局部变量变为成员变量,但这会使整个类非线程安全,并且在处理异步I/O时,意味着使用锁和互斥锁来削弱事物以使它们安全。
当考虑局部变量时,最佳实践是什么?你是否放弃并让他们成为会员?或者你带着州行李?或者你做别的事情?
编辑:我不知道你需要什么更多的细节。我不想转储一堆代码,因为通过它的本质来说明这一点,我必须展示一组非常复杂的过程。
我有很多局部变量,比如Linq到Sql DC,处理的各个阶段,处理和写入数据库的很多原始数据更新的各个阶段。
我想过创建一个状态上下文并传递它,但对我来说似乎有些骇人听闻,尽管我想这正是Linq to SQL dc的意思。