Лучшая практика о модульности C ++

Рекомендуется всегда разделять объявление и определение, даже если определение имеет единственную строку, например конструктор или int value() const; в коде ниже?

Моя цель — изучить C ++ и, в то же время, использовать лучшие практики. Так что если есть что улучшить в этом коде, пожалуйста, сообщите мне.

//counter.h
#ifndef COUNTER_H
#define COUNTER_H
#include <QObject>class Counter : public QObject
{
Q_OBJECT
public:
Counter();
int value() const;

public slots:
void setValue(int value);

signals:
void valueChange(int newValue);
private:
int m_value;
};

#endif // COUNTER_H

//counter.cpp
#include "counter.h"
Counter::Counter()
{
m_value = 0;
}

int Counter::value() const
{
return m_value;
}

void Counter::setValue(int value)
{
if(value != m_value)
{
m_value = value;
emit valueChange(value);
}
}

0

Решение

Все функции, реализованные в определении класса, являются встроенными. Поэтому, если вы поместите эти методы в определение класса, вы сделаете их встроенными. Это не эквивалентный код.

Лучшая практика в C ++ — переместить в файл .cpp как можно больше определений и максимально упростить ваш файл .h. Уменьшите число, если #include директивы в ваших заголовочных файлах. По возможности используйте предварительные объявления ваших классов и структур вместо полных определений.

Увы, эти рекомендации не будут работать с шаблонами, поэтому компиляция C ++ происходит так медленно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]