Информация об изменениях

Сообщение Re: свой фреймворк от 22.11.2022 11:23

Изменено 22.11.2022 12:00 qaz77

Re: свой фреймворк
Здравствуйте, maks1180, Вы писали:
M>Для целочислинных типов я решил дать имена U8/U16/U32/U64 для безнаковых и I* для знаковых.

Добавлю еще такое соображение против.

Имена состоящие только из заглавных букв и цифр имеют не иллюзорный шанс совпасть с каким-нибудь макросом.
Обычно макросы именно так именуют, иногда даже короткие имена встречаются.
При подключении какой-нибудь новой библиотеки или SDK твой код может перестать компилироваться (что еще так себе),
а хуже если тихо логика поменяется.

В моей практике был такой случай. Программист сделал enum с именами LEFT, RIGHT, UP, DOWN без указания значений.
Потом разбирались с непонятным глюком в поведении софтины. Компилировался проект без ошибки.
Оказалось, что где-то в хидерах чужой библиотеки был #define UP 1.
Итого получается, что RIGHT == UP == 1.

Сейчас идешки хорошо подсвечивают макросы (тот случай был во времена VS6).
Но все равно патовая ситуация возникнет, если в нужной сторонней библиотеке определен макрос U32,
а у тебя эта U32 в 100500 местах по собственному коду.
Re: свой фреймворк
Здравствуйте, maks1180, Вы писали:
M>Для целочислинных типов я решил дать имена U8/U16/U32/U64 для безнаковых и I* для знаковых.

Добавлю еще такое соображение против.

Имена состоящие только из заглавных букв и цифр имеют не иллюзорный шанс совпасть с каким-нибудь макросом.
Обычно макросы именно так именуют, иногда даже короткие имена встречаются.
При подключении какой-нибудь новой библиотеки или SDK твой код может перестать компилироваться (что еще так себе),
а хуже если тихо логика поменяется.

В моей практике был такой случай. Программист сделал enum с именами LEFT, RIGHT, UP, DOWN без указания значений.
Потом разбирались с непонятным глюком в поведении софтины. Компилировался проект без ошибки.
Оказалось, что где-то в хидерах чужой библиотеки был #define UP <что-то равное 1>.
Итого получается, что RIGHT == UP == 1.

Сейчас идешки хорошо подсвечивают макросы (тот случай был во времена VS6).
Но все равно патовая ситуация возникнет, если в нужной сторонней библиотеке определен макрос U32,
а у тебя эта U32 в 100500 местах по собственному коду.