Oop 以一致和精确的方式命名类方法
我在matlab中编写了一个简单的标记管理器类,我正在努力(或者可能在思考;-)恰当地命名我的类方法。该类称为Oop 以一致和精确的方式命名类方法,oop,matlab,Oop,Matlab,我在matlab中编写了一个简单的标记管理器类,我正在努力(或者可能在思考;-)恰当地命名我的类方法。该类称为tag\u manager。以下是我关于清晰API和实现的问题: 要添加标记,我应该调用方法add还是add\u tag?移除也一样 要重命名标记,我应该调用方法rename\u tag还是rename 我总是想添加\u标记后缀,这样就可以清楚地了解方法的作用 nbr_标签是一个计数器,用于跟踪当前存储的标签数量。有时我需要访问这个数字,因此我不想查看标签列表并计算条目的数量,而是
tag\u manager
。以下是我关于清晰API和实现的问题:
- 要添加标记,我应该调用方法
还是add
?移除也一样add\u tag
- 要重命名标记,我应该调用方法
还是rename\u tag
rename
\u标记
后缀,这样就可以清楚地了解方法的作用
是一个计数器,用于跟踪当前存储的标签数量。有时我需要访问这个数字,因此我不想查看标签列表并计算条目的数量,而是想通过类方法返回这个值。nbr_标签
李>return\u nbr\u tags
- 通常,我需要知道标记的索引,它反过来用于查找其他矩阵中的某些元素。为了防止代码变得太长,我简单地将此方法称为
,它应该是inx()
的缩写。我知道今天我确实知道return\u tag\u index
代表什么,但两周后我可能记不起来了。那么,命名这些方法的最佳方式是什么inx()
properties (SetAccess = private, GetAccess = public)
tag_names = {}; % store the tags
tag_rel_indx = []; % the relative tag index
tag_abs_indx = []; % the absolute tag index
end
properties (SetAccess = private, GetAccess = public, Hidden = true)
nbr_tags = 0;
abs_tag_counter = 0;
end
methods
% add single tag to list. should be 'add' or 'add_tag'?
function obj = add_tag(obj, name)
end
% remove single tag from list
function obj = remove_tag(obj, name)
end
% short-cut for 'return_tag_index'
function indx = inx(obj, name)
indx = return_tag_index(obj, name);
end
% rename tag
function obj = rename_tag(obj, old_name, new_name)
end
% re-order tags by name
function obj = reorder_by_name(obj)
end
% return number of tags stored in tagmanager
function nbr_tags = return_nbr_tags(obj)
nbr_tags = obj.nbr_tags;
end
end
非常感谢 在我看来,而且之前也不得不使用其他人的代码,当方法/函数名称清晰且具有描述性时,我发现它非常有用。我更希望有人对他们的函数名长篇大论,但同时你也不希望对它过于长篇大论 例如,返回标记数函数。我个人会将其命名为
GetNumberOfTags
。对于用于设置特定值的函数,我使用setSpecificularValue
不过,我确实避开了下划线。这可能只是我从工作中的编码实践中养成的一个习惯
要记住的最重要的事情是在整个课堂上保持一致。如果函数不完全清楚,请不要忘记提供有用的注释=P当您必须返回并重新编写某人的代码时,这是非常可怕的,而且有大量关于变量用途和函数真正用途的信息;) 在使用高度显式的函数名(这对理解代码非常有帮助)和创建易于开发和使用的代码之间,始终存在一种权衡。如果您需要为方法创建快捷方式名称,这表明您已经向显式函数名称迈进了一大步 在您的例子中,因为您正在创建一个标记管理器,所以我将从方法中删除
tag
,并开始将您的标记管理器类实例化为tags=tagManager
,这样添加标记的方法可以编写为tags.add(…)
或add(tags…)
。但是,当您添加标记以外的内容时,添加更明确的方法名称会有所帮助,例如tags.addGroup
。然后,您的索引方法变成了索引(标签、名称)
,在我看来,它既短又清晰
PS:为什么要使用
returnNumberOfTags
方法?您只需读取属性,并在必要时添加set/get方法。非常感谢!我当然可以直接访问nbr\u标签
,但我不希望用户修改它的值,因此它是一个私有的隐藏属性。这就是为什么我觉得需要为它提供一个可见的API,即使用Get
或Return
方法。@memyself:setAccess设置为private时,不必隐藏属性。但这确实是一个风格问题。理查德·约翰逊(Richard Johnson)有一本优秀的Matlab风格指南