В одном небольшом, но сложном проекте, в неком простом, но важном классе жил-был обычный, но востребованный метод. Шло время, старые баги закрывались, добавлялись новые фичи, и настал день, когда метод устарел. Однако несколько классов, написанных другим разработчиком, использовали его для своих тёмных делишек. “Разберусь с этим потом,” - подумал создатель метода, - “есть много дел поважне, чем эта ерунда,” Может быть, и закончилась бы эта история хэппи эндом, если б не ошибки в данных, которые начали материализовываться самым загадочным образом. Вот тогда-то и вспомнил хозяин метода про свой должок...
В ситуациях, когда метод устаревает, но его использует клиентский код, очень хорошо использовать атрибут Obsolete [MSDN]:
[System.Obsolete()]
public void SomeMethod()
{
/* ... */
}
Intelliscense, завидя метод с таким атрибутом, будет всячески сигнализировать пользователю, что метод устарел:
А студия будет генерировать Achtung Warning в Error List и куда только можно:
Можно добавить сообщение для потомков, почему этот метод устарел, и что нужно исользовать вместо него:
А можно пойти дальше, если всё совсем плохо, и считать использование устаревшего метода ошибкой:
При таком подходе разработчик, использующий устаревший метод, не сможет скомпилировать код и придёт к хозяину метода с матюгами вопросами.
Мораль сей басни: плохо забывать про долги, ведь рано или поздно придётся платить по счетам, разница только в набежавших процентах.
0 коммент.:
Отправить комментарий