June 21, 2006

И снова о том, как не надо делать

Продолжаю сталкиваться по работе с чужим кодом и каждый раз нахожу новые и новые перлы. На этот раз натолкнулся на код типа вот этого.

Hashtable hash = new Hashtable();
//...
// здесь заполняем hash
//...
int i = Convert.ToInt32( hash[ "some_key" ].ToString() );

Чтобы не выполнять десять операций, я сократил этот код до:

int i = (int)hash["some_key"];

Но не тут-то было...
Окаалось что заполнение хэша может произойти в двух разных местах. В упрощённом варианте это выглядело так:

// the first place
hash["some_key"] = 1;
// the second place
hash["some_key"] = "1";


А я то думал, зачем столько операций чтобы всего-то получить int из словаря и unbox его в настоящий int.

ЗЫ: А на MSDN Blogs в это время обсуждают спорный вопрос о том, стоит или не стоит делать catch(Exception).

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?