2011-09-30 7 views
-2

Какой из двух сегментов кода ниже вы предпочитаете? Зачем? Существуют ли какие-либо обстоятельства, когда другое предпочтительнее? Можете ли вы сделать какие-либо дальнейшие улучшения?Улучшение метода при доступе к данным через ADO.NET

i. 
     private int GetSize(string deptName) 
     { 
      QueryHelper dqh = new QueryHelper(); 
      return dqh.GetDataSet("sp_GetDeptSize",deptName).Tables[0].Rows[0]["Size"]; 
     } 

    ii. 
     private int GetSize(string deptName) 
     { 
      QueryHelper dqh = new QueryHelper(); 
      DataSet ds = dqh.GetDataSet("sp_GetDeptSize", deptName); 
      DataTable dt = ds.Tables[0]; 
    DataRow dr = dt.Rows[0]; 
    int size = dr["Size"]; 
      return size; 
     } 

Обратите внимание, что QueryHelper является нестандартным.

Мой ответ на это: Я предпочитаю метод i, который является более кратким. Кажется, что метод ii не является предпочтительным ни при каких обстоятельствах.

Мне нужен совет по дальнейшему совершенствованию метода i, и идея была бы очень оценена.

+0

good pos at: http://codereview.stackexchange.com/ –

ответ

1

Эти два метода, которые вы указали, на 99% идентичны. Разногласия - дело вкуса.
Оба по-прежнему нуждаются в отливке до int.

Я предпочел бы пропуская DataSet и использовать Command.ExecuteScalar()

+0

Оба метода недостаточно хороши! Твоя идея кажется мне хорошей. – Pingpong

0

Учитывая код, я буду говорить Метод 2 лучше, как вы должны NULL проверить все, прежде чем пытаться получить доступ.

что делать, если набор данных NULL ?. Метод 1 будет ошибочным.

Что делать, если в наборе данных нет таблицы? Опять метод 1 будет ошибочным.

Что делать, если есть стол, но нет строки? Опять метод 1 будет ошибочным.

+1

Так будет метод 2, так как он не проверяет нуль - но по крайней мере вы получите номер строки в отладочных сборках. – Joe

+0

Оба метода недостаточно хороши! Необходимо совершенствование. – Pingpong

+0

Спасибо, Джо. Интересно, будет ли метод 1 работать одинаково, если я разбиваю каждый метод на каждую строку. – Pingpong

Смежные вопросы