LevelDB TEST_ 方法前缀
LevelDB TEST_ Prefix for Methods
我正在通读 LevelDB 中的代码,并在使用的 TEST_ 前缀中保留 运行。我希望 TEST_ 指示此方法用于测试,以便能够在内部进行操作,否则不会 public。因此,我预计其中的 none 会出现在任何关键路径中。我希望它们在 none 的主要方法中。然而,例如 TEST_CompactRange 是从 CompactRange 调用的,它是主要压缩路径的一部分。这个 TEST_ 前缀是什么意思,我在哪里可以找到这个信息?
作者似乎为 public 方法使用了 TEST_
前缀,这些方法不打算成为 API 的一部分。这些方法 public 只是为了使测试更容易,它们带有前缀 TEST_
以阻止用户调用它们。
为什么这些方法不应该出现在关键路径中?它们就像私有方法,但对测试可见。
其他想法:
- 我不确定这种命名约定是否是最佳做法。 C++ 有 friend declarations 可以完成类似的事情。
- 命名约定类似于 Java Guava 库的
@VisibleForTesting
注释
编辑:明确地说,我只是根据少数带有 TEST_
前缀的方法进行猜测。 Grepping 代码库显示唯一的此类方法如下(所有 public):
// Compact any files in the named level that overlap [*begin,*end]
void TEST_CompactRange(int level, const Slice* begin, const Slice* end);
// Force current memtable contents to be compacted.
Status TEST_CompactMemTable();
// Return an internal iterator over the current state of the database.
// The keys of this iterator are internal keys (see format.h).
// The returned iterator should be deleted when no longer needed.
Iterator* TEST_NewInternalIterator();
// Return the maximum overlapping data (in bytes) at next level for any
// file at a level >= 1.
int64_t TEST_MaxNextLevelOverlappingBytes();
我正在通读 LevelDB 中的代码,并在使用的 TEST_ 前缀中保留 运行。我希望 TEST_ 指示此方法用于测试,以便能够在内部进行操作,否则不会 public。因此,我预计其中的 none 会出现在任何关键路径中。我希望它们在 none 的主要方法中。然而,例如 TEST_CompactRange 是从 CompactRange 调用的,它是主要压缩路径的一部分。这个 TEST_ 前缀是什么意思,我在哪里可以找到这个信息?
作者似乎为 public 方法使用了 TEST_
前缀,这些方法不打算成为 API 的一部分。这些方法 public 只是为了使测试更容易,它们带有前缀 TEST_
以阻止用户调用它们。
为什么这些方法不应该出现在关键路径中?它们就像私有方法,但对测试可见。
其他想法:
- 我不确定这种命名约定是否是最佳做法。 C++ 有 friend declarations 可以完成类似的事情。
- 命名约定类似于 Java Guava 库的
@VisibleForTesting
注释
编辑:明确地说,我只是根据少数带有 TEST_
前缀的方法进行猜测。 Grepping 代码库显示唯一的此类方法如下(所有 public):
// Compact any files in the named level that overlap [*begin,*end]
void TEST_CompactRange(int level, const Slice* begin, const Slice* end);
// Force current memtable contents to be compacted.
Status TEST_CompactMemTable();
// Return an internal iterator over the current state of the database.
// The keys of this iterator are internal keys (see format.h).
// The returned iterator should be deleted when no longer needed.
Iterator* TEST_NewInternalIterator();
// Return the maximum overlapping data (in bytes) at next level for any
// file at a level >= 1.
int64_t TEST_MaxNextLevelOverlappingBytes();