gpt4 book ai didi

java - 何时使用参数以及何时使用实例数据?

转载 作者:行者123 更新时间:2023-12-02 06:33:14 25 4
gpt4 key购买 nike

所以我现在正在编写一个程序,并且对于应该如何编程它感到矛盾。我有两个选择:

public class Translator {

private Translator(){}; //prevents instantation
/****
***Stuff
***/

public static String translate(String oldLanguage, String newLanguage, String text){
//METHOD Code
}

}

public class Translator {

private String oldLanguage;
private String newLanguage;

public Translator(String oldLanguage, String newLanguage){
this.oldLanguage = oldLanguage;
this.newLanguage = newLanguage;
};
/****
***Stuff
***/

public String translate(String text){
//METHOD Code
}

}

我应该使用哪个,为什么?这将是我程序的 API 端。

另外,作为程序员,您认为在处理 API 时哪个更方便?为什么?

最佳答案

我更喜欢使用无状态版本的转换器,但我更喜欢有状态版本的translated。原因是,如果摆脱状态,那么您通常可以摆脱一整类同步错误,同时将一些重要信息移至更接近实际使用的位置。例如,想象一下,如果两个语言变量是 1000 行类的一部分。您想在每次使用它们时查看它们是如何设置的吗?

我喜欢翻译状态的原因是,通用翻译器可以在不知道它将用于什么语言的情况下存在,如果你失去了翻译中使用的语言,你也不知道该怎么办不再使用它(类似于在数学问题中丢失单位)。

对于有状态选项,我更喜欢的一个版本是:

   ...
private String oldLanguage;
private String newLanguage;

用途:

   ...
private final String oldLanguage;
private final String newLanguage;

...而不是类似:

   myTranslator.setLanguages("spanish", "english")
Translated myTranslated = myTranslator.translate(original)

您可以使用:

   Translator spanishEnglish = new Translator("spanish", "english")
Translated myTranslated = spanishEnglish.translate(original)

关于java - 何时使用参数以及何时使用实例数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19892794/

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