小编Are*_*sby的帖子

Maven 3和JUnit 4编译问题:包org.junit不存在

我正在尝试使用Maven构建一个简单的Java项目.在我的pom文件中,我声明JUnit 4.8.2是唯一的依赖项.仍然Maven坚持使用JUnit版本3.8.1.我如何解决它?

问题表现在编译失败:"package org.junit不存在".这是因为我的源代码中的import语句.JUnit 4.*中的正确包名称是org.junit.*,而在版本3中.*它是junit.framework.*

我想我已经在http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html找到了关于问题根源的文档,但是那里的建议似乎是Maven专家的意思.我不明白该怎么做.

junit junit4 junit3 maven-3 maven

74
推荐指数
6
解决办法
17万
查看次数

Java方法命名约定:太多的getter

为什么Java方法名称如此广泛地使用"get"前缀?至少在我的Java程序也有很多与以单词"获取"名称的方法.get方法的百分比非常高.由于通货膨胀,我开始觉得"获得"这个词正在失去意义.这是我的代码中的噪音.

我注意到,有功能性/声明性编程和PL/SQL中使用不同的命名约定.方法名称只是说明方法返回的内容.而不是account.getAmount()Time.getIsoFormattedDateString(Date date)他们将使用account.amount()Time.isoFormattedDateString(Date date).这让我感觉良好,因为该函数的名称描述评估方法(假设有没有副作用,这不应该是这样)的结果."get"前缀似乎是多余的.

我刚刚开始阅读"清洁代码"一书.它说方法应该只做一件事,那件事通常应该是以下之一:

  1. 通知某个事件的对象,通常将事件作为参数传递.
  2. 询问有关某个对象的问题,通常使用方法名称形成自然语言语句,将对象作为参数传递并返回布尔值.
  3. 获取某些内容,可能会传递一些查找键或某些要转换为参数的对象,并始终返回所需的对象/值.

我的问题是关于第三类.对于这种方法,是否存在除"get"之外的命名约定?选择方法名称/前缀时使用什么标准?

这是一个例子:

我有两个方法的类getDates()getSpecialDates().getDates()只返回私有变量的值(对日期集合的引用).据我所知,这是一个标准的吸气剂.getSpecialDates()是不同的; 它调用getDates(),从另一个类中获取过滤器,应用过滤器并返回实际上是其子集的过滤器getDates().

该方法getSpecialDates()可以被命名为computeSpecialDates(),findSpecialDates(),selectSpecialDates()elicitSpecialDates()或什么的.或者我可以简单地命名它specialDates().然后,为了保持一致性,我可以重新命名getDates()dates().

为什么要分开应该以"get"为前缀的方法和不应该使用的方法,以及为什么要为"get"找到替换词呢?

java getter many-to-many naming-conventions

39
推荐指数
7
解决办法
1万
查看次数

EJB 3.1容器管理并发与同步

我已经开始阅读有关单例会话bean和用于使用容器管理并发的注释.与简单地使用'synchronized'关键字相比,我没有看到这样的好处,所以我怀疑有一些重要的东西我不知道.考虑一下Rubinger&Burke,O'Reilly的" Enterprise JavaBeans 3.1 " 一书中的这个例子:

@javax.ejb.Lock(javax.ejb.LockType.READ)
public String concurrentReadOnlyMethod(){...}

@javax.ejb.Lock(javax.ejb.LockType.WRITE)
public void allowOnlyOneWriteAtATimeMethod(String stringToSet){...}
Run Code Online (Sandbox Code Playgroud)

这是怎么比读情况下,所有toghether省略注释和使用更好的synchronized关键字写的情况下,像这样的:

public String concurrentReadOnlyMethod(){...}

public synchronized void allowOnlyOneWriteAtATimeMethod(String stringToSet){...}
Run Code Online (Sandbox Code Playgroud)

java concurrency ejb-3.1

9
推荐指数
1
解决办法
6208
查看次数