小编Pet*_*iuk的帖子

为什么Google Guava Preconditions的checkArgument没有返回值?

我真的很喜欢guava库如何允许简单的单行检查null:

public void methodWithNullCheck(String couldBeNull) {
    String definitelyNotNull = checkNotNull(couldBeNull);
    //...
}
Run Code Online (Sandbox Code Playgroud)

遗憾的是,对于简单的参数检查,您至少需要两行代码:

public void methodWithArgCheck(String couldBeEmpty) {
    checkArgument(!couldBeEmpty.isEmpty());
    String definitelyNotEmpty = couldBeEmpty;
    //...
}
Run Code Online (Sandbox Code Playgroud)

但它是可以添加方法,它可以做参数校验和,如果校验成功返回一个值.以下是检查的示例以及如何实施:

public void methodWithEnhancedArgCheck(String couldBeEmpty) {
    String definitelyNotEmpty = EnhancedPreconditions.checkArgument(couldBeEmpty, !couldBeEmpty.isEmpty());
    //...
}

static class EnhancedPreconditions {
    public static <T> T checkArgument(T reference, boolean expression) {
        if (!expression) {
            throw new IllegalArgumentException();
        }

        return reference;
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道是通过设计,是否值得为此提出功能请求.

编辑:@Nizet,是的,检查方法可能是笨拙的.但是,对构造函数中的null进行检查看起来非常好,并且节省了调试NPE所花费的大量时间:

public class SomeClassWithDependency {

    private final SomeDependency someDependency;

    public SomeClassWithDependency(SomeDependency someDependency) {
        this.someDependency …
Run Code Online (Sandbox Code Playgroud)

java argument-passing guava

6
推荐指数
2
解决办法
6214
查看次数

我怎么能以编程方式找到所有未使用的导入?

在我的情况下,有两个原因:

  • 有时人们错误地导入了存在于macbook JDK中但在Linux中不存在的类.这导致在基于Linux的盒子的ci服务器上构建失败.我不经常发生,但是当它确实发生时,我认为应该有一些更聪明的方法来更早地找到它.
  • 未使用的导入会在IDE /代码分析中触发警告.有时候有人需要花时间清理这些东西.即使只在IDE中单击右键,您仍然需要提交更改并确保所有内容都可以正常构建.

我很好奇是否有任何方法可以通过编程方式找到未使用的导入(比如单元测试),如果有的话就在本地失败.

也许由于未使用的导入声音失败,但是如果它为团队整体节省时间,那么这样做很有意义(也希望听到对此的意见).

更新:

我遵循了yegor256的建议,并将checkstyle任务与Sun Code Conventions的最初小部分(未使用的导入就是其中之一)结合起来,如果发现违规,它就会破坏构建.

经过一周的试用,我们的代码库中没有未使用的导入,并且令人惊讶的是没有关于此规则的抱怨(顺便说一下,checkstyle非常快 - 分析~100KLoc只需不到一秒钟)

至于使用IDE进行此类分析 - 是的,这是一个很好的选择,但是作为自动构建的一部分运行这种检查更好.

java static-analysis reverse-engineering

6
推荐指数
2
解决办法
7310
查看次数

需要参考基于scala应用程序的开源游戏框架

我即将开始使用play2进行小型项目,并且如果有任何其他样本应用程序可用,那么除了那些与播放分发一起使用的应用程序之外.

scala sample playframework playframework-2.0

6
推荐指数
1
解决办法
2336
查看次数

如何在java中找到匿名类的GC根?

就在今天,我在我的应用程序中发现内存泄漏,其中大量对象被创建为匿名类.这是一个经典的例子,每个对象都有自己的类定义并放入堆中.

在运行时找到内存分析器并且Eclipse Memory Analyzer完成的堆转储分析也没有用.

我想知道如何使用线程id(或至少父类加载器)记录在运行时创建的所有匿名类.

我认为单独这件事会让找到根本原因变得微不足道.

java garbage-collection memory-leaks classloader memory-leak-detector

6
推荐指数
1
解决办法
285
查看次数

如何找出我的scala代码中使用的隐含内容

问题陈述:

  • 我阅读了多篇文章/文章,这些文章暗示了scala编译的时间

  • 我想删除/减少它们到最小可能看到没有它们的编译时间会是什么样的(代码库是基于scalaz&akka&slick的各种复杂性的大约1000个文件)

  • 我真的不知道我可以执行什么样的静态分析.对现有工具的任何赞美/引用都非常赞赏.

performance static-analysis scala compilation scalaz

6
推荐指数
1
解决办法
290
查看次数

Scala用于桌面

我知道存在用Scala编写的用于Web开发(提升和播放)的已建立框架.

我想知道是否有任何桌面开发框架(即使在早期测试阶段).我所追求的: - 应用程序工作流程 - 自定义ui组件

desktop frameworks scala

5
推荐指数
1
解决办法
751
查看次数

使用Guava检查是否只存在一个元素

最近,如果集合中只存在一个元素,我需要做"特殊情况"场景....size() == 1通过使用...iterator.next()看起来丑陋来检查和检索,所以我在home brew Collections类中创建了两个方法:

public class Collections {
    public static <T> boolean isSingleValue(Collection<T> values) {
        return values.size() == 1;
    }

    public static <T> T singleValue(Collection<T> values) {
        Assert.isTrue(isSingleValue(values));
        return values.iterator().next();
    }
}
Run Code Online (Sandbox Code Playgroud)

几天前我发现Guava有一个名为Iterables.getOnlyElement的方法.它涵盖了我的需要和替换singleValue,但我找不到匹配isSingleValue.这是设计的吗?是否值得提出具有Iterables.isOnlyElement方法的功能请求?

编辑: 由于很少投票,我决定开放番石榴增强 - 问题957.最终决议 - 'WontFix'.争论与Thomas/Xaerxess提供的非常相似.

java collections guava

5
推荐指数
2
解决办法
2942
查看次数

如何禁用 jquery 表上的斑马行

我正在使用基本设置

this.$el.find('#data-provider-table').dataTable();
Run Code Online (Sandbox Code Playgroud)

但表默认带有条纹(如http://www.datatables.net/examples/styling/stripe.html示例中所示)。我想禁用它们,但不知道该怎么做。请帮忙 :-) !

我使用的是jquery 1.9.4

jquery datatables

5
推荐指数
1
解决办法
8706
查看次数

RSS 是否跟踪保留或提交的内存?

我正在 java 8 上运行不同 jvm 选项的实验,以降低 RSS:

输出(部分线程区域):

-                    Thread (reserved=130696KB -21564KB, committed=130696KB -21564KB)
                            (thread #121 -21)
                            (stack: reserved=130048KB -21504KB, committed=130048KB -21504KB)
                            (malloc=379KB -67KB #610 -105)
                            (arena=268KB +7 #240 -42)
Run Code Online (Sandbox Code Playgroud)

问题:上面输出的 RSS 将考虑什么内存,是committed还是reserved?

jvm jvm-arguments

5
推荐指数
1
解决办法
1523
查看次数

如何在Sybase中的when语句中指定ignore case

如何在Sybase中的语句中指定ignore case?where

基本上我想要

 select * from _table where _field = 'BUSY'
Run Code Online (Sandbox Code Playgroud)

如果在字段中有任何行具有类似'BuSy'的行,则返回行_field.

sql sybase

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