Доброй пятницы, хабралюди.
У нас с друзьями есть такая традиция – мы собираемся вместе и программируем вместе.
Раньше у нас была такая работа, но сейчас это просто традиция — генерация кода.
Мы выбрали простую задачу и нарисовали решения по всем направлениям.
Код будет ближе к концу статьи, но не спешите листать вниз, надо сначала объяснить, что это за код и как мы к нему пришли.
Сама задача — самым неожиданным способом получить число 0х17.
Внимание! Этот пост оскорбляет чувство прекрасного и практику программирования на C. Читайте, воспринимайте и комментируйте на свой страх и риск.
Вы любите магические числа в коде? Иногда смотришь на какой-нибудь код и видишь a=b^7. Почему именно 7? Что это за число, откуда оно взялось, что оно означает? Так много вопросов и так мало ответов, если только кто-то не удосужился прокомментировать.
Существует несколько способов разрешения такого рода неопределенности:
- Оставить комментарий.
Но комментарии для слабаков – это не по-нашему.
- Создайте переменную или макрос со значимым именем.
а = б ^ HEARTBEAT_MASK_BYTE. Это уже хорошо, но может быть и лучше, правда?
- Покажите расчетным путем путь, который привел к этому числу.
Здесь! Это отличный способ.
Но не всегда применимо, как, например, в рассматриваемом коде.
В нем 7 — полноценный и независимый элемент, не являющийся результатом каких-либо операций.
Но задача была избавиться от магического числа, а не сделать это логически.
Более того, мы доведем задачу до абсурда — получим числа самым непостижимым образом.
Программно-аппаратный комплекс в виде вызова функции rand() решил, что мы избавимся от магического числа 0x17. Команда погромщиков, включая меня, Виконт и [УДАЛЕНО] начали творить.
0x17 способы получить 0x17: Теги: #C++ #C++ #0x17 оттенков C #не делайте этого #Ненормальное программирование #Иначе код причинит боль #Ненормальное программирование #C++ #C++
-
Заработок Денег: Бесплатный Контент Статьи
19 Oct, 24 -
Вопросы И Ответы О Частице Хиггса
19 Oct, 24 -
Monster Откроет Офис В Москве
19 Oct, 24