首页
程序员
技术人力
开发
技术人力
Technical manpower
开发
Industry Solutions
更多
More
兼职招聘
程序员招聘、找兼职!
云端工作
按月雇佣程序员
项目开发
一站式软件开发
开发屋
全行业立体化解决方案平台
技术圈
最新行业动态
APP下载
登录
注册
首页
文章详情
Service 类到底有啥意义?
Java技术栈
|
22
2021-01-14 16:16
0
0
0
Java技术栈
www.javastack.cn
关注阅读更多优质文章
Service 类到底是什么含义?我相信如果碰到一个叫 SomethingService 的类,没法马上明白它到底起什么作用。
说实话,我们都很困惑。
经过多年的专业开发,在大量的代码中游走,有一点是显而易见的,开发人员不太擅长给事物命名。
作为一个菜鸟开发者,我知道当看到 SomeService 或 WhateverManager 类,或者是 WhatevsManagerService 时,你都会不知所措或疑惑不解。
Class 命名就像工作头衔
BD?实际是一个销售人员。Social Media 专家?可能是 3 周学会如何在 Instagram 上发布猫咪照片。软件工程师?实际上是堆砌代码的码农。
工作头衔和工作角色有时候不挂钩,我们更喜欢把头衔弄得比角色更花哨。
Class 命名也是如此。另外,关注公众号Java技术栈,在后台回复:手册,可以获取一份最新的阿里 Java 开发手册,非常齐全。
服务(service)类
任何以 Service 为后缀的代码基本上都是一个
逻辑垃圾箱
。任何添加到程序中的新功能,最后总是以某种服务类的方式来实现。
一个服务类需要大量的构造函数参数,使得测试起来非常麻烦。要测试一个新方法 GetUserCount()?可能需要 mock 7 个完全不相关的类来实例化这个服务类。
如果 GetUserCount() 只依赖于服务类中的一个构造函数参数,那么最好把它移到自己的类中。这样一来,你就有一个非常简单的类,只有一个构造函数参数。
当然,单独的 GetUserCount 类看起来不是那么酷,但至少你知道它到底是做什么的。
测试变得轻而易举。
Manager 类
你很可能见过类似 UserManager 这样的类,它管理用户。
像服务类一样,它们也是逻辑垃圾箱。但是有一点区别。如果说服务类是一个普通的垃圾箱,那么 Manager 类就像一个纸板垃圾箱,它更特殊一点。
你会面临和服务类一样的处理单元测试的问题。在做最微小的操作之前,你需要 mock 一大堆东西。
Util 类和 Helper 类
"我们不知道把这些代码塞在哪里好,所以就弄了一个 Util 类"。
这些都是烦人的东西。关于这一点,没有什么好说的了。
怎么破?
很简单。给出与职责相匹配的合适名称。把一个类命名为GetUser,并且只有一个方法,这并不丢人。实现也简单,每个人都知道它是做什么的。容易进行单元测试。
停止代码膨胀,简化这些类。比如,构建只有一个方法的类。另外,关注公众号Java技术栈,在后台回复:面试,可以获取我整理的 Java 系列面试题和答案,非常齐全。
作者:Nicklas Millard
英文原文:https://medium.com/datadriveninvestor/the-true-meaning-of-service-and-manager-class-names-d09a08731fd9
翻译:高可用架构
译文:https://m.sohu.com/a/440722848_268033/
关注Java技术栈看更多干货
戳原文,获取精选面试题!
0
赞
0
收藏
×
添加附言
附加内容, 使用此功能的话, 会给所有参加过讨论的人发送提醒.
回复数量:
0
暂无评论~~
请注意单词拼写,以及中英文排版,
参考此页
支持 Markdown 格式,
**粗体**
、~~删除线~~、
`单行代码`
, 更多语法请见这里
Markdown 语法
支持表情,见
Emoji cheat sheet
@name 会链接到用户页面,并会通知他
上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jp(e)g, png, gif
Ctrl+Enter
下载APP
Java技术栈
613
文章
0
获赞
关注TA
该作者其他文章
Docker 常用命令,还有谁不会?
第一次接私活,就被骗了···
到底什么是阻塞队列?有啥用?
MySQL 默认最大连接数是多少?
6 年前的 Dubbo,2 年前的 Spring Cloud,都输给了这个架构!
程序员必须清楚的专业名词,你知道几个?
Java 对象不使用时,为什么要赋值为 null?
Linux 服务器必备的安全设置,建议收藏!
相关文章推荐
还在用 Guava Cache?它才是 Java 本地缓存之王!
这个App就有点缺德了!开发者还是要有基本道德观!
让程序员崩溃的一句话。。。
推荐一款 ES 集群可视化工具:Cerebro,简单、实用!
为什么阿里、字节等公司天天招人,但又很难进,真的缺人吗?
当音乐学博士搞起编程,用一本书改变了Java世界!
Java基础核心知识大总结.pdf
你一定需要知道的高阶JAVA枚举特性!