С Delphi вы чаще используете временные переменные, чем с другими языками? - PullRequest
7 голосов
/ 21 июля 2009

Поскольку Delphi заставляет вас пройти весь путь до раздела var метода для объявления локальной переменной, не нарушаете ли вы "Закон Кудряшки" (повторное использование переменных) чаще, чем вы? В колледже? (Если, конечно, вы не запрограммировали Паскаля в колледже).

Если это так, что вы делаете, чтобы избавиться от этой привычки, особенно в функциях, где вам нужно получить и / или установить большое количество свойств. Есть ли порог, в котором допустимо объявлять TempInt : Integer и TempStr : String. (Вы используете 'e' в T<b>e</b>mp иногда, а не в другое время?)

Ответы [ 11 ]

15 голосов
/ 21 июля 2009

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

Вот почему:

  • Небольшие методы (Рекомендуется сохранять методы и методы получения / установки свойств как можно более краткими).
    • Когда выполняется только одна вещь, не нужно повторно использовать переменные
    • Раздел var всегда отображается на экране.
  • Компилятор повторно использует хранилище по мере необходимости, поэтому повторное использование - это всего лишь ленивый кодер без повышения производительности.
  • Более новые версии Delphi имеют CTRL + SHIFT + V для объявления переменной, если мне лень.
  • Повторное использование переменных усложняет отладку - больше времени и усилий затрачивается на обслуживание, чем на разработку (для любого серьезного приложения), поэтому всегда нужно, чтобы облегчало обслуживание , даже если оно делает разработку немного сложнее.
  • Предпочитают определяемые пользователем типы , поэтому остаток на счете является конкретным типом, а не просто валютой. Это означает, что переменные в любом случае меньше для повторного использования в любом случае.
  • Для переменные цикла (общая повторно используемая переменная) используются меньше теперь, когда мы можем использовать для в и , пропуская итератор все вместе.
  • Мои переменные имеют описательных имен , поэтому не имеет смысла использовать их вне контекста.

Вообще говоря, мне нравится располагать все переменные вверху по той же причине, по которой мне нравится раздел интерфейса на моих устройствах. Это все равно, что иметь реферат на бумаге - дать мне общее представление о том, что происходит, без необходимости читать всю статью. Delphi может извлечь выгоду из возможности объявлять переменные во «внутренней области», например, внутри для цикла или других begin / end блоков, но я не знаю, насколько это отвлекает из чистоты и читабельности кода Delphi.

6 голосов
/ 21 июля 2009

Это просто вопрос дисциплины. Да, Delphi, вероятно, лучше обслужит внутреннее объявление переменных, но это не так уж важно. Просто обязательно назовите свои переменные в описательной форме, и тогда будет неудобно использовать их неправильно. И, как сказал Стефан Эггермонт, если ваши методы действительно становятся такими длинными, тогда это совсем другой запах кода.

5 голосов
/ 21 июля 2009

Я определенно склонен повторно использовать локальные переменные, такие как «Findex» (или просто «i»), если в подпрограмме есть несколько отдельных итеративных разделов. Думаю, это не самая лучшая практика, но я хотел бы думать, что действительно очевидно, где я это делаю, и, очевидно, использование не пересекается.

Обычно нет ничего сложного в том, чтобы вернуться к началу процедуры и ввести новые переменные, хотя я не знал о Ctrl-Shift-V (попробую это позже!).

Будет интересно посмотреть, что говорят все остальные. : -)

5 голосов
/ 21 июля 2009

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

3 голосов
/ 21 июля 2009

Я не склонен повторно использовать локальные переменные в качестве общего правила безопасности. Я люблю новые живые шаблоны "var" в d2007 +. Просто введите var [tab], и появится всплывающая подсказка. Также проверьте Ctrl-Shift-D (другие упоминали Ctrl-Shift-V для локальных переменных), чтобы объявить поле.

2 голосов
/ 22 июля 2009

Вы можете разработать свой собственный стиль кодирования, который использует переменные по мере необходимости. Я обычно использую уникальные переменные (90%) с несколькими временными переменными (10%), когда это необходимо.

Это зависит от характера вар. Если это var для поддержки другого кода (счетчик циклов, построение строк SQL и т. Д.), То временный var, который вы можете использовать повторно, полезен. В этом случае ваши временные переменные полезны как «одноразовые» переменные в разделах кода. Просто добавьте комментарий к своим объявлениям var с указанием временных переменных.

т.е. // временные переменные используются повторно в соответствии с требованиями этой процедуры -> очистить / повторно инициализировать их после / перед использованием.

Кроме того, я избегаю временных переменных и никогда не использую их для хранения важных данных. Затем следует использовать уникальный var, чтобы избежать путаницы и сделать читабельность / поддержку кода более понятной.

2 голосов
/ 21 июля 2009

Объявление переменных очень просто - иногда они создаются автоматически (шаблон цикла for), в других случаях вы можете просто использовать рефакторинг «Declare Variable» (или «Добавить локальную переменную», если вы используете MMX - как вы должен).

1 голос
/ 22 июля 2009

Ну, у Керли была хорошая мысль. Я грешник в этом отношении иногда. Обычно просто временная строковая переменная для удобства больше всего на свете.

Если честно, я никогда не думал об этом ... до сих пор. У меня нет проблем с тем, чтобы раздел VAR находился там, где он появился, начиная с Delphi 1.0.

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

1 голос
/ 21 июля 2009

Как давний пользователь Delphi (начиная с 1.0), это главное, что я ненавижу в Паскале. все другие современные языки поддерживают определение в месте использования, но Delphi продолжает использовать раздел var, а программисты Delphi продолжают использовать нелепые махинации, которые размахивают руками, чтобы оправдать его.

1 голос
/ 21 июля 2009

Я, вероятно, нашел бы, что это было бы большей проблемой, если бы не ярлык CTRL-SHIFT-V в качестве ярлыка для раздела VAR. Я не пишу здесь гигантские методы, но иногда они немного выходят из-под контроля (и я могу это оправдать, конечно), и это очень помогает. Я не уверен, что этот ярлык происходит от cnTools или GExperts, но они оба довольно полезны, и я бы порекомендовал их обоих.

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