所以我有一个格式化问题。我有一个消费者模型,它有一次将消费者模型数据形成一个字符串的方法。每个字段都有自己定义的长度:
public class ConsumerModel
{
public string ConsumerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string GenerateConsumerString()
{
var request = FormatRequestField(ConsumerId, 12);
request += FormatRequestField(FirstName, 15);
request += FormatRequestField(LastName, 20);
return request;
}
}
FormatRequestField(string,int)方法接受该字段并返回已编辑/填充的字符串,该字符串为整数给出的长度。我的问题是,字段的长度是否应存储为私有变量?我知道这是正常的做法,所以你不会最终得到“神秘的”#34;整数 - 但每个整数只使用一次。鉴于在我的实际代码中,该模型有大约50个属性,这似乎是将字段长度存储为私有变量的许多额外代码行。
我只是想知道这种情况的最佳做法是什么。谢谢你的帮助。
答案 0 :(得分:2)
字段的长度应该存储为私有变量吗?
不,它们应存储为私有常量。变量是可以改变的东西;这就是为什么他们称之为变量,因为他们变化。常数是不变的东西;这就是为什么他们称之为常量,因为他们常量。
我知道这是正常做法,所以你不会以“神秘”为主题。整数 - 但每个整数只使用一次。
那又怎样?
命名常量的目的不是重复删除表达式;它使得代码对于阅读它的未来开发人员来说清晰可见。
鉴于在我的实际代码中,此模型有大约50个属性,这似乎是将字段长度存储为私有变量的许多额外代码行。
你相信50行代码是#34;很多"。 50行代码无。声明常量的50行代码只需几分钟的工作。五十行永不改变的常量声明 你为什么犹豫不决?
我只是想知道这种情况的最佳做法是什么。
您已经知道最佳做法是什么:避免使用魔术数字,并使您的代码对未来的开发人员清晰可见。
答案 1 :(得分:1)
除了魔术值,可读性非常重要。编写代码的次数通常是写的,所以无论你做什么来帮助提高可读性,你都应该这样做。例如,您可以使用常量隐藏类中的长度:
public static class FieldWidth
{
public const int ConsumerId = 12;
public const int FirstName = 15;
public const int LastName = 20;
}
阅读本文:
var request = FormatRequestField(ConsumerId, 12);
并比较:
var request = FormatRequestField(ConsumerId, FieldWidth.ConsumerId);
哪一行包含含义而无需转到FormatRequestField并检查12代表什么?当你忘记这段代码的时候,哪一个对你有意义?