我对 java 项目结构以及类、接口等方面的最佳实践感到好奇。
如果有人知道遵循良好最佳实践的优秀开源项目,我将不胜感激;似乎每个人都略有不同,一些关于该主题的 Oracle 文档完全矛盾。如果有人可以给我一个细分(或对我的理论项目结构的批评,那将不胜感激)。我相信我相当了解 /src、bin、lib、doc 等以及 com.* 结构。我的问题正是每个类、每个文件等中应该包含的内容。
我最大的问题是如何准确地分解类之间的功能。例如; 我有两节课:
Person.java Runner.java (这是入口点;入口点有命名约定吗?似乎带有 main()、run() 等的类是不同的“层”......如何决定入口点应该在哪里?是否应该创建一个只有 main() 的类(以及实际执行必要的计算?)
Person 具有您期望的所有常见变量....
int height, weight;
String ethnicity;
boolean gender; etc.etc.
Person(int h, int w.....) {this.height=h....}
public getters/setters for all variables
现在我正在寻找一个可以做两件事的程序:
获取每个人的所有属性(假设我们已经实例化了一个 Person() 数组),将它们连接到一个字符串并将其添加到一个新数组中。
按身高排序,然后按体重排序,然后放入列表中。
所以首先;Person 类是否应该有一个方法“String concatToString(){}”,或者进行连接的代码是否应该在 Runner 中......例如:
亚军.java:
public class Runner {
String getPersonString(Person p) {
StringBuffer Sb = new StringBuffer();
Sb.append(p.get(height));
etc.
return Sb.toString();
}
main() {
for(int i=0; i<arr.len; i++) {
getPersonString(arr[i]);
}
//more code that we will be further executing etc...; mostly just function calls in
class Runner
}
}
现在对于第二个问题我应该如何处理这个......创建一个新类;在runner.java 中创建一个priorityQueue 和比较器?创建另一个包含比较器的类 PersonPQueue?
这些问题一直出现在我的代码中,我永远不确定如何正确拆分我的代码。任何伟大而清晰的例子将不胜感激。我检查了一些开源项目,其中许多项目太大,我无法在合理的时间内完成设计决策,或者有相互矛盾的设计选择。
谢谢!