повторное использование переменных - PullRequest
8 голосов
/ 27 сентября 2011

Я работаю над проектом, который должен вызывать один и тот же метод несколько раз, но с разными аргументами.

Могу ли я использовать одну и ту же переменную или мне нужно объявить другую переменную?

Например:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(domains["ServiceLogin"]);
            req.Method = "GET";
            req.Referer = "Mozilla/5.0 (X11; Linux i686; rv:6.0) Gecko/20100101 Firefox/6.0";
            req.CookieContainer = new CookieContainer();
            HttpWebResponse response = (HttpWebResponse)req.GetResponse();
            CookieCollection cookies = response.Cookies;
            response.Close();

и т. Д.

Использовать ли переменную req или объявить req2, например

  req = (HttpWebRequest)WebRequest.Create(domains["ServiceLogin"]);
  req.Method = "POST";
  req.CookieContainer = myCookieContainer;

Как лучше всего/ практика, чтобы сделать это?

Ответы [ 9 ]

19 голосов
/ 27 сентября 2011

Локальные переменные дешевы;нет никакой непреодолимой выгоды повторного их использования без необходимости.Поэтому: напишите свой код так, чтобы каждая переменная имела четкую цель , и эта цель описывается ее именем.Как только имя каждой переменной описывает ее назначение, станет более понятно, нужна ли вам одна переменная или несколько переменных.

5 голосов
/ 27 сентября 2011

Я бы пошел объявить новую переменную. Таким образом, если кто-то быстро посмотрит на код, он не будет сбит с толку или будет вынужден потратить много времени на то, чтобы понять, что это два разных запроса.

5 голосов
/ 27 сентября 2011

Вы можете повторно использовать переменную - хотя вы можете подумать не делать этого и назвать их каждый, чтобы вы знали, какова ответственность каждого запроса, т. Е. reqLogin и reqData. В долгосрочной перспективе это делает код более читабельным, на мой взгляд.

4 голосов
/ 27 сентября 2011

Переменные дешевы, кроме случаев, когда они сбивают с толку. Одной из наиболее важных характеристик переменной является ее область действия, которая запутывается при повторном использовании. Не сосредотачивайтесь на повторном использовании чего-либо, потому что оно имеет тот же тип; это очень похоже на повторное использование салфетки (eew!). Сосредоточьтесь на проблеме, которую они решают (пролить мою рубашку против моей подруги).

4 голосов
/ 27 сентября 2011

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

var getDataRequest = CreateGetDataRequest();

var postRequest = CreatePostRequest();

или, может быть, это один метод с несколькими параметрами

3 голосов
/ 29 сентября 2011

Я буду категоричен: никогда повторно используйте переменные, подобные этой.Это предотвращает надлежащую изоляцию проблем и затрудняет чтение и изменение кода.Подумайте, хотите ли вы реорганизовать код позже (вы уже должны это сделать) и инкапсулируйте каждый фрагмент в свой собственный метод.Повторное использование одной и той же переменной просто мешает ...

2 голосов
/ 27 сентября 2011

ИМХО, в этом случае нет лучшей практики. Код должен быть удобочитаемым и удобным для вас и будущих программистов.

1 голос
/ 27 сентября 2011

Это действительно зависит от ответа на вопрос "Важно ли, чтобы я все еще имел ссылку на req позже?" Другими словами, вам когда-нибудь нужно снова вызывать что-либо из req? Если ответ «нет», не объявляйте новую переменную. Если ответ «да», сохраните все запросы в List<HttpWebRequest> или в другой структуре данных, которая может управлять запросами для вас.

1 голос
/ 27 сентября 2011

Если они не перекрываются, вы также можете использовать одну и ту же переменную. Это не имеет никакого значения, так что выбирайте то, что наиболее читабельно.

Вы создаете новый объект при каждом вызове CreateWebRequest, вот что имеет значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...