如何避免类和方法的名称重复
How to avoid duplicate names of class and method?
目前我对类名和方法名使用相同的约定。它们有一个不带前缀的前导大写字母。而且我不使用"Get"前缀来获取属性。但是,我在以下代码中遇到了名称冲突问题
class Material
{};
class Background
{
public:
Material* Material() const {return m_material;} // Name conflict
void SetMaterial(Material* material) {m_material = material;}
private:
Material* m_material;
};
解决问题的最简单方法是什么,但保留或尽量减少对我的约定的修改?多谢!
解决问题的最简单方法是什么,但保持或与 对我的约定进行最低限度的修改?
最简单的方法可能是稍微修改约定,例如使用小写的 start 方法名称。
顺便说一句,我喜欢您在访问器方法中不使用"get"一词。本着同样的精神,您可以在突变器方法中删除"set"一词(此处为 SetMaterial()
)。签名足以区分访问者和突变者。
如果您喜欢它们,您可以通过以下方式联系:
class Material
{};
class Background
{
public:
Material* material() const {return m_material;}
void material(Material* material) {m_material = material;}
private:
Material* m_material;
};
将方法名称大写是不寻常的。
看看Qt库。它使用与您几乎相同的约定,是我见过的最好的代码段。我看到的唯一区别是方法名称开头的大写字母。因此,改变你的惯例以匹配他们的惯例,你会很高兴。
你不遵守好的命名规则会让你受咬。
若要命名函数,请使用后跟对象的强动词 具有功能内聚力的过程通常对对象执行操作。名称应反映过程的作用,对对象的操作意味着谓词加对象名称。GetMaterial()、SetMaterial、PrintDocument()、CalcMonthlyRevenues()、CheckOrderlnfo() 和 RepaginateDocument() 是良好过程名称的示例。
解决问题的最简单方法是什么,但保留或尽量减少对我的约定的修改?
只需在对象前面添加一个操作作为函数名称:
Material* GetMaterial() const {return m_material;}
相关文章:
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 我想直接在结构中插入,但没有一种方法可以正确避免填充问题
- C++方法实现:是否可以避免每次都键入类名?
- 我能否通过将函数实现为类对象方法来避免使用互斥锁
- 是否有一种方法可以避免标头文件中使用的constexpr函数输入全局范围,而无需额外的名称空间
- 是否有一种方法可以避免在RVALUE和LVALUE参考中创建功能时避免重复的代码
- 使用GCOV时,是否有一种方法可以避免使用CPP文件中包含的标头文件进行仪器
- 在Thrift中,有没有一种方法可以避免生成C++setter
- 在C 类的方法中避免代码重复
- 使用 init 方法来避免使用 new 分配对象是这种糟糕的设计
- 是否有任何方法可以避免警告/错误模板实例化回溯
- 有什么方法可以避免在C++中使用非法指针吗
- 为什么没有标准化的方法来避免const方法的代码重复
- 是否有任何方法可以避免cpp文件中所有方法的重复类实例化
- 是否有某种方法可以避免在继承的类中重复代码
- 是否有一种方法可以避免在大量文件中实例化大量模板
- 使用JNA从Java调用c++ dll方法并避免方法名称混淆
- 有没有一种正统的方法可以避免编译器警告 C4309 - 带有二进制文件输出的"truncation of constant value"?
- 是否有任何方法可以避免跨类的不同构造函数进行代码复制
- 有什么方法可以避免systemctl在停止时杀死我的一个子进程