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

PoC Life
Пользователь
Статус
Онлайн
Регистрация
22 Авг 2022
Сообщения
361
Реакции[?]
48
Поинты[?]
38K
Расскажите свои лайфхаки плюсов. Пример лайфхака, который я недавно увидел:
C++:
#include "includes.h"
И в includes.h все инклуды, чтобы по сто раз не инклудить либки по типу iostream

Также, т.к. я пришёл с джавы у нас принято называть методы и переменные с маленькой буквы без _, а константы капсом с _, пример:
Java:
static final String BLABLA_CONSTANT = "Константа = капс";
int newInt = 5;
void printAboba() {}
Есть ли что-то такое в плюсах? Потому что в windows.h методы с большой буквы (NtБлабла), в других либах (а может даже от майкрософт как windows) они используют стиль названия методов с маленькой буквы. Так что пока не понял этого

Также хотел спросить как сделать лучше, в классе Person.h сделать виртуальный метод и сделать его реализацию в BasicPerson или сделать класс BasicPerson, в классе Person унаследовать класс BasicPerson и использовать using BasicPerson::foo?
 
Последнее редактирование:
Obstruct Omicronium
Пользователь
Статус
Оффлайн
Регистрация
28 Авг 2022
Сообщения
67
Реакции[?]
78
Поинты[?]
66K
Потому что в windows.h методы с большой буквы (NtБлабла), в других либах (а может даже от майкрософт как windows) они используют стиль названия методов с маленькой буквы.
Потому что внутри компании у микромягких свои соглашения о стандартах написания кода
 
PoC Life
Пользователь
Статус
Онлайн
Регистрация
22 Авг 2022
Сообщения
361
Реакции[?]
48
Поинты[?]
38K
Потому что внутри компании у микромягких свои соглашения о стандартах написания кода
так почему же Window.h использует первую букву заглавной, а другой header (много на плюсах не писал, точно не вспомню) от них совсем по другому
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
Очень кайфовый совет для того чтобы время твоей компиляции вскочили в разы. Так же классный способ засрать глобальный неймспейс.
Есть ли что-то такое в плюсах?
Есть. Выбери один кодстиль и придерживайся его. Не так важны мелочи по типу нейминга, главное чтобы это было адекватно, и стабильно на протяжении всей кодбазы.
в классе Person.h сделать виртуальный метод и сделать его реализацию в BasicPerson или сделать класс BasicPerson, в классе Person унаследовать класс BasicPerson и использовать using BasicPerson::foo?
person.h:
#ifndef PERSON_H_
#define PERSON_H_

class Person {
   std::uint8_t age;
   std::string name;
public:
   virtual void say_hello() = 0;
}

class BasicPerson : public Person {
   void say_hello() override;
}

#endif // PERSON_H_
person.cpp:
#include <your_project/person.h>

void BasicPerson::say_hello() {
    ...
}
обычно это делается так, но prefer composition over inheritance.
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
чтобы по сто раз не инклудить либки по типу iostream
#include буквально вставляет какой то там файл в cpp файл, на .h ему, в целом (по нашим конвенциям) поебать.

a.h:
#define LOL 42
a.cpp:
#include <your_project/a.h>

int lmao() {
   return LOL;
}

// после обработки препроцессором становится

#define LOL 42

int lmao() {
   return LOL;
}
так что каждый раз, что ты будешь инклудать свой волшебный инклудес.х в твой спп файл будет влетать массивная тонна говна. че нибудь, да сломается.
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
C++:
И в includes.h все инклуды, чтобы по сто раз не инклудить либки по типу iostream
Очень плохая вещь.
Также, т.к. я пришёл с джавы у нас принято называть методы и переменные с маленькой буквы без _, а константы капсом с _, пример:
Ну тут у каждого что-то свое, если ты использовать сущестующие используй ту же стилистику camelCase, snake_case, UpperCamelCase и тд...
А ещё советую почитать
Пожалуйста, авторизуйтесь для просмотра ссылки.

Ну и ещё style guide lines:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
И другие, найдешь в каждом что-то полезное
 
PoC Life
Пользователь
Статус
Онлайн
Регистрация
22 Авг 2022
Сообщения
361
Реакции[?]
48
Поинты[?]
38K
Очень кайфовый совет для того чтобы время твоей компиляции вскочили в разы. Так же классный способ засрать глобальный неймспейс.
Да я просто увидел, буду знать, что задумка плохая

Есть. Выбери один кодстиль и придерживайся его. Не так важны мелочи по типу нейминга, главное чтобы это было адекватно, и стабильно на протяжении всей кодбазы.
так почему же Window.h использует первую букву заглавной, а другой header (много на плюсах не писал, точно не вспомню) от них совсем по другому
?

person.h:
#ifndef PERSON_H_
#define PERSON_H_

class Person {
   std::uint8_t age;
   std::string name;
public:
   virtual void say_hello() = 0;
}

class BasicPerson : public Person {
   void say_hello() override;
}

#endif // PERSON_H_
person.cpp:
#include <your_project/person.h>

void BasicPerson::say_hello() {
    ...
}
обычно это делается так, но prefer composition over inheritance.
Понял, просто недавно читал один пост, там чел какую-то поеботу делал, это правильно или нет?
Пожалуйста, авторизуйтесь для просмотра ссылки.
1694948141094.png

просто не понимаю нахуя ему миллиард using.
#include буквально вставляет какой то там файл в cpp файл, на .h ему, в целом (по нашим конвенциям) поебать.

a.h:
#define LOL 42
a.cpp:
#include <your_project/a.h>

int lmao() {
   return LOL;
}

// после обработки препроцессором становится

#define LOL 42

int lmao() {
   return LOL;
}
так что каждый раз, что ты будешь инклудать свой волшебный инклудес.х в твой спп файл будет влетать массивная тонна говна. че нибудь, да сломается.
Понял, ещё раз спасибо


Ну тут у каждого что-то свое, если ты использовать сущестующие используй ту же стилистику camelCase, snake_case, UpperCamelCase и тд...
А ещё советую почитать
Пожалуйста, авторизуйтесь для просмотра ссылки.

Ну и ещё style guide lines:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
И другие, найдешь в каждом что-то полезное
Так, про стиль я понял, нашёл прикольный, но мне так и не ответили какого хуя один хейдер от майкрософт использует отличный стиль от другого
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
Так, про стиль я понял, нашёл прикольный, но мне так и не ответили какого хуя один хейдер от майкрософт использует отличный стиль от другого
Потому что их пишут разные люди🙂, да и так таковой согасованости по всему коду у майков нету, знаю что WinAPI - UpperCamelCase, а stl - snake_case
так почему же Window.h использует первую букву заглавной, а другой header (много на плюсах не писал, точно не вспомню) от них совсем по другому
Ты можешь имя инклюда коверкать как хочешь, сути это не меняет, тот же Windows.h - windows.h - WINDOWS.H и так далее
 
PoC Life
Пользователь
Статус
Онлайн
Регистрация
22 Авг 2022
Сообщения
361
Реакции[?]
48
Поинты[?]
38K
да и так таковой согасованости по всему коду у майков нету, знаю что WinAPI - UpperCamelCase, а stl - snake_case
странно, окей, буду знать

Но из лайфхаков мне никто ничего не сказал
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
просто не понимаю нахуя ему миллиард using.
Именно в этом примере не особо понимаю зачем такие alias, но я определяю все типы которые использует мой класс/header сразу, дабы при портировании кода, или некоторых изменениях, не приходилось вручную везде искать тот или иной тип
Но из лайфхаков мне никто ничего не сказал
Лайфхаков то особо нету в плюсах, почитай в гайд-лайнах, там много полезной информации, может это и будут твои лайфхаки
 
PoC Life
Пользователь
Статус
Онлайн
Регистрация
22 Авг 2022
Сообщения
361
Реакции[?]
48
Поинты[?]
38K
Оффтоп:
1694948740066.png
Можно ли отключить эти троеточия нахуй
1694948758811.png
Так понимаю это варнинги
 
PoC Life
Пользователь
Статус
Онлайн
Регистрация
22 Авг 2022
Сообщения
361
Реакции[?]
48
Поинты[?]
38K
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
Лайфхаки есть везде
Блядь.

Синтаксический сахар? Нет тут его.
До 2019-20 года нам нужна была мега умная библиотека fmt, чтобы красиво форматировать наши строчки.
просто не понимаю нахуя ему миллиард using.
Хуевая и дешевая реализация около-SFINAE (???)

Так как в этой статье плюсы не пишут.


Оффтоп:
Посмотреть вложение 259006
Можно ли отключить эти троеточия нахуй
Не пользуйся си с классами, нахуй.
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
какого хуя один хейдер от майкрософт использует отличный стиль от другого
индус который писал хедер1 решил что индус который писал хедер2 - пидор, поэтому написал название вот так.

в плюсах нет стандарта нейминга (не ебу почему). стандарт - говнище.
wanna be sum type =D

"если это синтаксический сахар, гуманитарий обосанный, нам не летать к далёкому космосу"
 
PoC Life
Пользователь
Статус
Онлайн
Регистрация
22 Авг 2022
Сообщения
361
Реакции[?]
48
Поинты[?]
38K
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
C++:
auto lmbd = [1](2) {
   3
}

lmbd();

// 1 - захватывать значения в скопе по референсу (&), по значению (=) или не захватывать вовсе ().
// 2 - список параметров, как у функции.
// 3 - тело лямбды, как у функции.
Не совсем понимаю что за сахар
гугл -> syntactic sugar
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
"если это синтаксический сахар, гуманитарий обосанный, нам не летать к далёкому космосу"
А почему он тривиально не может быть сахаром, тк основа его - врапер над возвращаемым типом объекта, вполне себе сахар
C++:
auto lmbd = [1](2) {
   3
}

lmbd();

// 1 - захватывать значения в скопе по референсу (&), по значению (=) или не захватывать вовсе ().
// 2 - список параметров, как у функции.
// 3 - тело лямбды, как у функции.
гугл -> syntactic sugar
Захват this? Mutable для захвата по ссылке? Явность возвращаемого типа? Ну и константность лямбд
 
Сверху Снизу