清洁和使用输入的良好类结构?

时间:2010-05-23 11:46:38

标签: c# validation

我希望对系统的用户有所帮助,所以在测试之前我会稍微清理输入是否可以使用。所以我有这样的流程:

  1. 输入: aa12345b
  2. 以某种方式清理输入: 12345
  3. 测试干净输入是否有效
  4. 使用输入(如果有效)
  5. 现在我想以一种漂亮的OO方式(IoC,接口,可测试,没有静态,你知道)这样做。任何想法如何为此组织一个类结构?分别使用Cleaner和Parser / Validator类,或者将它们作为方法放在数据类本身中是否合适?感谢您对此有任何帮助或讨论,如果答案是在C#中,请多多谢意!

2 个答案:

答案 0 :(得分:3)

我赞赏你考虑考虑易用性。但是,看看你的例子,像这样清理输入是一个坏主意。作为程序员,您假设您在输入无效内容时知道用户想要输入的内容。这是不可能的。您最好使用经过验证的方法,从标准验证器(如正则表达式验证器)中显示有用的友好消息。

你必须假设如果用户输错了,他们要么

  1. 错误输入
  2. 不明白 输入要求
  3. 有意 进入恶意的东西 寻找不正确的验证 并寻找漏洞 在您的软件初步 尝试前的调查 破解它。
  4. 对于选项1或3,您最好向用户提供有用的消息并让他们重新输入输入。对于选项3,您可以通过不使用最佳实践来鼓励潜在的攻击者。

答案 1 :(得分:1)

我同意David Stratoon的说法,这通常不是一个好主意,但选择最终是你的。

我个人会将这些方法编写为String类的扩展方法。在这种情况下,您的方法将显示为System.String实例方法的一部分。

InputTextbox.Text.ParseNumerics();


public static int ParseNumerics(this String str)
{
        //return parsed string
}

http://msdn.microsoft.com/en-us/library/bb383977.aspx