java静态引入

前端之家收集整理的这篇文章主要介绍了java静态引入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

静态导入

优点

前言就说到这儿,现在进入今儿这篇文章的正题:静态导入(static import)。

先看下面这段示例代码

   1: public class SayHelloTest{

2: @Test

3: public void should_say_hello_when_given_your_name(){

4: gotoPage("hello");

5:

6: input("name","yuyijq");

7:

8: click("sayButton");

9:

10: assertThat(helloPage.getLabel(),is("hello yuyijq"));

11: }

12: }

这是一段典型的功能测试代码。对于功能测试来说,关键的就是要模拟用户场景,而不涉及技术细节,用领域的语言来表达出测试。上面的测试用很清晰的步骤表达出了测试的意图,要注意的是这里的gotoPage,input,click以及assertThat方法都不是SayHelloTest类的实例方法,都是定义在别的类甚至是第三方框架中的静态方法。通过Java的静态导入特性,使得现在代码的可读性更高:

1: import static com.cnblogs.yuyijq.functionalTest.gotoPage;

-----

弊端

通过静态导入,我们可以去掉类名的前缀,这样就可以将代码写得更自然,更像是在描述一件事儿。但静态导入也并不是没有缺点。在软件开发中,很多特性适当的使用都很好,但是一旦使用过度就有可能变成坏事,这就是那个名言:不要拿着锤子,就把啥都当钉子。请看下面的代码

   1: map.get(MOST_VIEWED.toString());

2: map.get(LAST_VIEWED.toString());

3: map.get(IS_LAST_ARTICLE.toString());

4: map.get(IS_SHOW_PICTURE.toString());

5: //....下面有类似代码若干行

咋一看还以为这些MOST_VIEWED什么的全部是常量,但最后发现这些都是枚举PortalOptions里的项,都是通过静态导入导进来的。但由于没了PortalOptions这个具有说明信息的枚举名作为前缀,丢失了很多信息,造成这段代码不是很容易看懂,不知道map.get出来的到底是什么。代码虽然短了很多,但是如果加上PortalOptions,那么就能很直观的直到我们需要从这个map里获得PortalOptions相关的东东。

猜你在找的程序笔记相关文章