Coding style 这种编程风格叫什么?

Coding style 这种编程风格叫什么?,coding-style,Coding Style,我正在使用一种通过实例变量传递状态的类型。您将看到这样的方法: public MyType MyMethod() { DoThisMethod(); DoThatMethod(); AndDoThis(); return _bleh; } 这是公认的方法吗 使用这段代码有点令人不安,因为如果您不完全理解代码,实例变量可能会在您不知道的情况下被另一种方法转换。如果状态是通过方法参数传递的,那么您可能对传入的参数的值非常有信心。似乎误解了为什么全局变量是坏的。我不知道这种特殊风格

我正在使用一种通过实例变量传递状态的类型。您将看到这样的方法:

public MyType MyMethod()
{
  DoThisMethod();
  DoThatMethod();
  AndDoThis();

  return _bleh;
}
这是公认的方法吗


使用这段代码有点令人不安,因为如果您不完全理解代码,实例变量可能会在您不知道的情况下被另一种方法转换。如果状态是通过方法参数传递的,那么您可能对传入的参数的值非常有信心。

似乎误解了为什么全局变量是坏的。我不知道这种特殊风格有什么名字,但我知道它几乎和使用全局函数一样糟糕——我想如果函数调用的顺序不正确,事情就会破裂。

看起来像是对全局函数糟糕原因的误解。我不知道这种特殊风格有什么名字,但我知道它几乎和使用globals一样糟糕——我想如果函数被无序调用,事情就会破裂。

广义上讲,函数分解。您描述的模式有时表示代码(a)分解得太彻底,导致您必须跟踪执行路径以查看结果的组合行为,或者(b)执行得太多。通过将这些方法转换为获取参数而不是依赖于内部状态,可以使它们更易于测试,并且可能更具可读性。您可以根据需要在最外层的函数中改变状态。

广义上讲,函数分解。您描述的模式有时表示代码(a)分解得太彻底,导致您必须跟踪执行路径以查看结果的组合行为,或者(b)执行得太多。通过将这些方法转换为获取参数而不是依赖于内部状态,可以使它们更易于测试,并且可能更具可读性。您可以根据需要在最外层的函数中改变状态。

如果这些方法调用的顺序很重要,我将称之为“糟糕的编程”-正如您所说的,任何需要早期调用的方法都应该使用指示这一点的方法参数

我很确定CodeComplete给出了这种方法的一些很好的例子

基本上类似于以下内容,其中每个方法都需要上一次调用的结果

public MyType MyMethod() 
{ 
    thisResult = DoThisMethod(); 
    thatResult = DoThatMethod(thisResult); 
    _bleh = AndDoThis(thatResult ); 

    return _bleh; 
} 

其次,我喜欢尽可能地保持方法的“正交性”(即它们只取决于您提供它们的状态)。有关正交代码的详细总结,请参见。

如果这些方法调用的顺序很重要,我将称之为“糟糕的编程”——正如您所说,任何需要提前调用的方法都应该使用指示这一点的方法参数

我很确定CodeComplete给出了这种方法的一些很好的例子

基本上类似于以下内容,其中每个方法都需要上一次调用的结果

public MyType MyMethod() 
{ 
    thisResult = DoThisMethod(); 
    thatResult = DoThatMethod(thisResult); 
    _bleh = AndDoThis(thatResult ); 

    return _bleh; 
} 

其次,我喜欢尽可能地保持方法的“正交性”(即它们只取决于您提供它们的状态)。有关正交代码的详细概述,请参见。

它与函数式编程相反。我能想到的最贴切的事情是“有状态编程”,但这似乎还不够轻蔑。不过,它可能符合结构化编程的要求


另外,如果您认为HTTP请求类似于方法调用,“会话”实现类似于对象实例,那么这正是许多网站的设计方式。而且,这也不是一个好的设计。

它与函数式编程相反。我能想到的最贴切的事情是“有状态编程”,但这似乎还不够轻蔑。不过,它可能符合结构化编程的要求


另外,如果您认为HTTP请求类似于方法调用,“会话”实现类似于对象实例,那么这正是许多网站的设计方式。而且(IMHO)这也不是一个好的设计。

有一种可能性是“顺序耦合”(http://en.wikipedia.org/wiki/Sequential_coupling)如果调用顺序的方法受到约束,也可以识别。

有可能出现“顺序耦合”(http://en.wikipedia.org/wiki/Sequential_coupling)如果调用order的方法受到约束,也可以识别。

cHao-谢谢。我在寻找我的观点的一些有效性。代码很难使用。对调用顺序的隐式依赖是一个很好的观点。谢谢。我在寻找我的观点的一些有效性。代码很难使用。对调用顺序的隐式依赖是一个很好的观点。因为你提到了c.c.:那本书称它为“顺序内聚”,并说它是可以接受的,但应该重新考虑以展示函数内聚。我想说,如果所有这些都是
私有的
方法,那么这种编程风格是可以接受的。既然你提到了c.c.:那本书称它为“顺序内聚”,并说它是可以接受的,但应该重新考虑以展示函数内聚。我想说,如果所有这些都是
私有
方法,那么这种编程风格是可以接受的。