The Daily WTF на русском
Подписаться
CodeSOD: Вне пути
Разделители путей к файлам могут представлять проблему при написании кроссплатформенного программного обеспечения, и не все языки программирования имеют простой API для их обработки. До C++ 17 разработчикам приходилось использовать препроцессорную магию для обработки разделителей путей к файлам, часто используя набор библиотек Boost. Распространенным решением было определение константы препроцессора для разделителя путей с помощью директив условной компиляции. Этот подход позволял разработчикам собирать пути таким образом, чтобы они работали в соответствии с различными соглашениями о путях к файлам. Однако некоторые разработчики выбрали неверный подход, например, добавляли разделитель пути, а затем заменяли его правильным, что приводило к дублированию и ошибкам в коде. Этот некорректный подход часто копировался по всей кодовой базе, что приводило к множеству экземпляров одной и той же ошибочной логики. Код не рефакторился, несмотря на то, что им пользовались несколько разработчиков, и в некоторых случаях он по-прежнему выдавал неправильные разделители путей. К счастью, современная Windows прощает неправильные разделители путей, но это не оправдывает плохую практику кодирования. Лучшим подходом было бы определение константы для разделителя путей и ее последовательное использование во всей кодовой базе. Использование платформы управления релизами самообслуживания, такой как BuildMaster, может помочь оптимизировать процесс разработки и снизить вероятность подобных ошибок.