我正在尝试使用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专家的意思.我不明白该怎么做.
为什么Java方法名称如此广泛地使用"get"前缀?至少在我的Java程序也有很多与以单词"获取"名称的方法.get方法的百分比非常高.由于通货膨胀,我开始觉得"获得"这个词正在失去意义.这是我的代码中的噪音.
我注意到,有功能性/声明性编程和PL/SQL中使用不同的命名约定.方法名称只是说明方法返回的内容.而不是account.getAmount()或Time.getIsoFormattedDateString(Date date)他们将使用account.amount()和Time.isoFormattedDateString(Date date).这让我感觉良好,因为该函数的名称描述评估方法(假设有没有副作用,这不应该是这样)的结果."get"前缀似乎是多余的.
我刚刚开始阅读"清洁代码"一书.它说方法应该只做一件事,那件事通常应该是以下之一:
我的问题是关于第三类.对于这种方法,是否存在除"get"之外的命名约定?选择方法名称/前缀时使用什么标准?
这是一个例子:
我有两个方法的类getDates()和getSpecialDates().getDates()只返回私有变量的值(对日期集合的引用).据我所知,这是一个标准的吸气剂.getSpecialDates()是不同的; 它调用getDates(),从另一个类中获取过滤器,应用过滤器并返回实际上是其子集的过滤器getDates().
该方法getSpecialDates()可以被命名为computeSpecialDates(),findSpecialDates(),selectSpecialDates()或elicitSpecialDates()或什么的.或者我可以简单地命名它specialDates().然后,为了保持一致性,我可以重新命名getDates()成dates().
为什么要分开应该以"get"为前缀的方法和不应该使用的方法,以及为什么要为"get"找到替换词呢?
我已经开始阅读有关单例会话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 ×2
concurrency ×1
ejb-3.1 ×1
getter ×1
junit ×1
junit3 ×1
junit4 ×1
many-to-many ×1
maven ×1
maven-3 ×1