Obsolete

15 авг. 2012 г. | | |

В одном небольшом, но сложном проекте, в неком простом, но важном классе жил-был обычный, но востребованный метод. Шло время, старые баги закрывались, добавлялись новые фичи, и настал день, когда метод устарел. Однако несколько классов, написанных другим разработчиком,  использовали его для своих тёмных делишек. “Разберусь с этим потом,” - подумал создатель метода, - “есть много дел поважне, чем эта ерунда,” Может быть, и закончилась бы эта история хэппи эндом, если б не ошибки в данных, которые начали материализовываться самым загадочным образом. Вот тогда-то и вспомнил хозяин метода про свой должок...

В ситуациях, когда метод устаревает, но его использует клиентский код, очень хорошо использовать атрибут Obsolete [MSDN]:

[System.Obsolete()]
public void SomeMethod()
{
           /* ... */
}

Intelliscense, завидя метод с таким атрибутом, будет всячески сигнализировать пользователю, что метод устарел:



А студия будет генерировать Achtung Warning в Error List и куда только можно:

Можно добавить сообщение для потомков, почему этот метод устарел, и что нужно исользовать вместо него:

А можно пойти дальше, если всё совсем плохо, и считать использование устаревшего метода ошибкой:

При таком подходе разработчик, использующий устаревший метод, не сможет скомпилировать код и придёт к хозяину метода с матюгами вопросами.  

Мораль сей басни: плохо забывать про долги, ведь рано или поздно придётся платить по счетам, разница только в набежавших процентах.

0 коммент.:

Отправить комментарий