C++ Вопрос Лайфхаки плюсов или рекомендации по стилю

Nike.lua
Олдфаг
Статус
Оффлайн
Регистрация
13 Окт 2020
Сообщения
2,746
Реакции[?]
1,465
Поинты[?]
2K
Вообще, мне прижилась венгерская нотация. Но, на самом деле, много кто против этого.
Пример:
C++:
class CPlayer; //C - обозначает class
class IRenderable; //I - обозначает интерфейс

int m_iNumber; //i после m_ обозначает int
bool m_bActive; //b после m_ обозначает boolean
float m_flBlaBla; //fl после m_ обозначает float
void* m_pSomePtr; //p после m_ обозначает pointer
Названия методов с большой буквы
C++:
class CPlayer
{
    void Shoot( );
    int GetHeatlh( );
    bool IsAlive( );
}
Еще пишу пробелы между скобками вызова методов/функций, а так же при индексации массивов
C++:
void func1( int a, int b, int c );
void func2( );

arr[ 3 ];
arr[ func1( 1, 2, 3 ) ];
Но при большой вложенности такая хуйня может быть нечитаемой

UPD:
Про пробелы при вызове/индексации, кому интересно
В темлейтах, я например, отказался от этого
C++:
SomeClass blabla = SomeClass<int>( 1, 2, 3, 4, 5 )
Потому что превращается в реально дикое месиво, а если у тебя еще и вложенные темплейты, то сразу в помойку
C++:
SomeClass blabla = SomeClass< SomeClass2<int>, int, bool, float >( )
 
Последнее редактирование:
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
Вообще, мне прижилась венгерская нотация. Но, на самом деле, много кто против этого.
Пример:
C++:
class CPlayer; //C - обозначает class
class IRenderable; //I - обозначает интерфейс

int m_iNumber; //i после m_ обозначает int
bool m_bActive; //b после m_ обозначает boolean
float m_flBlaBla; //fl после m_ обозначает float
void* m_pSomePtr; //p после m_ обозначает pointer
Названия методов с большой буквы
C++:
class CPlayer
{
    void Shoot( );
    int GetHeatlh( );
    bool IsAlive( );
}
Еще пишу пробелы между скобками вызова методов/функций, а так же при индексации массивов
C++:
void func1( int a, int b, int c );
void func2( );

arr[ 3 ];
arr[ func1( 1, 2, 3 ) ];
Но при большой вложенности такая хуйня может быть нечитаемой
Лично я думаю что стоит отходить от венгерской нотации, хотя сыс не могу отойти от неё, просто в огромных участках кода, начинаеться дикое месиво, в которое никто перечитать не сможет, но у каждого свои приколы
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
Вообще, мне прижилась венгерская нотация. Но, на самом деле, много кто против этого.
Пример:
C++:
class CPlayer; //C - обозначает class
class IRenderable; //I - обозначает интерфейс

int m_iNumber; //i после m_ обозначает int
bool m_bActive; //b после m_ обозначает boolean
float m_flBlaBla; //fl после m_ обозначает float
void* m_pSomePtr; //p после m_ обозначает pointer
Названия методов с большой буквы
C++:
class CPlayer
{
    void Shoot( );
    int GetHeatlh( );
    bool IsAlive( );
}
Еще пишу пробелы между скобками вызова методов/функций, а так же при индексации массивов
C++:
void func1( int a, int b, int c );
void func2( );

arr[ 3 ];
arr[ func1( 1, 2, 3 ) ];
Но при большой вложенности такая хуйня может быть нечитаемой
смысла от венгенрской нотации лично для меня мало, если у меня есть clangd/intellisense, но каждому своё
Захват this? Mutable для захвата по ссылке? Явность возвращаемого типа? Ну и константность лямбд
верно

А почему он тривиально не может быть сахаром, тк основа его - врапер над возвращаемым типом объекта, вполне себе сахар
я не согласен с тем что это сахар.

синтаксический сахар - это ? в расте. синтаксический сахар - это match в окамле. врапперы - это не сахар.
 
Nike.lua
Олдфаг
Статус
Оффлайн
Регистрация
13 Окт 2020
Сообщения
2,746
Реакции[?]
1,465
Поинты[?]
2K
смысла от венгенрской нотации лично для меня мало, если у меня есть clangd/intellisense, но каждому своё
Для меня, это, по большей части, зависит от того, с чем именно я работаю. Ну типо у микромягких прижилась венгерская нотация, в какую структуру в винапи не засунь нос - везде эти b, fl, lpv и т.д.
Так же и у вальвов, что в доте, что в кс, там сплошь и рядом венгерская нотация
 
Stop Staring At the Shadows
Участник
Статус
Оффлайн
Регистрация
10 Окт 2020
Сообщения
519
Реакции[?]
497
Поинты[?]
86K
хз, из более менее интересного новичку - можешь покурить __builtin_{memcmp,memchr,strlen}

p.s. а вообще, довольно трудно воспринимать что-либо в кодинге как "лайфхак"
 
PoC Life
Пользователь
Статус
Онлайн
Регистрация
22 Авг 2022
Сообщения
361
Реакции[?]
48
Поинты[?]
38K
гугл -> syntactic sugar
Думал ты от себя, сейчас посмотрю

C++:
auto lmbd = [1](2) {
   3
}

lmbd();

// 1 - захватывать значения в скопе по референсу (&), по значению (=) или не захватывать вовсе ().
// 2 - список параметров, как у функции.
// 3 - тело лямбды, как у функции.
и там же ещё есть такие true ? 1 : 0
хз, из более менее интересного новичку - можешь покурить __builtin_{memcmp,memchr,strlen}
посмотрю

А, так блять, твой "синтаксический сахар" в джаве называется лямбдой, но я не про них
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
А, так блять, твой "синтаксический сахар" в джаве называется лямбдой, но я не про них
Выражение "синтаксический сахар" означает, что в языке программирования предоставлен удобный и более читаемый синтаксис для выполнения определенных операций или шаблонных задач. Этот синтаксический сахар не вносит новых возможностей в язык, но делает код более лаконичным и понятным для программистов.
 
Сверху Снизу