首页 > 解决方案 > 修剪方法输入字符串参数是一种不好的做法吗?

问题描述

我正在争论自己修剪方法的输入字符串参数是否是一种不好的做法?我个人不喜欢修改输入参数,但想知道修剪是否可以?

我编写了如下代码

private Order retrieveOrderDetails(String productId, String cardNumber, Date purchaseDate) {
    validateInputs(trim(productId), trim(cardNumber), purchaseDate);

    List<Order> orders = pullOrdersByCardNumber(trim(cardNumber));

    return retrieveOrderDetails(orders, trim(productId), purchaseDate);     
}

除了在多个地方使用 trim() 之外,是否可以执行以下操作?

private Order retrieveOrderDetails(String productId, String cardNumber, Date purchaseDate) {
    productId = trim(productId);
    cardNumber = trim(cardNumber);

    validateInputs(productId, cardNumber, purchaseDate);

    List<Order> orders = pullOrdersByCardNumber(cardNumber);

    return retrieveOrderDetails(orders, productId, purchaseDate);       
}

标签: java

解决方案


字符串在到达时应该已经被修剪retrieveOrderDetails()

需要修剪字符串意味着它们来自用户输入:表单字段、配置文件等。从用户输入中修剪空格是用户界面代码或文件读取代码的工作。您不应该混合抽象层,在同一个函数中处理 UI 和业务逻辑。

不要在这里修剪字符串,也不要检查它们是否被修剪。完全不用担心修剪。这是调用者的问题,而不是这个函数的问题。

如果您想真正纯粹,您甚至可以用特定于域的类替换字符串。您已经拥有Date purchaseDate而不是String purchaseDate. 对其他两个参数执行相同的操作。然后修剪所属的地方变得清晰:不在这里。

Order retrieveOrderDetails(ProductId productId, CardNumber cardNumber, Date purchaseDate) {
    ...
}

推荐阅读