类分层命名规则

2015年11月19日 第一版

链接:http://qiita.com/KeithYokoma/items/ee21fec6a3ebb5d1e9a8 
原作者:KeithYokoma 
译者:dssunxun

类名一般上多使用名词,方法名一般多用动词和助动词,这是因为类名要抽象出拥有某种职责的某物, 
所以多使用名词。

另一方面,声明接口时,我们一般使用形容词来作为接口的名称(例如:Iterable、Closeable等)。 
通过使用形容词,可以较好的注明类所拥有的特性

业务逻辑类

即一般所谓的Model层,该层有着各种不同功能的类。 
一般性的,给该层的类起名都是Model或是Manager这样的名字,而随着业务的增多,该层也会变的越来越肥大。 
实际上在Model层中也有各种各样的层,通过给它们起好名字明确它们的功能,然后组合起来建立起业务逻辑

操作DataSource的层

大致上就是拥有某些I/O的基础功能(增删查改、request等)的类,比如说,拥有操作DB逻辑的类、拥有通过 
HTTP通信获取Response的类

名称补充说明
Client类似HttpClient这样的,在有Server-Client的含义的情况下使用TwitterApiClient, QiitaApiClient
Gateway作为访问API时的网关时使用TwitterTimelineGateway, QiitaAccountGateway
Store,Storage、Registry访问数据库,在磁盘进行数据持久化时使用FavoriteSettingStore, DataStorage, ConfigRegistry
Cache缓存时使用TimelineCache
Log日志。或是存储操作历史记录的路径UsageLog
History存储历史记录的路径UsageHistory
Configuration, Preference, Setting存储设定数据的路径TimelineConfiguration

有必要的话,可将I/O的基本功能各自分开实现(可提供一个统一管理的接口或是一开始就创建个统一管理的类来操作)

名称补充说明
Logger执行日志操作UsageLogger
Cleaner, Sweeper清除数据时使用CacheCleaner, CacheSweeper
加工数据的层
名称补充说明
Filter筛选数据时使用TimelineFilter
Extractor从某个数据中抽出其他数据MessageExtractor
Formatter格式化某个数据输出为其他数据MessageFormatter
Collector收集数据AnalyticsDataCollector
拉取DataSource的层

取得数据、存储为Cache、然后再将其返回给Controller和Presenter层的层。该层的Model从使用者看来,无需在意获得 
的数据是否是从Cache而来。

名称补充说明
Provider将上面提到过的DB、http通信、Cache等封装化后的上位层。或是Android中的ContentProviderTwitterTimelineProvider
Manager管理数据AccountManager
Loader读取数据TimelineLoader
Logger写日志、或是提供访问Log的抽象层RecentUsageLogger
Configurator存储设定的默认值、将某种数据自动的保存到设定FirstSettingConfigurator
Migrator处理当版本升级等数据结构发生变化时的逻辑UserDataMigrator
进行异步处理的层
名称补充说明
Job, Task, Runnable, Executable统一处理异步操作UploadJob, MigrationTask
Runner, Executor, Worker执行被给予的Job和TaskUploadJobRunner, MigrationTaskExecutor
Aware拥有同步操作相关的某些Context,表示在其管理下的接口(Spring Framework有使用)ApplicationContextAware
集成访问FrameWork的层

基于Facade模式、提供通向其他的Framework和SubSystem接口的层

名称补充说明
Facade实现Facade模式BoundServiceFacade
Service将兼容性的实现给封装化,并实现对各种功能的访问的层ApplicationControllerService
Resolver根据用户环境进行Routing处理的层ContentResolver
操作View的类

即一般上的Controller层,根据所用的Framework有所不同,大致上一般会命名为如下。 
严格来讲,与Presenter有些许的不同,在此将其包含进去

名称补充说明
ActivityAndroid中使用
FragmentAndroid中使用
ViewControlleriOS中使用
ControllerMVC中的Controller
Screen.PresenterMVP中的Presenter。Mortar中使用
Window 
包含UI上的动作的类

抽象特定的操作,并将该操作想执行的处理综合起来的类。也可作为接口名称使用

名称补充说明
Action表示操作SubmitAction, CancelAction
Dispatcher, Handler接受操作执行处理SubmitActionDispatcher, UserActionHandler
Listener, Watcher监视操作。Observer模式的实现名ClickListener, TextEditWatcher
总结

因语言和框架带来的作法和规则的不同,并没有什么一个最好的方法。设计和重构时,在想好了 
如何分层后,如何命名也非常重要。在上面我列举了很多,但是直接用有名的设计模式和框架中用到的名字 
有可能也比较好。所以尽可能的清楚地起个能把一个类的作用给表现出来的名字吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值