Рефакторинг

20 окт. 2011 г. | | |

Сегодня наткнулась на такой вот метод:
Конечно, сразу заинтересовало, что делает VouchersSrv.GetCustomerAdressID():

Что же это получается? В цикле создается DataContext и делается чтение из таблицы _vouchers? Расточительно как минимум. Надо что-то с этим делать. 
Во-первых, метод GetCustomerAdressID() будто бы прилеплен сбоку. Надо перенести его в другой класс. Сначала нужно посмотреть, где ещё используется это метод ( Shift-F12 в VisualStudio). Отлично, в одном месте. Теперь, чтобы не создавать датаконтекст каждый раз, нужно метод сделать обычным, а не статичным, и вынести DataContext как закрытый член класса. Получилось вот так:


Очевидна маленькая проблема - контекст создали, а где мы его уничтожим? Конечно, GC подчистит, но на случай форс-мажора лучше реализовать IDisposable:

Ну и вот, что получилось в вызывающем методе:


0 коммент.:

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