zoukankan      html  css  js  c++  java
  • 31天重构学习笔记23. 引入参数对象

    概念:本文中的“引入参数对象”是指当一个方法的参数过多或者过为复杂时,可以考虑把这些参数封装成一个单独的类。

    正文:如果一个方法所需要的参数大于5个,理解该方法的签名就变得比较困难,因为这样感觉参数很长、样式不好并且没有分类,所以我们有必要把参数进行封装。

    namespace LosTechies.DaysOfRefactoring.SampleCode.ParameterObject.Before
    {
    public class Registration
    {
    public void Create(decimal amount, Student student, IEnumerable<Course> courses, decimal credits)
    {
    // do work
    }
    }
    }

    通常这种情形下创建一个用户传递参数的类是很有帮助的,这会使得代码更容易明白也更灵活,因为当你需要增加参数时,只需要给参数类添加一个属性即可。请注意只有当你发现方法的参数比较多时才应该应用该重构,如果方法的参数比较少,就没有必要应用此重构,因为该重构会增加系统中类的数量,同时也会加大维护负担。所以要看参数情况而定。
    重构后的代码如下:

    using System.Collections.Generic;

    namespace LosTechies.DaysOfRefactoring.SampleCode.ParameterObject.After
    {
    public class RegistrationContext
    {
    public decimal Amount { get; set; }
    public Student Student { get; set; }
    public IEnumerable<Course> Courses { get; set; }
    public decimal Credits { get; set; }
    }

    public class Registration
    {
    public void Create(RegistrationContext registrationContext)
    {
    // do work
    }
    }
    }

    总结:这种重构很重要,尤其是当一个方法的参数比较多的时候,不管是大中型项目还是小型项目,都会遇到这种场景,所以建议大家多使用这个重构。这种封装的思想在SOA 里面也经常运用到,封装输入Message,封装输出Message,消息来和消息去以及消息间的交互就构成了整个应用体系。

  • 相关阅读:
    分而治之应该把握哪些原则呢
    什么事SOA
    SOA架构设计的案例分析课后 学习
    关于分层架构的知识学习
    从小编程,到架构师,我们应该具备什么
    基于MVC架构实例分析以校园知网校内论坛功能为例
    服务架构设计及其应用
    《一线架构师实践指南》阅读笔记03
    《一线架构师实践指南》阅读笔记02
    Pre-Architecture 阶段阅读笔记
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892613.html
Copyright © 2011-2022 走看看