Соглашения о присвоении имен для шаблонных типов?

Хотя файлы в Android Studio, казалось, были изменены и заполнены каким-то мусором, я смог открыть их в других редакторах, и данные все еще там.

Пользователи Windows, не делайте этого: "File > Invalidate Caches and Restart"

Я не нашел способа восстановить это в Android Studio. Но смог скопировать и вставить данные файла из другого редактора и заставить его работать.

24
задан Frank 28 March 2009 в 13:17
поделиться

8 ответов

Поскольку C++ обрабатывает по шаблону, у меня есть несколько шаблонов

Если существует только единственный шаблонный параметр, я называю его T (или U, V для вложенных шаблонов).

Когда существует несколько параметров, и использование не сразу очевидно затем, что я использую описательные имена, снабженные префиксом T. Например, TKey, TValue, TIdentifiier, и т.д... Это делает параметры довольно легкими определить в течение шаблонного использования.

Я избежал бы всей прописной версии все же. Большинство людей использует все прописные идентификаторы в C/C++ для представления макроопределения. Повторение, что шаблон для шаблонного параметра, вероятно, смутит людей в будущем.

32
ответ дан 28 November 2019 в 23:21
поделиться

Я использую конвенцию TName для шаблонного параметра и NameT для сохраненного шаблонного параметра.

template <typename TFirst, typename TSecond>
class Templated
{
    typedef TFirst FirstT;
    typedef TSecond SecondT;
}

typedef Templated<int, std::string> MyTemplated;
...
const MyTemplated::FirstT size;
8
ответ дан 28 November 2019 в 23:21
поделиться

Обычно традиционный путь состоит в том, чтобы использовать T, если существует только один параметрический усилитель типа. Если существует больше, используйте T в качестве префикса, например, TAtom. "T" префикс помогает немедленно видеть, что это - параметр типа. Используя TAtom для единственного типа параметр также допустим.

4
ответ дан 28 November 2019 в 23:21
поделиться

Вы не должны использовать специальное соглашение о присвоении имен для шаблонов, просто использовать ту же конвенцию что касается любого другого из того типа (что касается классов или переменных). Не должно иметь значения в коде, работаете ли Вы с шаблонными типами/значениями или нормальными.

1
ответ дан 28 November 2019 в 23:21
поделиться

Я пытаюсь следовать за понятием мое использование поставщика компилятора: это является не слишком коротким и не слишком подробным. И помогает мне прочитать сообщения об ошибках, которые я получаю со стандартными шаблонами. (Который является другой причиной, почему я переключился от const T& кому: T const&). Что-то как:

template <class Ty, class Container>
class my_algo { ...

где мой компилятор будет обычно использовать:

template <class _Ty, class _Container>
class std_algo { ...
1
ответ дан 28 November 2019 в 23:21
поделиться

В нашем магазине мы используем нотацию HungF##ngarian. Аргументы шаблона являются просто аргументами как все другие, кроме они не константа, ни переменная, а тип.

template< typename at_Container, typename at_Functor > 
at_Functor& foreach( const at_Container& ac_Cont, at_Functor& av_Func ) {
    return std::foreach( ac_Cont.begin(), ac_Cont.end(), av_Func );
}

Префикс описывает тип, в то время как имя предназначено для высказывания чего-то вроде роли игры аргумента в контексте определенной функции.

1
ответ дан 28 November 2019 в 23:21
поделиться

Если у меня есть класс с одним параметром типа, я использую имя T. Также это означает, что все operartion в этом классе работают с T.

Если у меня есть немногие параметр, я называю как в Вашем explamle AtomT, BIOT...
Если шаблонный параметр не является типом объекта, которому мы работающий в классе, например, стратегии, comaparator или функторе, я использую имя без T, например, ThreadStrategy, Соответствую.

Иногда для стараются не смешивать стили, я делаю определения типов в классе:
определение типа T value_type;

--
Повысьте соглашение о присвоении имен (http://www.boost.org/development/requirements.html#Naming_consistency), говорит о шаблонных параметрах затем:
Шаблонные названия параметра начинаются с прописной буквы.

0
ответ дан 28 November 2019 в 23:21
поделиться

Я следую за теми же общими шаблонными именами типов параметра именования конвенций, как я следую за классами идентификатора и структурами, который должен использовать для своей выгоды первую букву или каждое слово, как так:

class MyGizmo
{
};

struct Thingy
{
};

class TPSReport 
{
};


template<class ValType> ...

template<typename Number> ...
0
ответ дан 28 November 2019 в 23:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: