Coding style 决定是否运行函数,哪种方式更好?

Coding style 决定是否运行函数,哪种方式更好?,coding-style,Coding Style,我从服务器加载了一些数据,但不能保证当UI开始向用户显示这些数据时,我就能得到所有数据。每一帧都有一个勾号函数。当接收到新数据时,会设置一个标志,以便我知道是时候将其加载到我的数据结构中了。以下哪种方法是决定何时实际运行函数的更明智的方法 AddNewStuffToList() { // Clear the list and reload it with new data } Foo_Tick() { if (updated) AddNewStuffToList

我从服务器加载了一些数据,但不能保证当UI开始向用户显示这些数据时,我就能得到所有数据。每一帧都有一个勾号函数。当接收到新数据时,会设置一个标志,以便我知道是时候将其加载到我的数据结构中了。以下哪种方法是决定何时实际运行函数的更明智的方法

AddNewStuffToList()
{
    // Clear the list and reload it with new data
}

Foo_Tick()
{
    if (updated)
        AddNewStuffToList();

    // Rest of tick function
}
与:

AddNewStuffToList()
{
    if (updated)
    { 
        // Clear the list and reload it with new data
    }
}

Foo_Tick()
{
    AddNewStuffToList();

    // Rest of tick function
}

为了这个例子,我省略了很多不相关的细节。

在函数更新之前,您可能不应该运行它。这样,该函数可以用于更多目的

假设你有两个电话,他们都会来,并将数据放入列表中。在第一次设置中,检查函数内部的变量,您只能检查是否有一个调用进入。相反,如果您在调用数据的函数中检查它,您可以拥有任意多的输入源,而无需更改起始函数


函数应该对它们正在做的事情非常精确,并且应该避免需要由另一个函数创建的信息,除非它被传入。

IMHO第一个函数。此版本将以下内容分开:

  • 何时更新数据(Foo_勾选)

  • 如何加载数据(AddNewStuffToList())

第二个选项只是将所有内容混合在一起。

在第一个版本中,每次都会检查简单变量检查“updated”,只有当为true时才会调用AddNewstufftList

对于第二个版本,您将调用AddNewstufftList,然后每次都检查“updated”

在这个特殊的例子中,考虑到函数调用通常比变量检查昂贵,我个人更喜欢第一个版本。

但是,在某些情况下,在函数内部进行检查会更好。 e、 g

这是笨拙的,因为每次你打电话给doSomething时,你都应该检查一下你的 没有传递错误的指针。如果忘记了呢?我们可能会被侵犯访问权限。 在这种情况下,以下方法更好,因为您只在一个地方写支票,并且 没有额外的开销,因为我们总是希望确保没有传递错误的指针

doSomething(Pointer *p){
  if (p){
    p->doSomethingElse(); 
  }
}
所以一般来说,这要视情况而定。这里没有对错的答案,只有正反两方面

doSomething(Pointer *p){
  if (p){
    p->doSomethingElse(); 
  }
}