为定时样本命名​​循环缓冲类?

时间:2010-11-09 07:59:17

标签: c++ language-agnostic naming

假设:

class Buf {
  // has fixed buffer size, forming a cyclic buffer tor t->v pairs
  void add(time_type t, value_type v); // adds value v at time t, overwriting the oldest buffered value
  value_type get(time_type t); // returns the value at time t1 for t1 <= t < t2 (for t1 and t2 datapoints in the buffer)
  ...
};

你会怎么称呼这堂课?

我承认它在某种程度上是主观的,但它不应该导致或需要对答案进行扩展讨论,所以我希望它没关系。 : - )


到目前为止,我正在考虑RecentValueBuffer,因为类将(最近的)时间戳映射到与这些时间戳对应的值。我对“最近”有点不确定,因为这似乎意味着短时间范围/样本数量。

4 个答案:

答案 0 :(得分:3)

您应该问自己,类的用户是否需要知道或关心内部实现是循环缓冲区。如果没有,请将其命名为明确该类的目的是什么:可能类似于TimeMap,因为它似乎是将值映射到离散时间点。然后,您可以随时将内部实现更改为其他内容(例如,Hashtable),而无需更改类的名称。

如果语义对它始终是循环缓冲区很重要,那么考虑将其作为通用容器CircularBuffer等,并使用模板来定义键和值的类型。

答案 1 :(得分:1)

其目的和设计的一些有意义的方面的某种组合:

  • Fixed_Sized
  • FIFO
  • 圆形
  • 缓冲
  • 最近
  • Last_N
  • Time_Window

选择一个或组合你喜欢的多个,直到你对结果感到满意为止。

答案 2 :(得分:0)

CircularBuffer or RingBuffer

我最近写了一个保持运行平均值(称为RunningAverage),并将其作为“环形缓冲区”引用它,所以我显然这是我的偏好。 :)可能是因为它更短。

答案 3 :(得分:0)

您可以在此处使用符合STL的boost::circular_buffer,而不是滚动您自己的该结构版本。