java - Java:使用干净的代码删除对象中不需要的字符
问题描述
我有一个从表单中检索到的对象。它可以包含一些不需要的字符,例如“/n”。我想删除它们。我已经找到了一种方法,但我很确定可以以一种更清洁、更短的方式来完成它?
List<Client> clients1 = pc.getClients();
List<Client> clients2 =new ArrayList<Client>();
if (clients1 != null) {
for (Client tc : clients1) {
tc.setClientId(tc.getClientId().replaceAll("\\p{C}", ""));
tc.setClientName(tc.getClientName().replaceAll("\\p{C}", ""));
tc.setCallFirstName(tc.getClientFirstName().replaceAll("\\{C}",""));
clients2.add(tc);
}
}
pc.setClients(client2)
有什么建议么?对我来说,这个问题的重点是学习如何编写更好的代码。
解决方案
“干净的代码”答案将围绕“告诉,不要问”原则。
在您的情况下:您首先从 Client 对象获取(询问!)某些属性,以对其进行更改,以重新设置属性。
为什么不直接去告诉客户之类的tc.normalizeFields()
?!
含义:不要让另一个类清理 Client 类的字段,而是将所有代码放入Client 类本身!并且有一种方法可以在内部工作所有需要“清理”的字段。这样在添加或删除字段时,不需要更改其他类。每次添加/删除/更改字段时,都需要更新您显示的代码。
当您的 Client 类更多是 bean/data 时(仅携带数据,没有任何特定行为,也就是它自己的方法),那么您应该考虑使用一个单独的ClientNormalizerService
类来为您封装这项工作。
推荐阅读
- c - 使用 BackTracking 拆分数组
- powershell - 通过文件系统监视保持最新的目录列表
- angular - 通配符路由:首页显示错误内容
- javascript - 如何根据来自另一个数组的值并牢记使用数组序列来指定对象中的特定键值
- tensorflow - 使用 GPU 将 tensorflow 服务模型部署到 kubernetes 时出现 Pod 不可调度的错误
- c - 如何从C中的字符串数组中删除特定字符串?
- c - 释放动态分配的数组与释放链表一样吗?
- java - 即使在没有 READ_CALL_LOG 的情况下上传更新的 APK,权限声明表仍会显示在 Google Play 控制台中
- ios - 错误:密码重置和电子邮件验证功能需要 appName、publicServerURL 和 emailAdapter
- c++ - 单元测试:检查某些表达式不应该被编译