【发布时间】:2019-08-27 12:33:34
【问题描述】:
我有一些用于验证的服务。它们既包含简单的数据验证,也包含一些更复杂的业务逻辑。其中一些验证调用还“清理”数据,使其符合我们的标准。这似乎应该在其他地方完成(单一责任)。
我对验证数据的理解是,它只是回答是/否问题(它是否有效)并可能返回一些验证消息。所以它会返回一个布尔值或某种类型的验证错误。
如果我们想在保存或处理之前格式化数据,我们应该有另一层代码来清理数据的格式。
看看下面的例子。我们有两种方法都检查字符串的长度。如果长度正确,第二个还会将其转换为上部。因此,它会在其过程中更改字符串。
问题:我的核心问题是,在谈到验证时,我们是否应该关注清理/格式化数据?换句话说,验证是否应该改变数据?
public class ValidationService
{
public bool ValidateText(string text)
{
bool rtn = false;
if (IsStringCorrectLength(text))
{
rtn = true;
}
return rtn;
}
public bool ValidateTextAndFormat(string text)
{
bool rtn = false;
if (IsStringCorrectLength(text))
{
text = text.ToUpper();
rtn = true;
}
return rtn;
}
private bool IsStringCorrectLength(string text)
{
bool rtn = false;
if (text.Length < 11)
{
rtn = true;
}
return rtn;
}
}
【问题讨论】:
-
如果代码可以正常工作,我会在Software Engineering 上问这个问题:我们会“帮助,它不起作用”,他们会说“好的,它有效我>,但是……”。我们称之为“基于意见”。就是说,在我看来,您对事物的看法是正确的(请参阅 Orel 的回答),而且我认为您不会有很多分歧。然而,在生产代码中,我们经常将丑陋的代码保留多年。如果它运行良好并且在其他地方没有引起任何问题,那么修复它是一个低优先级。好问题,错误的地点。
-
根据我的经验“不”。验证和数据操作是两个不同的主题。每一项都应在指定的服务中妥善处理。否则,您将拥有一个紧密耦合的组件,非常抗拒变化。
-
更适合User Experience网站。
-
是的,很抱歉将把它转移到软件工程。不要在这里发布很多东西。我应该让自己更熟悉规则。谢谢!
标签: c# .net validation