(Първо публикувано на 11.03.2016)
Много често виждам в програми/примери за C++ използването на именното пространство “std”, което представлява стандартната библиотека от функции на C++.
Оказва се, че този код не е част от добрата практика:
BAD:
Защо? Простото обяснение е, че могат да се появят конфликти когато използваме други библиотеки, които потенциално могат да имат идентични имена като тези на функциите (и не само) в стандартната библиотека.
Например нека имаме 2 библиотеки с имена MyLib и OtherLib.
Да речем в MyLib имаме функцията myFunction(), а в OtherLib **функцията **otherFunction(). Всичко е OK, спокойно можем да импортираме тези функции и да ги извикваме безпроблемно.
Но един ден се налага да обновим първата библиотека и сега сме с MyLib 2.0, която за нещастие сега също има функция, която се казва otherFunction(). Лошо! Сега, когато извикаме otherFunction() в кода си, не е ясно кой код точно ще се изпълни. Може да ни се размине ако функциите са с различни параметри, но наистина не си струва рискът.
Решението e много просто и има потенциал да ни спести много главоболия. Ако се върнем към първоначалния пример със “std”, единствената промяна, която е нужна, е да назовем името на съответното именно пространство. Тоест:
GOOD:
“Но това е толкова досадно, всеки път трябва да назовавам именното пространство!” — няма проблем, защото има и алтернатива:
ALSO GOOD:
Аналогично може да приложите горния код за std::string или структури като std::vector, std::list и т.н. Изключително дребна промяна, която не коства нищо, а носи огромна полза.
Top comments (0)