如何写出漂亮的代码——臃肿的service
在我们的项目架构中,数据库访问通常是用entity framework(EF),另外有一个很重要的service层,主要用于跟EF交互,也会在这一层封装大部分的业务逻辑。通常情况下,我们会用一个接口将某个service的成员提出来,然后通过IOC获取该service的实现。
由于service层主要为UI层提供服务,为了让调用者直接的看到可用的方法,因此往往某个service会包含某个模块的所有方法和属性,于是这个service会变得非常庞大。举个例子,比如我们有一个IProductService,用于为product模块提供数据服务。这个product模块下面包含多个子模块,比如该product的各种统计数据,销售,订单,跟踪信息等。这样一来,这个IProductService下面就可能有30多个方法,如果将这么多的方法写到一个文件里头,那这个文件很难不超过300行代码。
读到这里,你肯定在想我们可以把这些实现的代码分成多个块。可能首先想到的,也是我们大多数程序员正在写的,那就是#region/#endregion。 其实还有另外一个方案,那就是partial class。
使用partial class来拆分我们的service,其实只是一个太简单不过的想法,但就是这个思想上简单的进步,拯救了我多少的代码。从此,我的service类非常丰富,而service的实现根据模块或者调用者角色或者其他分配到多个partial类,每一个文件不超过300行代码,让维护变得非常简单,让代码变得易读。
其实使用partial类来拆分我们的大类不仅仅是可以用于service层,而是可以用于任何地方。
我最近新加入了一个项目组,这个项目的代码写的有些糟糕,很多类超过1000行代码,很多方法200多行代码,看到这样的代码实在不想去打开编辑,更别谈读懂其业务逻辑并维护。这个项目运行了好几年了,好几批程序员写过代码,可以说这个项目被多少程序员糟蹋得不成样子了。经过简单的分析,其实主要的问题在于service层和controller层的类文件太大,于是我安排人员用partial class进行拆分。重构后的代码别提变得多清纯了,让我们这些IT男喜欢不已。
朋友,你的项目里有大类吗?试着用partial class拆分下吧,相信你会有惊喜的。
转载于:https://www.cnblogs.com/huanjianlin/archive/2013/03/29/2988219.html
如何写出漂亮的代码——臃肿的service相关推荐
- 如何写出漂亮的代码:七个法则
如何写出漂亮的代码:七个法则. 首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术.逻辑等.以下为写出漂亮代码的七种方法: 1, 尽快结束 if语句 例如下面这个JavaScript语句, ...
- web前端 - 写出漂亮JavaScript代码的实用技巧
1.按强类型风格写代码 js是弱类型的,但是写代码的时候不能太随意,写得太随意也体现了编码风格不好.下面分点说明: (1)定义变量的时候要指明类型,告诉JS解释器这个变量是什么数据类型的,而不要让解释 ...
- 6个帮助你写出漂亮JavaScript代码的实用技巧
来源 | www.fly63.com 我觉得写好代码和作文章差不多,无外乎:工整.优雅.拒绝重复.惜字如金.对代码有感情,每一行都应该尽心尽力,并且还要有把所有代码扔垃圾篓之后再重写两遍的冲动,一旦有 ...
- 写出漂亮 Python 代码的 20条准则
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自 | 架构头条 按照<代码整洁之道>的说法,"花在阅读和编码 ...
- 写出漂亮代码的七种方法
首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术.逻辑等.以下为写出漂亮代码的七种方法: 1.尽快结束 if 语句 例如下面这个JavaScript语句,看起来就很恐怖: functi ...
- [转载] Python新手写出漂亮的爬虫代码1——从html获取信息
参考链接: Python中从用户获取多个输入 Python新手写出漂亮的爬虫代码1 初到大数据学习圈子的同学可能对爬虫都有所耳闻,会觉得是一个高大上的东西,仿佛九阳神功和乾坤大挪移一样,和别人说&qu ...
- 写出漂亮代码的45个小技巧
不知道大家有没有经历过维护一个已经离职的人的代码的痛苦,一个方法写老长,还有很多的if else ,根本无法阅读,更不知道代码背后的含义,最重要的是没有人可以问,此时只能心里默默地问候这个留坑的兄弟. ...
- 如何写出无法维护的代码
本文来自:酷壳--CoolShell 地址:https://coolshell.cn/articles/4758.html 如何写出无法维护的代码 2011年06月03日 陈皓 评论 120 条评论 ...
- 怎样写出无法维护的代码
每次写代码的时候,我都尽量写出一个尽可能方便其他人看得懂的代码,没办法,很多时候维护也是我自己,活着小的看不懂,还是我自己出手.但今天我想反其道而行之,怎样才能写出一份无法维护的代码. 原文在这里,原 ...
最新文章
- Activity 数据传递给Fragment
- Emoji表情编解码库XXL-EMOJI
- 高并发第八弹:J.U.C起航(java.util.concurrent)
- new Scanner(1.txt);读取不到文件中的数据
- UA SIE545 优化理论基础0 优化建模3 线性回归的参数估计问题
- lua c/c++ 交互 基础
- idea部署maven+javaweb项目到jboss
- 集合与泛型集合与键值对集合
- 大图社区搜索的调查综述(二)——预备知识
- 字典工具类 DictUtils 源码及分析
- html设置字体为小型大写字母,css – 启用小型大写字母
- 报错:Ncat: bind to :::9999: Address already in use. QUITTING.
- 靖哥哥教你如果拦截去除弹窗广告
- BZOJ_1778_[Usaco2010_Hol]_Dotp_驱逐猪猡_(期望动态规划+高斯消元+矩阵)
- 深入剖析Kubernetes--第五章:声明式API与Kubernetes编程范式
- 简单实用 Firefox最有用的20大插件热力推荐
- C++ 小游戏之推箱子
- Pygame 简单打字游戏
- netty之微信-群聊的发起与通知(十八)
- win10浏览器服务器代理设置
热门文章
- linux df-h命令详细,df命令_Linux df 命令用法详解:显示磁盘的相关信息
- centos8重新配置yum源(Errors during downloading metadata for repository ‘AppStream‘)
- 全网最硬核 Java 新内存模型解析与实验 - 2. 原子访问与字分裂
- kaggle树叶分类
- 建立基于以太坊的私有网络和智能合约 1
- C语言军旗思路,谁告诉我军旗最好的摆法?
- 我爱的人居然关注了我
- SSL证书是什么?SSL运作方式?
- VisualBox解决CentOS中yum安装失败的问题
- ubuntu WPS升级后打不开