【发布时间】:2013-11-06 06:54:09
【问题描述】:
我对 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 中...例如:
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?
这些问题一直出现在我的代码中,我永远无法确定如何正确拆分我的代码。任何伟大而清晰的例子将不胜感激。我检查了一些开源项目,其中许多项目太大,我无法在合理的时间内完成设计决策,或者有相互矛盾的设计选择。
谢谢!
【问题讨论】: