假设我正在填充对象的属性,我需要将其中一个属性传递给另一个方法,是否可以从新对象引用属性,或者我应该首先设置一个单独的变量并使用它?有一种方式比另一种更好吗?请记住,我没有致电SaveChanges()
。
Method #1 (use property from new object)
=================================================
newObject.LegacyId = oldObject.Id;
newObject.NewId = GetNewIdFromLegacyId(newObject.LegacyId);
Method #2 (set separate variable)
=================================================
int legacyId = oldObject.Id;
newObject.LegacyId = legacyId;
newObject.NewId = GetNewIdFromLegacyId(legacyId);
答案 0 :(得分:0)
我必须假设两种方法都是等价的。
唯一能让事情变得不同的是,当newObject.LegacyId
的getter或setter中有更多代码而不仅仅是存储/返回一个成员变量时,你通过它返回一个不同于set的值值。这将是非常不敏感和意外的。 (因此,你实际上不太可能这样做。)
因此,您更喜欢哪种方法。我个人认为我可能更喜欢第三种方法:
int legacyId = oldObject.Id;
int newId = GetNewIdFromLegacyId(legacyId);
newObject.LegacyId = legacyId;
newObject.NewId = newId;
这是责任的微观隔离:获取Id值和对象初始化。这似乎是挑剔,但单一责任(SOLID的S)是最重要的设计原则之一,它可以应用于任何级别,以使代码更易于维护。它可能会导致您将代码分成两部分,您可以(单元)单独测试。