什么是更好的包装和命名安排?

时间:2012-07-29 09:08:00

标签: java model-view-controller design-patterns naming-conventions code-organization

只是想知道命名和打包惯例:

thufir@dur:~/NetBeansProjects/USENET$ 
thufir@dur:~/NetBeansProjects/USENET$ tree src/
src/
├── META-INF
│   └── persistence.xml
├── net
│   └── bounceme
│       └── dur
│           └── usenet
│               ├── controller
│               │   ├── CommentsDefaultListModel.java
│               │   ├── GroupDefaultListModel.java
│               │   ├── MessageBean.java
│               │   └── MessagesDefaultListModel.java
│               ├── model
│               │   ├── Articles.java
│               │   ├── NewsgroupsArticles.java
│               │   ├── Newsgroups.java
│               │   ├── PropertiesReader.java
│               │   └── Usenet.java
│               └── swing
│                   ├── Comments.form
│                   ├── Comments.java
│                   ├── Groups.form
│                   ├── Groups.java
│                   ├── MainFrame.form
│                   ├── MainFrame.java
│                   ├── Messages.form
│                   ├── Messages.java
│                   ├── PanelWithTabs.form
│                   └── PanelWithTabs.java
└── usenet.properties

8 directories, 21 files
thufir@dur:~/NetBeansProjects/USENET$ 

在swing包中我放了Swing GUI类,除了“model”类型的Swing类。它们看起来与JPane有点不同,所以我将MessagesDefaultListModel放入控制器包中,因为它本身并不是一个真正的模型,至少在我看来,因为它从“模型”包中获取数据。因此,即使MessagesDefaultListModel 是JList的模型,我也将其视为控制器。

NewsgroupsArticlesNewsgroupsArticles是@Entity类,因此我将它们放入模型包中。这些实体与表newsgroupsarticlesnewsgroups_articles对应。

这是一个理智的包装和命名吗?

1 个答案:

答案 0 :(得分:2)

我通常更喜欢进行第一次功能级隔离,然后在功能域内进行第二次技术隔离。

我会将modeldomain命名为。在控制器包中创建名为model的类感觉很奇怪。这些是摇摆MVC架构中的模型,而不是控制器。

另外,我讨厌在root包中放任何东西。为什么不将属性文件放在一个包中,就像负责解析和保存属性的类一样?

您的实体应具有单数名称,而不是复数名称。这可能是我看到的最重要的重构:Articles的一个实例是一篇文章,因此该类应命名为Article,而不是Articles

最后,我看到实体,我看到与演示相关的类,但我没有看到任何服务和数据访问层。不应在表示层中进行数据访问。这不是它的责任。而且你需要一个划分交易的地方(最好是以声明的方式):那应该是服务层。像Spring这样的依赖注入框架在这里非常有用,并使代码易于测试。