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(); […]

Java中的System.out.println()vs \ n

假设我想打印5行。 哪种方法最佳(性能和可读性)。 System.out.println(); System.out.println(); System.out.println(); System.out.println(); System.out.println(); 要么 System.out.println(“\n\n\n\n”); 这是一个偏好的问题还是比另一个更好的问题。 看起来使用第二种方法可以节省大量时间。

在对象上调用getter而不是将其存储为局部变量(内存占用,性能)

在下面的代码中,我们调用listType.getDescription()两次: for (ListType listType: this.listTypeManager.getSelectableListTypes()) { if (listType.getDescription() != null) { children.add(new SelectItem( listType.getId() , listType.getDescription())); } } 我倾向于重构代码以使用单个变量: for (ListType listType: this.listTypeManager.getSelectableListTypes()) { String description = listType.getDescription(); if (description != null) { children.add(new SelectItem(listType.getId() ,description)); } } 我的理解是JVM以某种方式针对原始代码进行了优化,尤其是嵌套调用,如children.add(new SelectItem(listType.getId(), listType.getDescription())); 。 比较两个选项,哪一个是首选方法,为什么? 这就是内存占用,性能,可读性/易用性以及其他我现在不想到的内容。 后一个代码片段何时变得比前者更有利,也就是说,当使用临时局部变量变得更合适时,是否有任何(近似)数量的listType.getDescription()调用,因为listType.getDescription()总是需要一些堆栈存储this对象的操作?