2

只是想知道以下命名和包装约定:

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 类,“模型”类型的 Swing 类除外。它们似乎与 JPane 的有点不同,所以我将其MessagesDefaultListModel放入控制器包中,因为它本身并不是真正的模型,至少在我看来,因为它从“模型”包中获取数据。所以,尽管MessagesDefaultListModel 它是JList 的模型,但我更多地将其视为控制器。

NewsgroupsArticles并且NewsgroupsArticles是@Entity类,所以我把它们放到模型包中。这些实体对应于表newsgroups和。articlesnewsgroups_articles

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

4

1 回答 1

2

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

我会改为命名model包。domain在控制器包中有名为 model 的类感觉很奇怪。这些是 Swing MVC 架构中的模型,而不是控制器。

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

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

最后,我看到了实体,看到了与表示相关的类,但没有看到任何服务和数据访问层。数据访问不应在表示层中完成。那不是它的责任。而且您需要一个划分事务的地方(最好以声明的方式):应该是服务层。像 Spring 这样的依赖注入框架在这方面有很大帮助,并使代码易于测试。

于 2012-07-29T09:30:43.077 回答