java - 修剪方法输入字符串参数是一种不好的做法吗?
问题描述
我正在争论自己修剪方法的输入字符串参数是否是一种不好的做法?我个人不喜欢修改输入参数,但想知道修剪是否可以?
我编写了如下代码
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);
}
解决方案
字符串在到达时应该已经被修剪retrieveOrderDetails()
。
需要修剪字符串意味着它们来自用户输入:表单字段、配置文件等。从用户输入中修剪空格是用户界面代码或文件读取代码的工作。您不应该混合抽象层,在同一个函数中处理 UI 和业务逻辑。
不要在这里修剪字符串,也不要检查它们是否被修剪。完全不用担心修剪。这是调用者的问题,而不是这个函数的问题。
如果您想真正纯粹,您甚至可以用特定于域的类替换字符串。您已经拥有Date purchaseDate
而不是String purchaseDate
. 对其他两个参数执行相同的操作。然后修剪所属的地方变得清晰:不在这里。
Order retrieveOrderDetails(ProductId productId, CardNumber cardNumber, Date purchaseDate) {
...
}
推荐阅读
- git - 如何在 GITLAB 中使用 CI/CD 管道创建自动发布
- vue.js - Vuetify & Webpack - 编译自定义变量时出错(sass-loader 失败)
- javascript - multipe require 函数的问题(RequireJS 和 ArcGIS JS API)
- node.js - nodejs - 拦截来自电子应用程序的网络请求
- ios - 设置 searchcontroller 时显示/隐藏导航栏
- javascript - 在js中上传和下载按钮一个待办事项列表(如文本文件)
- javascript - 获取 URL 参数并传递给 Wordpress 中的表单选择
- flutter - 在颤动中自定义卡片底栏
- javascript - 如何从Vue中的json数组绑定url图像src
- algorithm - 您如何在多动态调度系统中找到该方法,它是如何在后台实现的?