当前位置:  开发笔记 > 编程语言 > 正文

如何使用大型参数列表格式化方法

如何解决《如何使用大型参数列表格式化方法》经验,为你挑选了2个好方法。

我从来没有见过这样做的好方法,我会有兴趣看到其他人如何做到这一点.目前我的格式如下:

public Booking createVehicleBooking(Long officeId, 
                                    Long start, 
                                    Long end,
                                    String origin, 
                                    String destination, 
                                    String purpose,         
                                    String requirements, 
                                    Integer numberOfPassengers) throws ServiceException {
/*..Code..*/
}

Marcus Downi.. 16

像这样的大量参数通常(但不总是)指示您可以使用对象来表示参数集.如果有以下情况,则尤其如此:

有几种方法具有相似的大参数集,可以使用参数对象的单个方法替换.

该方法被调用 create...

所以你的上面的代码可能会成为(原谅我的C++,我是一个Java开发人员):

class BuildVehicleBooking {
    Long officeId;
    Long start;
    Long end;
    String origin;
    String destination;
    String purpose;             
    String requirements;
    Integer numberOfPassengers;

    Booking createVehicleBooking () throws ServiceException { ... }
}

这是Builder模式.这种模式的优点在于,您可以逐段构建一组复杂的参数,包括参数相互关系的多种变化,甚至在新信息可用时覆盖参数,最后在最后调用create方法之前.

另一个潜在的优势是你可以添加一个verifyParameters方法来检查它们的一致性,然后再到creating最终对象.这适用于创建对象涉及不可逆步骤的情况,例如写入文件或数据库.

请注意,与所有模式一样,这并不适用于所有情况,可能不适用于您的模式.如果您的代码足够简单,那么这种模式可能会过度设计它.如果代码变得混乱,重构到这种模式可能是一种简化它的好方法.



1> Marcus Downi..:

像这样的大量参数通常(但不总是)指示您可以使用对象来表示参数集.如果有以下情况,则尤其如此:

有几种方法具有相似的大参数集,可以使用参数对象的单个方法替换.

该方法被调用 create...

所以你的上面的代码可能会成为(原谅我的C++,我是一个Java开发人员):

class BuildVehicleBooking {
    Long officeId;
    Long start;
    Long end;
    String origin;
    String destination;
    String purpose;             
    String requirements;
    Integer numberOfPassengers;

    Booking createVehicleBooking () throws ServiceException { ... }
}

这是Builder模式.这种模式的优点在于,您可以逐段构建一组复杂的参数,包括参数相互关系的多种变化,甚至在新信息可用时覆盖参数,最后在最后调用create方法之前.

另一个潜在的优势是你可以添加一个verifyParameters方法来检查它们的一致性,然后再到creating最终对象.这适用于创建对象涉及不可逆步骤的情况,例如写入文件或数据库.

请注意,与所有模式一样,这并不适用于所有情况,可能不适用于您的模式.如果您的代码足够简单,那么这种模式可能会过度设计它.如果代码变得混乱,重构到这种模式可能是一种简化它的好方法.



2> John Milliki..:
public Booking createVehicleBooking(
    Long officeId, 
    Long start, 
    Long end,
    String origin, 
    String destination, 
    String purpose,                 
    String requirements, 
    Integer numberOfPassengers)

throws ServiceException {
/*..Code..*/
}

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有