zoukankan      html  css  js  c++  java
  • 重构使代码更简洁优美:实际经验之谈(提供一技巧,让你省掉N多代码)

    这几天没怎么写文,因为在用 CYQ.Data  框架 重构以前的一个博客源码,而在重构的过程中,最关键的就是简化代码了。

    今天,我将说一个很典型的示例,看完本示例后,不要惊讶,不要怀疑,它不是神马,也不是浮云,

    而是很实在的一种方式,能让你节省了N多的代码,让你的代码看起来更简洁优美。

    而这里说的一个很典型的示例,是从我目前重构中的博客中应用而来的:

    一:正常的开发方式

    1:扫一眼当前的项目解决方案

    2:说说Module库

    一般我们很常见的会有一个页面基类,当然各花叫法不同,有人常叫"PageBase",这里叫HttpCustom,如下图

    3:页面基类大体内容

    对于基类,我们通过会封装很多常见的属性和方法,方便各个页面调用起来爽一些,如下图

    4:页面继承基类

    在写完基类后,基本就是页面继承了,然后我们可以很方便的拿到各个属性值,如下图

    5:复杂业务逻辑,我们扔到逻辑项目Logic中去处理

    于是我们封装很多方法,由于无法直接拿到基类的属性,我们只好写着如下的方法,方法中加很多的参数,让页面一个一个的传过来。

    6:接着我们页面调用

    我们感觉调用起来很轻松,页面只管调用,我们一个一个的把参数传过去,页面代码简洁许多,并相当的满足还略带点成就感。

    好了,说到这里,大伙都想想了,平常是不是这么干过来的?你对你代码的简洁度相当的满足了?

    让你折腾,能不能再简洁些? 

    想啊想啊想啊想.....想啊想啊想啊想.....想到神马和浮云?

    等你看完以下内容,上面曾经神马般的的代码都是浮云,都是浮云!!!

    二:重构-使代码更简洁优美

    在重构那天晚上,当我看到这种代码时,我的第一感觉就是,如何在Logic项目中取到HttpCustom基类的参数

    只要能做到,这样Logic逻辑类的方法可以省略N个参数,对于页面来说,也可以少传N个参数
     
    一批的页面调用+一批的逻辑类,都省的话那是多大的省啊,大伙用力的想,使劲的想,骑着神马一起想
     
    只要能省掉这一大批参数,一切将看起来更美好,于是开始想呀想~~~

    1:找抽型想法 

    不知有没有人会一开始有这样的想法:比如让LogicAction也继承自基类HttpCustom,这样就也可以使用其中的属性和方法了。

    你Y的这样像HttpContext等对象到何处索球?等着被NULL值华丽附体抛黄页?

    2:从找抽型想法中挖想法

    虽然1的想法很找抽,不过找抽的想法往往也是方向。

    同样是继承自基类,不过不是继承之前的HttpCustom,而是新的抽象基类。

    而新的基类要如何和HttpCustom关联?或者简单说是怎么从HttpCustom中取值?

    3:重构,从HttpCustom提取接口

    a:选中HttpCustom页面基类,右键-》重构->提取接口

     

    b:接着选择常用属性

     

    确定之后HttpCustom自动继承自IHttpCustom并生成IHttpCustom文件。

    4:新建抽象基类LogicBase并继承接口IHttpCustom

    当然实现接口就是一堆的Get与Set了

     

    5:顺理让LogicAction继承LogicBase

    OK了,可以从基类拿参数数据了,方法参数简洁了许多了,隐掉了N多的参数传参,对比下上面的LogicAction类的图片,看看代码有多简洁~~

     

    6:利用接口互递传参

    在基类HttpCustom中,我们新增加一个方法:SetInit,如下图

     

    7:页面最终调用效果

    比较下和之前的页面调用,完全不用传递传参,敲起代码来多省心省力~

     

    当然你也可以反过来装载,在LogicBase时的构造函数增加IHttpCustom传入。

    最终实现页面如下调用:

     

    结言:

    一个经意的重构,让我们省掉了大批原始参数的传入与传出,回头看看自己曾经的业务逻辑代码,是不是一大批同样的参数在穿索其中~~~

    ~一切只想让代码更简洁,看起来更优美,于是为之想了很多很多~~~

    是不是有一种感觉,想说,却隐隐说不出来~于是留言:我很激动,可是说不出来~很想骑着神马在浮云中~~

    版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
    个人微信公众号
    创业QQ群:617713515
    Donation(扫码支持作者):支付宝:
    Donation(扫码支持作者):微信:
  • 相关阅读:
    python smtplib email
    python merry -- error handling in the real world
    python os.path
    python logging
    Python演讲笔记1
    python DBUtils.PooledDB 中 maxcached 和 maxconnections
    Effective Python2 读书笔记3
    Effective Python2 读书笔记2
    MVC验证session是否过期,在每个action执行之前验证
    int类型的正负数转换
  • 原文地址:https://www.cnblogs.com/cyq1162/p/1855441.html
Copyright © 2011-2022 走看看