小编Car*_*ter的帖子

通过一个简单的例子学习TDD

我正在尝试学习TDD,但我很难理解我需要编写的一个小应用程序测试的内容/方法.

应用程序的(简化的)规范如下:

它需要从用户那里获取csv文件的位置,word文档mailmerge模板的位置和输出位置.

然后,应用程序将读取csv文件,对于每一行,将数据与单词模板合并并输出到指定的文件夹.

为了清楚起见,我不会问我将如何编写这样的应用程序,因为我确信如果我继续开始,我知道该怎么做.但是,如果我想使用TDD进行操作,那么我会猜测我不想测试读取真正的csv文件,或者测试执行合并的第三方组件或转换为pdf.

我认为只是一些一般的TDD指导将是一个很大的帮助!

c# tdd

23
推荐指数
2
解决办法
2万
查看次数

在Eclipse中重构"包结构"以将包的子包重定位到其父包

在Eclipse的"Package Explorer"中,假设我有一个这样的包列表:

  • com.animal.dog
  • com.animal.cat
  • com.animal.frog

如果我想重构这个包结构,那么最终的包结构就像

  • com.dog
  • com.cat
  • com.frog

所以基本上删除父包并将子包附加到其祖父母.我在"com.animal"包中有很多子包,我想尽可能避免手动执行此操作,然后在各处更改包导入.

java eclipse refactoring packages package-structuring

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

Collections.unmodifiableList有任何性能风险吗?

我建议返回Collections.unmodifiableList()而不是直接返回一个成员变量,我的同事担心会有性能损失.当然,最好的答案是衡量它,我们可能会这样做 - 但我想知道你的经验和任何参考,赞成或反对.

java collections unmodifiable

23
推荐指数
2
解决办法
4867
查看次数

Java foreach效率

我有这样的事情:

Map<String, String> myMap = ...;

for(String key : myMap.keySet()) {
   System.out.println(key);
   System.out.println(myMap.get(key)); 
}
Run Code Online (Sandbox Code Playgroud)

所以myMap.keySet()foreach循环中调用一次?我想是的,但想要你的意见.

我想知道如果以这种方式使用foreach(myMap.keySet())会对性能产生影响,或者它等同于:

Set<String> keySet = myMap.keySet();
for (String key : keySet) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

java performance foreach loops premature-optimization

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

任何简单的方法来解释为什么我不能做List <Animal> animals = new ArrayList <Dog>()?

我知道为什么不应该这样做.但有没有办法向外行人解释为什么这是不可能的.你可以轻松地向外行解释:Animal animal = new Dog();.狗是一种动物,但是一系列的狗并不是动物的清单.

java oop generics covariance

22
推荐指数
5
解决办法
5063
查看次数

不推荐使用Java Date getDate(),重构为使用日历但看起来很难看

Eclipse警告我正在使用不推荐使用的方法:

eventDay = event.getEvent_s_date().getDate();
Run Code Online (Sandbox Code Playgroud)

所以我把它改写成了

eventDay = DateUtil.toCalendar(event.getEvent_s_date()).get(Calendar.DATE);
Run Code Online (Sandbox Code Playgroud)

它似乎工作,但它看起来很难看.我的问题是我是否以最好的方式重构了这个?如果没有,你会如何重构?我需要存储在bean中的日期的日期编号.

我最终在我的DateUtils中添加了一个方法来清理它

eventDay = DateUtil.getIntDate(event.getEvent_s_date());

public static int getIntDate(Date date) {
    return DateUtil.toCalendar(date).get(Calendar.DATE);
}
Run Code Online (Sandbox Code Playgroud)

java refactoring date

22
推荐指数
3
解决办法
5万
查看次数

记录最佳实践和想法

我即将对我的应用程序进行一些重构,然后我开始思考这个简单而复杂的主题,日志记录,如何做到干净,有效和信息丰富的日志记录......

当您阅读有关日志记录的文档时,您经常会看到此代码段

if (BuildConfig.DEBUG) {
    Log.d(TAG + "message");
}
Run Code Online (Sandbox Code Playgroud)

它让我想知道它的目的是什么?根据文档Android Developer - Log,调试日志消息被编译但在运行时被剥离,因此您不需要在该if语句中进行日志调用.还是我想知道什么?

然后我也想知道使用除调试之外的任何其他Log.x()调用的真正好处是什么,因为用户不会看到日志条目或登录到某些错误文件,因此它们将被编译并执行在生产环境中没有任何目的?这可能是之前if语句的用例?

我之前提到过,日志条目没有记录到文件中.为什么这不是Android的内置功能?是因为性能问题,不必要的权限使用还是别的?我已经在我自己的日志类中实现了这个功能,但现在我想知道这是不好的做法?但是拥有重要日志条目的日志也很好吗?

因此,要在开发和生产过程中实现清洁,有效和信息丰富的日志记录.什么是最佳做法?

logging android logcat

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

网上的大端或小端?

在网上发生数据传输的字节顺序是什么?是Little Endian还是big endian?一旦数据到达主机,它如何转换为相应的字节顺序?

network-protocols endianness

18
推荐指数
2
解决办法
2万
查看次数

样式不确定ActionBar上的进度条

我想在操作栏上设置progressBar但是设置

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);  
setProgressBarIndeterminateVisibility(true);
Run Code Online (Sandbox Code Playgroud)

on onCreate方法产生一个中等大小的progressBar(48dip x 48dip)我想.我想改变progressBar的大小,但我找不到如何做到这一点.你能帮我吗?

android android-progressbar android-actionbar

18
推荐指数
3
解决办法
3万
查看次数

静态导入仅来自类和接口

我的代码在Eclipse中编译得很好,但是当我尝试从命令行编译时(通过我们基于ruby的构建器系统),我收到以下错误消息:

static import only from classes and interfaces
Run Code Online (Sandbox Code Playgroud)

建议不允许静态导入公共静态字段.我应该寻找什么来帮助诊断这个问题?我该如何解决?

更新: per @Ted的请求,引用文件中的常量声明:

public static final String NULL = "<NULL>";
Run Code Online (Sandbox Code Playgroud)

和引用文件中的(bowdlerized)引用:

import static my.path.MyClass.NULL;
Run Code Online (Sandbox Code Playgroud)

java static-import

18
推荐指数
3
解决办法
2万
查看次数