在我们的项目架构中,数据库访问通常是用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. 如何写出漂亮的代码:七个法则

    如何写出漂亮的代码:七个法则. 首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术.逻辑等.以下为写出漂亮代码的七种方法: 1, 尽快结束 if语句 例如下面这个JavaScript语句, ...

  2. web前端 - 写出漂亮JavaScript代码的实用技巧

    1.按强类型风格写代码 js是弱类型的,但是写代码的时候不能太随意,写得太随意也体现了编码风格不好.下面分点说明: (1)定义变量的时候要指明类型,告诉JS解释器这个变量是什么数据类型的,而不要让解释 ...

  3. 6个帮助你写出漂亮JavaScript代码的实用技巧

    来源 | www.fly63.com 我觉得写好代码和作文章差不多,无外乎:工整.优雅.拒绝重复.惜字如金.对代码有感情,每一行都应该尽心尽力,并且还要有把所有代码扔垃圾篓之后再重写两遍的冲动,一旦有 ...

  4. 写出漂亮 Python 代码的 20条准则

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自 | 架构头条 按照<代码整洁之道>的说法,"花在阅读和编码 ...

  5. 写出漂亮代码的七种方法

    首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术.逻辑等.以下为写出漂亮代码的七种方法: 1.尽快结束 if 语句 例如下面这个JavaScript语句,看起来就很恐怖:  functi ...

  6. [转载] Python新手写出漂亮的爬虫代码1——从html获取信息

    参考链接: Python中从用户获取多个输入 Python新手写出漂亮的爬虫代码1 初到大数据学习圈子的同学可能对爬虫都有所耳闻,会觉得是一个高大上的东西,仿佛九阳神功和乾坤大挪移一样,和别人说&qu ...

  7. 写出漂亮代码的45个小技巧

    不知道大家有没有经历过维护一个已经离职的人的代码的痛苦,一个方法写老长,还有很多的if else ,根本无法阅读,更不知道代码背后的含义,最重要的是没有人可以问,此时只能心里默默地问候这个留坑的兄弟. ...

  8. 如何写出无法维护的代码

    本文来自:酷壳--CoolShell 地址:https://coolshell.cn/articles/4758.html 如何写出无法维护的代码 2011年06月03日  陈皓 评论 120 条评论 ...

  9. 怎样写出无法维护的代码

    每次写代码的时候,我都尽量写出一个尽可能方便其他人看得懂的代码,没办法,很多时候维护也是我自己,活着小的看不懂,还是我自己出手.但今天我想反其道而行之,怎样才能写出一份无法维护的代码. 原文在这里,原 ...

最新文章

  1. Activity 数据传递给Fragment
  2. Emoji表情编解码库XXL-EMOJI
  3. 高并发第八弹:J.U.C起航(java.util.concurrent)
  4. new Scanner(1.txt);读取不到文件中的数据
  5. UA SIE545 优化理论基础0 优化建模3 线性回归的参数估计问题
  6. lua c/c++ 交互 基础
  7. idea部署maven+javaweb项目到jboss
  8. 集合与泛型集合与键值对集合
  9. 大图社区搜索的调查综述(二)——预备知识
  10. 字典工具类 DictUtils 源码及分析
  11. html设置字体为小型大写字母,css – 启用小型大写字母
  12. 报错:Ncat: bind to :::9999: Address already in use. QUITTING.
  13. 靖哥哥教你如果拦截去除弹窗广告
  14. BZOJ_1778_[Usaco2010_Hol]_Dotp_驱逐猪猡_(期望动态规划+高斯消元+矩阵)
  15. 深入剖析Kubernetes--第五章:声明式API与Kubernetes编程范式
  16. 简单实用 Firefox最有用的20大插件热力推荐
  17. C++ 小游戏之推箱子
  18. Pygame 简单打字游戏
  19. netty之微信-群聊的发起与通知(十八)
  20. win10浏览器服务器代理设置

热门文章

  1. linux df-h命令详细,df命令_Linux df 命令用法详解:显示磁盘的相关信息
  2. centos8重新配置yum源(Errors during downloading metadata for repository ‘AppStream‘)
  3. 全网最硬核 Java 新内存模型解析与实验 - 2. 原子访问与字分裂
  4. kaggle树叶分类
  5. 建立基于以太坊的私有网络和智能合约 1
  6. C语言军旗思路,谁告诉我军旗最好的摆法?
  7. 我爱的人居然关注了我
  8. SSL证书是什么?SSL运作方式?
  9. VisualBox解决CentOS中yum安装失败的问题
  10. ubuntu WPS升级后打不开