Для демонстрации концепции в 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_;
}
Животные часто используются для иллюстрации объектно-ориентированного программирования. Они приходят с хорошим гомогенным и гетерогенным поведением (eat
, bark
) деревья отношений (Dalmatian
это Dog
, Dog
имеет Tail
), так далее.
Конечно, те же проблемы могут быть решены с помощью методов, не связанных с ООП … те же атрибуты полезны для иллюстрации взаимосвязи между динамическим полиморфизмом через виртуальные функции, специализацию шаблонов, адаптеры, enable-if
, так далее.
Насколько я понимаю, такие примеры хорошо подходят для иллюстрации выражений, синтаксиса или архитектурных шаблонов, но не для алгоритмов или частей бизнес-логики. Всякий раз, когда вы пытаетесь проиллюстрировать последнее, вам следует подумать об использовании значимых имен, объясняющих их роль в алгоритме.
Что касается меня, я обычно иду с foo
/bar
/moo
/boo
и т.д. Это делает работу довольно хорошо насколько пример достаточно короткий.
Если пример не является достаточно коротким, и дело в том, что подчеркивание типа (например, функции или, скажем, массива), кажется, облегчает читабельность, functionA
/functionB
можно использовать в качестве альтернативы — кажется, проще (чем с цифрами) читать и манипулировать такими именами в виду ИМХО. Числа могут отвлекать.
Другой способ (особенно хорошо подходит для обсуждения SQL-запросов, но может быть полезен и в некоторых случаях C ++) — использование примитивных реальных сущностей, таких как class Person
а также class Employee
как подкласс.
Если вы стремитесь продемонстрировать примеры ООП неспециалисту, Foo / Bar / Function1 в этом случае абсолютно не подходит: тогда только самые умные из ваших учеников поймут эту идею. Мой первый пример ООП был lightbulb
с turn on
а также turn off
методы, isOn
имущество, colour
а также power
свойства. Это может быть расширено fluorescent
или incandescent lamp
подкласс и инкапсулированы в desk lamp
учебный класс. Если вы зайдете дальше в ООП и представите интерфейсы, он также может реализовать ac-powered
и / или dc-powered
интерфейсы.
Использование Foo / Bar и т. Д. Имеет значение только при общении с людьми с таким же или более высоким опытом, чем у вас — теми, кто уже полностью понимает язык (например, когда вы задаете вопрос типа «следует ли мне использовать» foo + bar
или же foo.plus(bar)
?» Добрый).