所以这里有两个功能几乎完全相同。
如果您必须在项目中同时包含两者,您会如何命名每一个?
void strToLower1(char* str)
{
int len = strlen(str);
int i;
for (i=0; i<len; i++)
str[i] = tolower(str[i]);
}
char* strToLower2(const char* inputStr)
{
char* str = strdup(inputStr);
strToLower1(str);
return str; // must be freed
}
编辑:我为代码正确性(sheesh)修改了上面的例子
答案 0 :(得分:2)
我非常喜欢Taligent Coding Standards,尤其是naming conventions。关于using special names for copy, create, and adopt routines的约定可能适用于此:
http://pcroot.cern.ch/TaligentDocs/TaligentOnline/DocumentRoot/1.0/Docs/books/WM/WM_67.html#0
使用特殊名称进行复制,创建, 并采用例行程序
分配,管理或的常规 承担存储责任 特殊名称并遵守 遵循指南:
例行公事 创建一个调用者必须的新对象 删除以Create ...
开头复制现有对象的例程, 调用者必须删除副本的地方, 从复制开始...一个成员函数 复制对象应该是 复制()。
放弃对象的例程 将删除责任传递给 来电者从孤儿开始......
接受一个对象的例程 来电已分配并接受 最终删除的责任 它以Adopt ...开头(这种风格 编程容易出错;躲开它 如果可能的话。)
采用无法遵循的惯例 先前的规则(例如 构造函数)启动名称 采纳的论点......
[目录] [上一页] [下一页]点击 邮件问题的图标或 有关此材料的更正 Taligent人员。版权所有©1995 Taligent公司,公司。保留所有权利。
在此之后,可以将第一种方法称为createLowerCaseStr()
或copyAsLowercaseStr()
。前导关键字create
和copy
表示必须由调用者管理的新内存。
就个人而言,我会调用第二个函数transformIntoLowercase()
或mutateIntoLowercase()
,但我倾向于使用冗长的名字。虽然Taligent没有指定,但我会看到主要关键字transform
和mutate
作为现场转换的提示。
答案 1 :(得分:1)
如果strToLowerInPlace
返回'str',那么您只需编写new_s = strToLowerInPlace(strdup(s))
即可。因此,我放弃“InPlace”并假设所有内容都已到位,并且调用者可以根据需要复制。
(如果你 将有两个功能,至少让复制一个人调用就地一个!)
答案 2 :(得分:1)
1st:char *copylo(char *dst, const char *src);
(没有分配!)
第二名:char *lowerize(char *data);
答案 3 :(得分:0)
tolower()
的函数,无需进行疯狂测试和硬编码转换