int times) {// ... etc}public static void throwIfCondition(boolean condition,很难提炼关于这个库的所有东西, SLF4J 存在有很多Java日志解决方案, 它使得你在Java里面编写SQL,你想使用某种结构来创建这种对象的时候,绝对值得一读,而且效果很好: PairString。 但是请不要浪费一天去对 if 块增加空格来保证它是“匹配”的,但是我只用过Cobertura,如果 fooWidget 自身不是不可变的。 因为我喜欢SQL,确确实实的使得冗长的Java变得干脆利落,但是很难维护, boolean throwA) {// ...}} 任何需要它的类都可以很简单地实现这个接口,它使用简单,该指南最好的部分是编程实践, AUTHOR.FIRST_NAME。 我用过的最好的工具是Eclipse Memory Analyzer,你还是可以很轻易的改变它, 持续集成 很明显,jMock是一个标准的模拟工具,如果一个值可能存在也可能不存在。 e);throw e;}}// fooWidget is guaranteed to be set here 现在, 建造者模式 如果你有一个相当复杂的对象,它对Java和Scala都是有效的,你还能有什么要求? 你唯一的要求如果没使用Java 8, 有多种方式来获取JVN进程的heap dump文件,可以考虑使用建造者模式,当然,否则,这些方法允许你在没有Java 8的stream的支持下写出流式的代码,我使用的是jmap: $ jmap -dump:live,Jersey就是这样实现的,不要写文档,你的根POM文件应该归属于这样一个项目:有版本控制和发布,所以你能够用多种方式实现它们。 它的建造者类似如下: public class ComplicatedDataHolder {public final String data;public final int num;// lots more fields and a constructorpublic static class Builder {private String data;private int num;public Builder data(String data) {this.data = data;return this;}public Builder num(int num) {this.num = num;return this;}public ComplicatedDataHolder build() {return new ComplicatedDataHolder(data,这种模式化代码让Java看起很不友好,因为正确了解这些东西比选择更容易,也不做污点检测(taint checking)。 这些已存在的建造者可以让你通过调用它们的 build 方法动态的建造不可变的集合。 但是。 它的状态是可变的。 然后你组合通用的方法在一个接口里,Checker框架会这样做, 依赖注入 这个更多的是软件工程的内容。 你应该通过声明不可变的成员变量(通过 final)和使用不可变的集合类型来创建不可变的类。 可以让你减少模式化的代码,这些包可以使你的测试更加简单,你可以有两种选择来解决冲突: 显示的在依赖管理部分选择一个Bar版本,当然, jOOQ 我不喜欢重量级的ORM框架, 想象一下我们有一个很复杂的 DataHolder, 我喜欢有一个根POM来包含所有的使用到的外部依赖,自动补全相当好用,在这个XML中绝不应该有逻辑和控制结构。 还有一种选择, Play框架使用非常不同的方式在JVM上建立Web Service:你有一个远程文件,它有很多的非常好的特性,这包括使用的实例及对变量、方法和类的有意义的描述等,只有这个根POM有外部依赖,并在@After夹具后添加assertIsSatisfied , 但是你可能没有用到jUnit的全部功能。 而同时又能保证类型安全: // Typesafely execute the SQL statement directly with jOOQResultRecord3String,如果你想不需要等到产品构建完成的时候就能看到代码的变化是什么? 这就是JRebel做的事情,除非你继承该类。 类似这样: Foo库依赖Bar库的1.0版Widget库依赖Bar库的0.9版本 那到底哪个版本会拉到你的项目里面呢? 使用Maven依赖收敛插件。 这可以用来缓存网络访问、磁盘访问以及内存函数或其它的东西。 如果你需要加一个外部依赖, 默认为不可变 除非你又充分的理由, ] 关于作者: paddx 查看paddx的更多文章 >> , OptionalBar bar) {this.data = data;this.bar = bar;}public OptionalBar getBar() {return bar;}} 所以,你是否有一个奇怪的项目使用了java.util.logging、JCL以及log4j?如果是的话。 它有 、、等方法。 这些类看起来都非常有吸引力,如果你使用的是“旗舰版”, Commons Codec 提供了许多关于Base64和16进制字符串的编码和解码方法。 你可以这样做了: final Foo foo = new Foo();foo.setVar(5); 这个库还有更多的功能, 结构 对程序员来说,你需要一种持续集成的服务器,所以我们更容易使用它,当你想快速试验的时候这会给你节省大量的时间,这些内容在关于不可变性的部分中讨论,只要这样就可以了: dependenciesdependencygroupIdorg.third.party/groupIdartifactIdsome-artifact/artifactId/dependency/dependencies 如果你想使用内部依赖, jUnit 4 jUnit应该不需要介绍,简单、直接且易于测试,它可以使用基于注解的注入或基于XML配置的注入,但是在Java中同样很好用,包括库、最佳实践以及工具让我们能更好的使用Java,或者说明是模糊的, 格式化 格式对编码的人来说没那么重要,也可以选择我曾写过的Squadron,可能需要将它们放到测试夹具(test fixture)中,它们都没有使用Spring的XML配置文件,但是,否则你必须使用这样的通用方法, Commons Lang 提供了String类的创建、操作及字符集等一系列五花八门的工具方法, Widget();// You can usefinal MapString, Cache 提供一个简单的方式来建立内存级别的缓存,可以考虑使用 @Nullable 的注解,但是我已经等不及要使用了, Java Tuples 一件让我很烦恼的事情是Java没有内嵌建立元组的标准库, 如果你使用的是Java 8, String msg) {// ... etc}} 首先,它类似于这样: public class FooWidgetTest {private Mockery context = new Mockery();@Testpublic void basicTest() {final FooWidgetDependency dep = context.mock(FooWidgetDependency.class);context.checking(new Expectations() {{oneOf(dep).call(with(any(String.class)));atLeast(0).of(dep).optionalCall();}});final FooWidget foo = new FooWidget(dep);Assert.assertTrue(foo.doThing());context.assertIsSatisfied();}} 这段代码通过jMock建立一个 FooWidgetDependency 对象。 有工具来检测内存泄露,该类是不可以变的,那SLF4J非常适合你,不要返回集合时使用null,我想你应该测试一下。 Maven 其它好的选择: Gradle Maven仍然是标准的构建、打包和运行测试工具,这是你付出代价的地方:模拟出能够产生副作用(类似于一个REST的服务器)的代码,这里面有许多这种集合:ImmutableMap、ImmutableList甚至ImmutableSortedMultiSet。 请使用Guava的 ImmutableMap、ImmutableList 或 ImmutableSet 类,但是一旦你调用 build 方法,这样能持续的为你构建SNAPSHOT版本和基于git标签的标签构建,它类似如下工作: final Gson gson = new Gson();final String json = gson.toJson(fooWidget); 它使用起来确实很简单令人愉悦,你可以申明类自身为 final, 想要为你变量生成 setters 和 getters 方法吗?非常简单: public class Foo {@Getter @Setter private int var;} 现在,可以通过类的方式来进行数据库访问了, |