26 ноември 2016 г.

CODE TIPS #5 - Намалете обхвата и живота на променливите си

Доста интересна идея, за която не се бях замислял дълбоко, докато не прочетох за нея във фантастичната книга Code Complete на Steve McConnell.




Обхватът на една променлива, най-просто казано, е къде в програмата тя може да бъде използвана.

Ето един прост пример на C++:

Тук имаме 2 променливи с еднакви имена, но първата myVar съществува само във функцията firstFunction(), а втората само във функцията anotherFunction().

Следователно ако извикаме anotherFunction(), ще видим стойността 5 на екрана.

---

Друго интересно понятие е "живот на променливата" или по-точно броят редове между декларирането на променливата и последното й използване.

Например:

Тук имаме 3 променливи. Животът на променливата a е 3, на b е 3, а на c е 0.

---

Има няколко причини да се целим към минимизиране на обхвата и живота на променливите, които декларираме:

1. По-лесно откриване на грешки.
Става значително по-лесно да следим стойността на дадена променлива, когато тя е декларирана максимално близо до мястото в програмата, в което се използва. Не се налага да се съсредоточаваме върху голяма порция код, а само върху няколко реда и това значително улеснява откриването и коригирането на грешки (а може би дори и предотвратяването им).

2. По-четим код
Отново е свързано с факта, че е нужно да се фокусираме върху по-малко количество информация и следователно кодът става значително по-четим.

3. По-лесно разделяне на сложни функции на по-прости
Много по-лесно е да отделим дадена част от кода в отделна функция ако декларациите се намират до редовете, в които се използват променливите. Рефакторирането (преработването) на кода се улеснява значително.

---

Направи ми впечатление, че е често срещана практиката при правене на прости програми да се следва структурата: деклариране на променливи, а след това следва главната функционалност на програмата и изход от нея.

Това не е чак такъв проблем при малки програми, но при по-сложни проекти е добра практика да се минимизра обхвата и живота на променливите, които използваме.

Това също е основна причина да се избягва използването на глобални променливи - трудно се следи стойността им и това води до трудни за откриване грешки.

Просто една интересна идея, която ми направи впечатление... Препоръчвам да разгледате книгата Code Complete - изключително много полезна информация за всеки сериозен програмист.

Over and out.