Tag: 流畅的界面

正则表达式的替代(流畅?)接口的设计

我刚刚看到Java的一个巨大的正则表达式让我想到了一般的正则表达式的可维护性。 我相信大多数人 – 除了一些badass perl mongers–会同意正则表达式难以维持。 我在考虑如何解决这种情况。 到目前为止,我最有希望的想法是使用流畅的界面 。 举个例子,而不是: Pattern pattern = Pattern.compile(“a*|b{2,5}”); 一个人可以写这样的东西 import static util.PatternBuilder.* Pattern pattern = string(“a”).anyTimes().or().string(“b”).times(2,5).compile(); Pattern alternative = or( string(“a”).anyTimes(), string(“b”).times(2,5) ) .compile(); 在这个非常简短的例子中,创建正则表达式的常用方法对于任何平庸的有才华的开发人员来说仍然是可读的。 但是,请考虑那些填充两行或多行的怪异表达式,每行包含80个字符。 当然,(冗长的)流畅的界面需要几行而不是两行,但我相信它会更具可读性(因此可维护)。 现在我的问题: 你知道正则表达式的任何类似方法吗? 你是否同意这种方法比使用简单的字符串更好? 你会如何设计API? 你会在你的项目中使用这样一个整洁的实用程序吗? 你认为这会很有趣吗? ;) 编辑:想象一下,可能存在比简单构造更高级别的方法,我们都没有来自正则表达式,例如 // matches aaaab@example.com – think of it as reusable expressions Pattern p = string{“a”).anyTimes().string(“b@”).domain().compile(); […]