Хорошей практикой является создание локальной переменной и присвоение значения поля - PullRequest
0 голосов
/ 14 января 2020

Предположим, у нас есть класс с полем x. Это тип значения , а не сущность (скажем, int или string). Мы создаем метод экземпляра и используем поле, не меняя его значения.

Является ли хорошей практикой создание новой локальной переменной и присвоение ей значения x? Рассмотрим следующий пример в псевдокоде:

private instance-method(n) {
  const float x = this.x
  float y = x * x + math.sin(x)
  y += this.monte-carlo(this.space, x, n)
  this.result.y = y
}

Я мог бы вместо этого использовать this.x * this.x + math.sin(this.x), но я думаю, что он менее читабелен, поскольку слишком много this слов . С другой стороны, это дополнительная строка кода , которая не приносит много пользы. А что касается принуждения x к постоянству, в большинстве языков мы можем заставить его в любом случае другими способами.

Каковы плюсы и минусы такого подхода? Это хорошая практика? Делает ли это код более читабельным или менее читаемым?

Ответы [ 2 ]

0 голосов
/ 14 января 2020

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

Я думаю, что этот ответ помогает подвести итог:

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

https://softwareengineering.stackexchange.com/questions/339384/should-we-eliminate-local-variables-if-we-can

0 голосов
/ 14 января 2020

В общем, нет, обычно это не очень хорошая практика. Мне любопытно: какой язык вы используете? Самые распространенные языки программирования позволяют вам ссылаться на переменную-член, не требуя «this». ... и я не знаю ни одного, позволяющего использовать дефис в имени переменной или функции.

...