【问题标题】:Naming a New C API [closed]命名新的 C API [关闭]
【发布时间】:2013-08-01 20:41:17
【问题描述】:

这可能不是问这个问题的理想场所,但我真的走入了死胡同,不知道在哪里可以问(建议将不胜感激)。

我正在尝试为我公司的 C 库的 4 个新 API 命名。

这些 API 被添加到现有的集合中,因此它们必须匹配已经制作的模式,这限制了我的选择。

所有 API(现有的和新的)所做的是允许用户获取/设置程序中使用的值字符串或非字符串变量。

我的不同之处在于,它们允许您使用变量名称获取值,与现有方法相反。

这是我目前拥有的:

VariableGetValueString
VariableSetValueString
VariableGetValue
VariableSetValue

唯一的问题是它没有明确说明它使用变量的名称。我想不出一个简洁的名称可以让客户清楚地知道这一点。

最好不要从名称中删除任何内容,因为它与其他 API 的模式相匹配(这些 API 没有在其名称中明确说明它们的检索方法,尽管出于无关的原因应该这样做)。

感谢任何帮助,虽然我知道没有明确的答案,但我显然会接受最适合的答案。

再次抱歉,如果这是一个糟糕的地方问这个问题,我希望有一个更合适的地方的建议。

编辑:

一些现有的 API 名称是:

VariableGetTaskString
VariableGetTask
VariableGetGlobalString
VariableGetGlobal

沿着这些思路。 TaskGlobal 指的是变量的范围。一开始它们的名字不是很好,这让我的工作变得更加困难,但是它们不能被改变,因为客户已经习惯了它们,而且这些改变会破坏旧的程序。我最初没有包括这些,因为它们提供的帮助很少(在我看来)。

每个 API 的参数都会让客户清楚地知道每个 API 的作用,但最好让名称也能做到这一点。感谢您的反馈。

编辑2:

以下是调用 API 的示例:

if(!VariableGetValueString(Handle handle, LPCSTR variableName, TaskID taskID, LPSRT value, DWORD bufferSizeinBytes)
{
    //retrieve failed.
}

if(!VariableGetValue(Handle handle, LPCSTR variableName, TaskID taskID, PDWORD value)
{
    //retrieve failed.
}

希望这足够清楚。随时要求更多,我会整天编辑这个。感谢您一直以来的支持。

【问题讨论】:

  • 使用或大量使用这个词
  • @Quonux 哈哈,这正是我想要避免的......
  • 典型的函数签名是什么样的?你能提供例子吗?您的新函数的签名是否有足够的差异,以便提示来自该差异?你能命名参数来提供提示吗?
  • @JamesMorris 参数的名称肯定会给出很大的提示,值是一个字符串。所以我可以依靠这个,但更多会更好。现在编辑帖子以反映这些请求
  • 这是一个基于意见的问题,因此我将提供一个意见作为答案:可以创建新的命名约定,同时将旧名称标记为受支持但已弃用。话虽如此,您的名字已经足够简单了;您能否举例说明用户如何使用 VariableGetValue ?提出一些合理的建议会有所帮助。

标签: c api naming


【解决方案1】:

这里有一些可能性:

建议 1

UseVariableNameToGetTaskString(...);
UseVariableNameToGetTask(...);
UseVariableNameGetGlobalString(...);
UseVariableNameToGetGlobal(...);

建议 2

VariableGetTaskStringByVarName(...);
VariableGetTaskByVarName(...);
VariableGetGlobalStringByVarName(...);
VariableGetGlobalByVarName(...);

建议 3

VariableGetTaskStringByName(...);
VariableGetTaskByName(...);
VariableGetGlobalStringByName(...);
VariableGetGlobalByName(...);

【讨论】:

  • 我喜欢最后一个,但似乎都太罗嗦了,可能是我太挑剔了
  • 再次——非常主观,Windows 标识符无论如何都很长,用户在键入内容时不会有太多问题,尤其是在清晰是主要目标的情况下。作为一名专业人士,我谦虚的建议是不要在这个问题上花费太多周期,因为这是一种收益递减的练习。如果你喜欢#3,请使用它:)
  • 好建议,感谢您的帮助!
【解决方案2】:

怎么样:

NamedVariableGetValueString
NamedVariableSetValueString
NamedVariableGetValue
NamedVariableSetValue

因此区别NamedVariable 表示由名称指定的变量,而Variable 表示由ID 或旧函数使用的任何变量指定的变量。

【讨论】:

  • 被命名者必须不去开头。我考虑过这一点,以及它的一些变体,我并不喜欢它,但它是我拥有的最好的......
【解决方案3】:

怎么样:

getVariableName()

setVariableName(char* value)

【讨论】:

  • 这里没有真正讨论这些参数,它们已经确定并且正在工作且清晰。我唯一希望更改的是实际名称以阐明目的,而仅重新排列单词并不能做到这一点。不过还是谢谢你,我希望这条评论看起来不会刻薄
猜你喜欢
  • 1970-01-01
  • 2014-07-25
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
相关资源
最近更新 更多