Обхватът на една променлива, най-просто казано, е къде в програмата тя може да бъде използвана.
Ето един прост пример на C++:
Тук имаме 2 променливи с еднакви имена, но първата myVar съществува само във функцията firstFunction(), а втората само във функцията anotherFunction().
Следователно ако извикаме anotherFunction(), ще видим стойността 5 на екрана.
---
Друго интересно понятие е "живот на променливата" или по-точно броят редове между декларирането на променливата и последното й използване.
Например:
Тук имаме 3 променливи. Животът на променливата a е 3, на b е 3, а на c е 0.
---
Има няколко причини да се целим към минимизиране на обхвата и живота на променливите, които декларираме:
1. По-лесно откриване на грешки.
Става значително по-лесно да следим стойността на дадена променлива, когато тя е декларирана максимално близо до мястото в програмата, в което се използва. Не се налага да се съсредоточаваме върху голяма порция код, а само върху няколко реда и това значително улеснява откриването и коригирането на грешки (а може би дори и предотвратяването им).
2. По-четим код
Отново е свързано с факта, че е нужно да се фокусираме върху по-малко количество информация и следователно кодът става значително по-четим.
3. По-лесно разделяне на сложни функции на по-прости
Много по-лесно е да отделим дадена част от кода в отделна функция ако декларациите се намират до редовете, в които се използват променливите. Рефакторирането (преработването) на кода се улеснява значително.
---
Направи ми впечатление, че е често срещана практиката при правене на прости програми да се следва структурата: деклариране на променливи, а след това следва главната функционалност на програмата и изход от нея.
Това не е чак такъв проблем при малки програми, но при по-сложни проекти е добра практика да се минимизра обхвата и живота на променливите, които използваме.
Това също е основна причина да се избягва използването на глобални променливи - трудно се следи стойността им и това води до трудни за откриване грешки.
Просто една интересна идея, която ми направи впечатление... Препоръчвам да разгледате книгата Code Complete - изключително много полезна информация за всеки сериозен програмист.
Over and out.
Няма коментари:
Публикуване на коментар