170 похожих чатов

Как лучше объединять переменные в классе в логические группы? Создавая

внутри/вне класса структуры ?

27 ответов

24 просмотра

Не нужно никаких групп. Просто напиши комментарии

В теории, в Visual Studio есть #pragma region, но это настолько редко используемая штука, что знать про неё тебе, наверное. рано. https://docs.microsoft.com/ru-ru/cpp/preprocessor/region-endregion?view=msvc-160

Ilya Zviagin
Не нужно никаких групп. Просто напиши комментарии

Есть что то плохое, в том что бы писать fan.power = fan.enable = вместо fan_power = fan_enable = ?

Aleksei-Budyakov Автор вопроса
SetPf
Есть что то плохое, в том что бы писать fan.power ...

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

используй префиксы, либо объяви отдельную структуру

Ilya Zviagin
Кстати , неплохой совет!

Я пытался их применять. В итоге они у меня в каком-то одном файле разово болтались... не пошло....

🐈
Я пытался их применять. В итоге они у меня в каком...

а какой-нибудь компилер кроме msvc не будет ругаться на такую прагму?

🐈
В теории, в Visual Studio есть #pragma region, но ...

Ну в C# она вроде вполне не редкая

Kirill 🚜
а какой-нибудь компилер кроме msvc не будет ругать...

в теории, может сказать, что не знает такую прагму. По-хорошему, это должен быть таки warning или просто примечение, а не ошибка

Kirill 🚜
а какой-нибудь компилер кроме msvc не будет ругать...

На неизвестные прагмы компилятор по определению не может ругаться. Обязан игнорировать

Aleksei-Budyakov Автор вопроса
Ilya Zviagin
Нет, ничего плохого

Тогда почему комментарии лучше?

Danya🔥
Ругается, ругается

Ну предупреждение это будет

Aleksei Budyakov
Тогда почему комментарии лучше?

комментарии это тоже плохо, названия переменных должны говорить сами за себя

Ilya Zviagin
Ну предупреждение это будет

Ну является хорошим тоном делать -Werror

Aleksei-Budyakov Автор вопроса
Kirill 🚜
комментарии это тоже плохо, названия переменных до...

ну так вот, почему бы их в группы не обьеденить, вместо префиксов. Вопрос в том ODR не будет нарушено если я структуры сразу в хедере определю, и подключу в разные модули далее

Aleksei Budyakov
ну так вот, почему бы их в группы не обьеденить, в...

Что значит в группы? Вот будет у тебя в одной группе Foo переменная Baz, и в группе Bar переменная Baz. Как ты сделаешь чтобы они не пересекались?

Aleksei-Budyakov Автор вопроса
Kirill 🚜
Что значит в группы? Вот будет у тебя в одной груп...

в структуры, я имею ввиду. Как в примере выше

Aleksei Budyakov
в структуры, я имею ввиду. Как в примере выше

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

Aleksei-Budyakov Автор вопроса
Kirill 🚜
В структуры можешь объединять, так часто делают. Н...

Я с точки зрения улучшения абстракции рассматриваю

Ilya Zviagin
Обычно так НЕ делают

Ну да, объявляют int configA, float configB, bool configC вместо того, чтобы объявить класс Config )))

Aleksei Budyakov
Я с точки зрения улучшения абстракции рассматриваю

Не усложняй систему без необходимости. А то знал я таких персонажей, которые паттернов с абстракциями наворотят, а потом у них ничего не работает

Aleksei-Budyakov Автор вопроса
Kirill 🚜
Не усложняй систему без необходимости. А то знал я...

Так наоборот же, упростить цель. Читатель сразу видит группы, вместо простыни из переменных

Aleksei Budyakov
Так наоборот же, упростить цель. Читатель сразу ви...

Мне это видится как усложнение Приходится мотать код вверх-вниз, чтобы посмотреть, где там и что в какой группе лежит

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

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта