Лучше ли дать функции дополнительный параметр или сделать параметр статическим? - PullRequest
1 голос
/ 24 мая 2019

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

Вот последний код (kotlin), который заставил меня задуматься над этой проблемой, но я часто сталкивался с этой проблемой на разных языках.

tailrec fun getAncestor(ind: Int, parent: IntArray): Int {
        if (parent[ind] == ind) return ind else return getAncestor(parent[ind], parent);
}

Что лучше сделать родительской статической переменной, а не иметь ее в качестве параметра метода? (Предположим, что каждый раз, когда вызывается этот метод, второй параметр будет одним и тем же. Обычно я пишу только короткие 100-строчные файлы кода для конкурентного программирования, поэтому нет никаких шансов, что метод будет повторно использован с другим вторым параметром)

Ответы [ 2 ]

1 голос
/ 30 мая 2019

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

1 голос
/ 24 мая 2019

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

...