2

为了在 c++ 中进行概念演示,我需要为类型、函数、变量使用一些占位符命名方案,例如Foobar。有几个不同的实体来命名和区分最终以 foo/bar 单独用于类、函数、成员变量的结果在视觉上没有区别。这些实体是否有一些有用的占位符命名方案?

enum Enum1 { ... }

struct Struct1 { ... }

class Class1
{
public:
    void function1();
    void function2();
    ...
private:
    int variable1;
    int variable2;
    ...
}

单独使用 foo/bar 来表示类型、函数和变量,区别并不那么明显

enum Foo { ... }

struct Bar { ... }

class Foo
{
public:
    void foo();
    void bar();
    void baz();
private:
    int foo_;
    int bar_;
}
4

2 回答 2

2

动物经常用于说明面向对象的编程。它们具有良好的同质和异质行为(eat, bark)、关系树(Dalmatianis-a DogDoghas-a Tail)等。

当然,同样的问题可以通过非 OOP 技术解决……同样的属性通过虚函数、模板特化、适配器enable-if等有用地说明了动态多态性之间的关系。

于 2013-03-18T19:23:22.330 回答
1

据我了解,此类示例可以很好地用于说明表达式、语法或架构模式,但不能用于说明算法或业务逻辑部分。每当您试图说明最后一个时,您应该真正考虑使用有意义的名称来解释它们在算法中的作用。

至于我,我通常使用foo/ bar/ moo/等。只要示例相当短,boo这可以很好地完成工作。

如果示例不够短,并且强调类型(如函数或数组)似乎有助于提高可读性,functionA/functionB可以用作替代方案 - 它似乎更容易(比数字)阅读并在恕我直言中操纵这些名称。数字会分散注意力。

另一种方法(在讨论 SQL 查询时对我来说特别好,但在某些 C++ 情况下也很有用)是使用原始的现实生活实体,如class Personclass Employee作为子类。

如果您想向非专业人士演示 OOP 示例,则 Foo/Bar/Function1 在这种情况下绝对不是一个选择:只有最聪明的学生才会明白这一点。我的第一个 OOP 示例是lightbulbwithturn onturn off方法、isOn属性colourpower属性。它可以用一个fluorescent或一个incandescent lamp子类扩展并封装在一个desk lamp类中。如果您在 OOP 中走得更远并引入接口,它也可以实现ac-powered和/或dc-powered接口。

使用 Foo/Bar 等仅在与具有相同或更高经验的人交流时才相关 - 那些已经完全理解该语言的人(例如,当您提出“我应该使用foo + bar还是foo.plus(bar)?”之类的问题时)。

于 2013-03-18T19:38:18.750 回答