C# 是否可以重新设计C方法接口,以消除'newstring[]{}'以提高可读性?

C# 是否可以重新设计C方法接口,以消除'newstring[]{}'以提高可读性?,c#,refactoring,C#,Refactoring,有一个如下的方法,我想在使用它时简化传递参数: public virtual Segment AddDataElement(string[] dataElement) { dataElementList.Add(dataElement); return this; } 该方法被多次调用,如下所示: message.AddSegment("NAD") .AddDataElement(new string[] { partyFunctionCodeQualifier })

有一个如下的方法,我想在使用它时简化传递参数:

public virtual Segment AddDataElement(string[] dataElement)
{
    dataElementList.Add(dataElement);
    return this;
}
该方法被多次调用,如下所示:

message.AddSegment("NAD")
    .AddDataElement(new string[] { partyFunctionCodeQualifier })
    .AddDataElement(new string[] { partyIdentifier, "", "92" });
是否可以修改方法定义,以便可以编写更可读的调用lile

message.AddSegment("NAD")
    .AddDataElement(partyFunctionCodeQualifier)
    .AddDataElement(partyIdentifier, "", "92");

后者是否可以在内部转换为早期形式?

是的,您完全可以这样做

首先,可以使用隐式数组类型将新字符串[]减少为新[]:

其次,您可以将参数更改为带有params关键字的参数数组:


此时,您确实可以只指定一个或多个字符串,而无需在源代码中构建数组。编译器将为您创建数组。

作为一个完整的旁注,我强烈建议您开始遵循.NET命名约定,以使代码更加地道:dataElement而不是data\u element,partyFunctionCodeQualifier而不是party\u function\u code\u qualifier等等。@DaisyShipton:这种形式的标识符是有原因的。它们实际上直接取自执行指导文件。我只将第一个字母改为小写,并用下划线替换空格。我发现该表单比.NET约定更具可读性,我看不出有任何理由对其进行更改。虽然我理解习俗的原因,但有时习俗是教条的委婉说法;嗯,我完全不同意。这最终会分散其他地方习惯这种约定的每个C开发人员的注意力——或者你会在使用这种约定的每个代码库中保持一致,或者你会得到一堆不同的样式。我在使用混合命名约定的代码库中工作过,这很可怕。我更喜欢使用我不喜欢的约定,例如将u放在字段名的开头,这至少是一个私有实现细节,而不是在不一致的代码库中工作。当然是你的要求,但这不仅仅是教条。我还要指出,在编写关于堆栈溢出的问题或答案时,如果你知道一个常用的约定,而你恰好不使用自己,那么遵循该约定尤为重要。任何在你和读者之间分散注意力的事情都是坏事。虽然您可以同意在您的团队中使用不同的约定,但在这一点上它不会分散您的注意力,但在堆栈溢出上您不能做同样的事情。@DaisyShipton:我可能错了。我已经更改了标识符以遵循约定,并且源代码是合理可读的。谢谢,这很好。谢谢你的回答,黛西。祝你今天愉快。为了告诉你,我已经更改了问题中的标识符。@pepr:太好了,谢谢。我也更改了答案中的标识符。
.AddDataElement(new[] { partyFunctionCodeQualifier })
public virtual Segment AddDataElement(params string[] dataElement)