Поправяне на грешки

За съжаление в реалния живот понякога се допускат грешки или недообмислени решения, които трябва да се поправят. Така понякога се налага в някоя следваща версия на библиотека да променим интерфейса й. Това може да произтича и просто от естественото развитие на библиотеката — новите възможности в нея може да обезсмислят съществуването на стари методи и функции.

Всяка несъвместимост е болезнена. При възможност библиотеката трябва да поддържа поне за известно време и старите функции и методи. На потребителите на библиотеката[3] трябва да бъде обяснено, че тези функции са остарели и поддръжката за тях може да бъде прекратена в някоя следваща версия на библиотеката. Трябва да има описание какво трябва да направят потребителите, за да осъвременят програмите си.

Някои езици за програмиране предлагат специални средства, улесняващи замените на „остарели“ имена. Например при Айфел остарелите имена може да бъдат обявени като obsolete, при което потребителите ще получат предупреждение, че използват име, което в някоя следваща версия на класа може да изчезне, а също и информация какво трябва да използват вместо това име.

И при програмиране на Си и Си++ трябва непременно да предоставим на потребителите средства, с които те могат да проверят, че програмите им вече не използват остарели имена, поддръжката за които може да бъде прекратена. За целта може да се използва предпроцесорът. Във всички заглавни файлове (.h), които ще бъдат използвани от потребителите, ограждаме декларациите на остарели имена с предпроцесорен условен оператор по следния начин:

#ifndef NO_COMPATIBILITY
тук се обявява името, което е остаряло
#endif
        

По такъв начин на потребителите се дава възможност да се уверят, че са елиминирали остарелите имена от програмите си. За целта е достатъчно те да дефинират променливата NO_COMPATIBILITI и при наличие на остаряло име в програмата им, компилаторът ще установи това.

Поздсказка

Полезно е в изходния код отбелязваме остарелите имена с еднотипен коментар. Например можем да включваме в коментара на всички остарели имена думата OBSOLETE. Такъв коментар позволява в бъдеще лесно да обходим всички остарели имена чрез просто търсене на ключова дума. Освен това без такъв коментар в бъдеще програмистите могат да забравят, че даден метод или функция са били документирани като остарели.

Поздсказка

Често номерът на версията на библиотеките е от вида n.m. Ако новата версия е съвместима със старата, се увеличава младшият номер m, a версиите, които са несъвместими с предходните, имат версия от вида n.0.



[3] Тук под потребители на библиотеката се имат предвид програмистите, които я ползват. Крайните потребители нямат директно отношение към промяната на версията на дадена библиотека, защото техните програми просто ще продължат да използват старите библиотеки.