最佳的重用Java方法的方法

6
我正在学习Java和OOP,并通过Project Euler网站上的练习题来练习(该网站非常棒)。
我发现自己经常重复做一些相同的事情,例如:
- 检查整数是否为质数/生成质数 - 生成斐波那契数列 - 检查数字是否为回文数
最好的方法是如何存储和调用这些方法?应该编写一个实用程序类,然后进行导入吗?如果是这样,我应该导入一个.class文件还是.java源文件?我使用纯文本编辑器和Mac终端进行工作。
谢谢!

1
+1 for euler 和 IDE-less Java 编程。 - miku
1
在学习一门编程语言时,不使用集成开发环境(IDE)是一个不错的方式。但是,在进行大规模的Java项目时,请不要认为您可以继续以这种方式工作。 - jasonmp85
4个回答

5
你可以将你的方法放入一个实用类中,然后import该类(而不是文件!)。
import my.useful.UtilityClass;

...
boolean isPrime = UtilityClass.isPrime(2);

当事情变得更加复杂,您希望在多个项目中重复使用您的东西时,可以将其放入一个jar文件并将该jar文件添加到项目中。然后您就可以像上面那样import并使用该类。


my.useful.UtilityClass 是指哪个文件 my.useful.UtilityClass.class - carillonator
1
不,my/useful/UtilityClass.class文件是相对于类路径的 :) - BalusC
如果您有很多这些东西,并以一致的方式命名它们,通常使用静态导入(http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html)比一遍又一遍地在代码中使用“UtilityClass.”更容易。 - jasonmp85

1

UtilityClass的概念很好,但它还为您提供了练习TDD的机会。对于一个新的欧拉问题,在UtilityClass中创建一个空方法,您将在其中解决该问题。然后编写一堆JUnit测试来使用这个新方法并依赖于它的正确性。这些测试都将失败(或者应该失败,因为您还没有编写解决方案!)

现在解决欧拉问题并观察测试通过!如果您想要重用代码,单元测试将在重构期间保持正确,并提供了添加回归错误的位置。


1
使用你的答案创建一个目录树。 my/math/*.java。 你应该为类指定my.math包。 为不同的问题集创建不同的类; Primes.java,Fibonacci.java等等。 如果您已经解决过一次问题,请勿再次解决,除非您的解决方案已损坏。
将上述目录添加到您的类路径中(java -cp directory),或将目录打包并将其添加到您的类路径中。
这样的库是成功项目的命脉。 创建和使用解决方案库(对于语言不存在库的情况)可以解决许多项目问题。 尽可能使用可用的库。

0
为什么不创建一个jar文件,即自己的库,并包含经常使用的组件?如果编译你的Java代码,只需在类路径中包含实用程序归档文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接