Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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 以使用全局变量为代价,将二元函数转换为一元函数。值得吗?_Java_Function_Class_Coding Style_Clean Architecture - Fatal编程技术网

Java 以使用全局变量为代价,将二元函数转换为一元函数。值得吗?

Java 以使用全局变量为代价,将二元函数转换为一元函数。值得吗?,java,function,class,coding-style,clean-architecture,Java,Function,Class,Coding Style,Clean Architecture,在干净的代码手册中,他们说: 有两个参数的函数比一元函数更难理解。例如,writeField(名称)比writeField(输出流,名称)更容易理解。 虽然两者的意思都很清楚,但第一个从眼睛旁边滑过,很容易地把它的眼睛沉淀下来 意思第二个需要短暂的停顿,直到我们学会忽略第一个参数。 当然,这最终会导致问题,因为我们永远不应该忽视任何问题 代码的一部分。我们忽略的部分是bug隐藏的地方 及 二人组不是邪恶的,你一定要写它们。然而,你应该 意识到它们是有代价的,应该利用可能存在的机制 可用于将它们转

在干净的代码手册中,他们说:

有两个参数的函数比一元函数更难理解。例如,writeField(名称)比writeField(输出流,名称)更容易理解。 虽然两者的意思都很清楚,但第一个从眼睛旁边滑过,很容易地把它的眼睛沉淀下来 意思第二个需要短暂的停顿,直到我们学会忽略第一个参数。 当然,这最终会导致问题,因为我们永远不应该忽视任何问题 代码的一部分。我们忽略的部分是bug隐藏的地方

二人组不是邪恶的,你一定要写它们。然而,你应该 意识到它们是有代价的,应该利用可能存在的机制 可用于将它们转换为单子。例如,您可以使 writeField方法是outputStream的成员,因此可以说是outputStream。 writeField(名称)或者您可以将outputStream作为当前 上课,这样你就不必通过考试了。或者您也可以提取一个新类,比如FieldWriter,它在构造函数中接受outputStream并具有一个write方法

在这句话中:

您可以使outputStream成为当前 上课,这样你就不必通过考试了

据我所知,当前类的成员变量是一个全局变量,这意味着他们以使用全局变量为代价将二元函数转换为一元函数,但使用全局变量是一种不好的做法。我的问题是,在二元函数上使用全局变量是否值得?为什么


编辑:成员变量是实例变量,而不是全局变量

“据我所知,当前类的成员变量是全局变量”。你从哪里得到这个主意的?成员与全局变量完全相反,它们不像全局变量那样修改整个程序的状态。@DogaOruc哦,我只是一个新手,我知道成员变量是实例变量,因为全局变量在Java技术上是不允许的。全局变量和实例变量不一样吗?我的意思是它们都是在方法之外声明的,对吗?是的,你是对的,它们都是在函数之外声明的,但它们不是同一件事。您所指的“在方法内部声明的”称为“局部变量”。Java不允许全局变量,因为在Java中,所有东西都必须属于一个类。这也是为什么我们不能有全局函数的原因。@DogaOruc谢谢你告诉我这个。我认为他们在干净的代码书中提到的“全局变量”是在函数外部声明的,但属于一个类,所以可以在该类的任何地方访问它们,对吗?它不是一个实例变量吗?不,它们不是。实例变量,也称为成员变量或字段,与全局变量非常不同。不用担心使用它们。您应该始终努力编写没有全局状态的代码,这意味着没有全局变量。在Java中,您可以模拟全局变量,但它们并不受欢迎,也不是真正有用的。你最好不要学着怎么做:)