Александреску Андрей
Шрифт:
Это корректный дизайн, и вы ожидаете, что любое неверное употребление
При использовании старой инструкции
Преобразования в стиле С++ проще искать в исходных текстах при помощи автоматического инструментария наподобие
[Dewhurst03] §40 • [Meyers96] §2 • [Stroustrup00] §15.4.5 • [Sutter00] §44
96. Не применяйте
Не работайте рентгеновским аппаратом (см. рекомендацию 91). Не используйте
Функции
Объекты С++ предназначены для сокрытия данных (возможно, наиболее важный принцип в разработке программного обеспечения; см. рекомендацию 11). Объекты скрывают данные (см. рекомендацию 41) и предоставляют точные абстракции для копирования этих данных посредством конструкторов и операторов присваивания (см. рекомендации с 52 по 55). Пройтись по ним грубым инструментом типа
Неверное применение
Аналогично, функция
[Dewhurst03] §50 • [Stroustrup94] §11.4.4
97. Не используйте объединения для преобразований
Хитрость все равно остается ложью: объединения можно использовать для получения "преобразования типа без преобразования", записывая информацию в один член и считывая из другого. Однако это еще более опасно и менее предсказуемо, чем применение
Не считывайте данные из поля объединения, если последняя запись была не в это же поле. Чтение из поля, отличного от поля, в которое производилась запись, имеет неопределенное поведение, и использование этого метода еще хуже, чем применение