目前我对类名和方法名使用相同的约定。他们有一个没有前缀的主要大写字母。我不会使用" 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;
};
解决问题的最简单方法是什么,但保持或最少修改我的约定?非常感谢!
答案 0 :(得分:5)
最简单解决问题的方法是什么,但保持或与之相关 最低限度修改我的惯例?
最简单的方式可能是略微修改约定,例如使用小写启动方法名称。
顺便说一句,我喜欢你没有使用“#34; get"在存取方法中。本着同样的精神,你可以放弃" set"在mutator方法中(这里,SetMaterial()
)。签名足以区分访问者和变更者。
如果您喜欢,请访问:
class Material
{};
class Background
{
public:
Material* material() const {return m_material;}
void material(Material* material) {m_material = material;}
private:
Material* m_material;
};
答案 1 :(得分:1)
大写方法名称异常。
答案 2 :(得分:1)
看看Qt库。它使用与您几乎相同的约定,它是我见过的最好的代码片段。我看到的唯一区别是方法名称开头的大写字母。因此,改变你的惯例以匹配他们,你会很高兴。
答案 3 :(得分:0)
你没有遵循良好的命名规则而感到痛苦。
要命名函数,请使用强动词后跟对象具有功能性内聚的过程通常对对象执行操作。该名称应反映该过程的作用,对对象的操作意味着动词加对象名称。 GetMaterial(),SetMaterial,PrintDocument(),CalcMonthlyRevenues(),CheckOrderlnfo()和RepaginateDocument()是良好过程名称的样本。
解决问题的最简单方法是什么,但保持或尽量少修改我的约定?
只需在对象前面添加一个动作作为函数名称:
Material* GetMaterial() const {return m_material;}