• 如何写出漂亮的代码——臃肿的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拆分下吧,相信你会有惊喜的。

  • 相关阅读:
    Http与WWW服务精解
    Http与WWW服务精解
    6-13
    好用的工具说明
    JVM、JRE和JDK三者间的区别和联系
    css进阶之二:flex弹性布局
    MVVM
    如何理解TCP的三次握手协议?
    java里面的设计模式
    linux常用命令
  • 原文地址:https://www.cnblogs.com/huanjianlin/p/2988219.html
Copyright © 2020-2023  润新知