gpt4 book ai didi

java - 在现有 xmlbeans Java 代码库中处理嵌套 null 检查的实用方法?

转载 作者:行者123 更新时间:2023-12-01 10:13:12 26 4
gpt4 key购买 nike

这是一个很常见的问题,但我需要说的是,您建议的问题是重复的,不包含适合我们情况的解决方案。

在工作中,我们在一个已有 8 年历史的代码库上使用 xmlbeans,微妙地说,它没有得到很好的处理。当然,真正的解决方案是我们不应该使用 null 作为信息(并且可能根本不使用 xmlbean),但我正在寻找处理以下问题的最不可怕的方法:

如果我们有一个 Person 实体,它可以选择性地具有 Wallet 子实体,它可以选择性地具有 WalletItems 子实体,它可以选择性地具有可以具有 CardNumber 的 Card 子实体,那么检查 Person 是否存在的最实用方法是什么至少有一个卡号?

我们提出了三种可行的解决方案,以及团队应该坚持哪一种的争论:

isCardHolder(Person person){
if (person != null && person.getWallet != null &&
person.getWallet.getWalletItems != null &&
person.getWallet.getWalletItems.get(0) != null && // Just a dirty example, don't worry here
person.getWallet.getWalletItems.get(0).getCard != null &&
person.getWallet.getWalletItems.get(0).getCard.getCardNumber != null){
return true;
} else {
return false;
}

或者:

isCardHolder(Person person){
Wallet wallet = (Person != null ? person.getWallet : null);
WalletItems[] walletItems = (wallet != null ? wallet.getWalletItems : null);
// etc etc
if (card.getCardNumber != null) {
return true;
} else {
return false;
}
}

或者甚至:

isCardHolder(Person person){
try {
if (person.getWallet.getWalletItems.get(0).getCard.getCardNumber != null){
return true;
}
} finally {
return false;
}
}

我个人的偏好是烧掉它并重新开始,或者至少放弃 xmlbeans,这样我们就可以在标准问题 on this topic 中使用空对象模式或其他任何内容。但我们现在仍坚持使用它,太多的东西取决于它。

最佳答案

Robert C. Martin 在《整洁代码》中关于函数的一些引述。

The first rule of functions is that they should be small.

Functions should do something, or answer something, but not both.

恕我直言,最好的方法可能是这样的:

    package com.example.sampl;

public class MainSampl {



public static void main(String[] args) {
Person p = new Person();
boolean correct = isCorrect(p);
System.out.println(correct);
}

private static boolean isCorrect(Person person){
return isNotNull(person) &&
isNotNull(person.getWallet()) &&
isNotNull(person.getWallet().getWalletItems()) &&
isNotNull(person.getWallet().getWalletItems().getItems().get(0));
//etc
}

private static boolean isNotNull(Object data) {
return data != null;
}

}

所以我认为我的 isNotNull 函数正在回答参数是否正常,然后 isCorrect 函数正在回答所有优选的检查对象是否正常。您的职能:

  1. 检查对象是否为空并回答是否可以。所以两件事都要做
  2. 第二个与第一个的做法相同,我认为它是对我来说非常难以阅读。所以不可读并且同时做这两件事。
  3. 第三个相同。它正在做两件事回答并做某事,但时间太长了。

还有我关于使用逻辑运算符的信息。我认为,如果代码中的逻辑运算符较少,则更有利于将来的重构,也更有利于一般阅读,因为

if you want to go fast, if you want to get done quickly, if you wantyour code to be easy to write, make it easy to read

关于java - 在现有 xmlbeans Java 代码库中处理嵌套 null 检查的实用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36042044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com