Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们是否应该将验证字符串外部化&;toString()方法?_Java_Coding Style - Fatal编程技术网

Java 我们是否应该将验证字符串外部化&;toString()方法?

Java 我们是否应该将验证字符串外部化&;toString()方法?,java,coding-style,Java,Coding Style,我想问一下,我们是否应该将toString()实现中使用的字符串文本外部化。让我举一个例子:- 假设这是我的toString()实现:- @Override public String toString() { return "First Name: " + firstName + "," + "Last Name: " + lastName; } 在这里,我们是否应该将“名字:”和“姓氏:”具体化 另一个场景是验证字符串。如果我正在创建名为的名称对象,则名为的姓氏对象不能为空。然后,我在构

我想问一下,我们是否应该将toString()实现中使用的字符串文本外部化。让我举一个例子:-

假设这是我的toString()实现:-

@Override
public String toString() {
 return "First Name: " + firstName + "," + "Last Name: " + lastName;
}
在这里,我们是否应该将“名字:”和“姓氏:”具体化

另一个场景是验证字符串。如果我正在创建名为的名称对象,则名为的姓氏对象不能为空。然后,我在构造函数中进行以下检查:-

if(firstName == null) {
 throw new NullPointerException("firstName is null");
} 
我们是否应该将“firstName为null”具体化


谢谢

如果你想允许调试消息国际化,你真的只需要这样做,因为
toString
不应该真正显示给用户

如果你想允许调试消息国际化,你真的只需要这样做,因为
toString
不应该真正显示给用户用户

帮助链接:

您可能还想查看以下内容:

因此,当tika为您提供字符串语言时,您应该编写如下Java方法:

enum languageToTransformString //create however many languages you want

public String toString(String lang)
{
    languageToTransformString = lang;
    switch languageToTransformString:
        case german:          
        firstNameText = "deutchName: ";  
        lastNameText = "deutchLastName: ";
        return new String(firstnameText + firstName + lastNameText + lastName);
         break;
        case eng:
       //do stuff

        firstNameText = "engName: ";  
        lastNameText = "engLastName: ";
        return new String(firstNameText + firstName + lastNameText + lastName);
        break;
        default:
        return new String("We don't support your language. Sorry.");

}
有用链接:

您可能还想查看以下内容:

因此,当tika为您提供字符串语言时,您应该编写如下Java方法:

enum languageToTransformString //create however many languages you want

public String toString(String lang)
{
    languageToTransformString = lang;
    switch languageToTransformString:
        case german:          
        firstNameText = "deutchName: ";  
        lastNameText = "deutchLastName: ";
        return new String(firstnameText + firstName + lastNameText + lastName);
         break;
        case eng:
       //do stuff

        firstNameText = "engName: ";  
        lastNameText = "engLastName: ";
        return new String(firstNameText + firstName + lastNameText + lastName);
        break;
        default:
        return new String("We don't support your language. Sorry.");

}


您对外部化的理解是什么?您能否给出一个提示,说明您认为应该这样做的原因?字符串文本已经在对象实例外部。外部化=>重构编译单元,以便编译单元中使用的字符串可以翻译为不同的语言。将对象实例国际化的情况非常罕见toString方法,因为它通常仅用于调试目的。通过外部化,您了解什么?您能否给出一个提示,说明您认为应该这样做的原因?字符串文本已经在对象实例外部。外部化=>重构编译单元,以便可以翻译编译单元中使用的字符串对于不同的语言,将toString方法国际化是相当罕见的,因为它通常仅用于调试目的。变量firstNameText和lastNameText应该用不同的语言格式化。我同意上面的答案,除非你把它返回给用户,在这种情况下你会想使用这样的枚举。变量firstNameText和lastNameText应该用不同的语言格式化。我同意上面的答案,除非您将其返回给用户,否则在这种情况下,您将希望使用这样的枚举。我们在验证某些参数时编写的消息如何,如:-if(firstName==null){throw new NullPointerException(“firstName is null”);}我们是否应该将“firstName is null”外部化是否?@user1522820异常与
toString()
处于同一级别,用户不应看到它们。如果支持人员不会说英语,那么您应该。我见过的大多数产品都不会尝试国际化这些消息,因为支持团队通常讲英语。没有理由不能使用异常传递本地化错误消息。例如:解析文本字段时,您可以捕获NumberFormatException,添加一个本地化的“解析信息时出错”,请在异常消息的“字段”字符串中输入一个数字,然后将其传递给提示。@Charles正确的是,您可以使用异常处理来显示用户消息。在这种情况下,我们通常有一个基本异常,它有一个
getUserFriendlyMessage
方法。这种方法应该国际化。我认为您永远不应该使用异常的
getMessage()
,并向用户显示(除非应用程序处于调试模式)。关于你的例子,我真的不喜欢检查异常。有些人认为可以使用它们,但很多人不这么认为。我们在验证某些参数时编写的消息是什么,比如:-如果(firstName==null){抛出新的NullPointerException(“firstName为null”);}我们是否应该将“firstName为null”外部化?@user1522820异常与
toString()
处于同一级别,用户不应该看到它们。如果支持人员不会说英语,那么您应该。我见过的大多数产品都不会尝试国际化这些消息,因为支持团队通常讲英语。没有理由不能使用异常传递本地化错误消息。例如:解析文本字段时,您可以捕获NumberFormatException,添加一个本地化的“解析信息时出错”,请在异常消息的“字段”字符串中输入一个数字,然后将其传递给提示。@Charles正确的是,您可以使用异常处理来显示用户消息。在这种情况下,我们通常有一个基本异常,它有一个
getUserFriendlyMessage
方法。这种方法应该国际化。我认为您永远不应该使用异常的
getMessage()
,并向用户显示(除非应用程序处于调试模式)。关于你的例子,我真的不喜欢检查异常。有些人认为可以使用它们,但很多人不这么认为。