HappyPines Ответов: 3

В чем разница между функцией с параметром и функцией без параметра и каковы их преимущества?


Примеры:

//function with Parameters

  public function Name($fname, $lname) {

     return $fname . ' ' . $lname;

  }


//function without Parameters

  public $fname;
  public $lname;


  public function Name() {

    return $this->fname . ' ' . $this->lname;

  }


Что я уже пробовал:

пожалуйста, просто ответьте на мой вопрос, это довольно обидно, чтобы быть проигнорированным, поэтому, пожалуйста, не имеет значения, является ли он точным или нет, я просто хочу, чтобы идея, концепции об этом. так что, пожалуйста, не будь высокомерным гордым ослом. [ОТРЕДАКТИРОВАННЫЙ]

CPallini

- так что, пожалуйста, не будь высокомерным гордым ослом."
Прости?!

Leo Chapiro

Может быть, плохой опыт на других форумах, я не могу себе представить, что это был кто-то из нас :)

CPallini

Немного странно, как мера пресечения.

Leo Chapiro

Да, своего рода "агрессивная" защита. :)

Richard MacCutchan

- так что, пожалуйста, не будь высокомерным и гордым ослом."
Да, может быть, тебе стоит попробовать самому.

HappyPines

Извините за мое предыдущее заявление. Я задал далеко не всем форумам этот вопрос, я просто разозлился, но даже пример неполон, так что мне очень жаль, если я обидел некоторых из вас. очень жаль

HappyPines

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

//С
профиль класса {

публичных $имени;
public $lname;

публичная функция __construct($fname, $lname) {

$this->fname = $fname;
$this->lname = $lname;

}

полное имя публичной функции() {

верните $this->fname . "" . $this->lname;

}

}

$Happy = новый профиль("Happy", "Pines");
echo $Happy->полное имя();

//Без
профиль класса {

публичных $имени;
public $lname;

публичная функция __конструкция() {

}

полное имя публичной функции() {

верните $this->fname . "" . $this->lname;

}

}

$Happy = новый профиль;
$Happy->fname = "счастливый";
$Happy->lname = "сосны";
echo $Happy->полное имя();

3 Ответов

Рейтинг:
25

CHill60

Далее к другим решениям но подхватывая ваш комментарий

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

Это очень узкий взгляд на использование функций и обычно означает, что вы иметь иметь экземпляр класса для того, чтобы делать что-либо с функциями. Но наличие статических "вспомогательных" классов также может принести свои собственные проблемы. Есть хорошая дискуссия на эту тему здесь[^] - смотрите решение Марка Расмуссена.

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


Рейтинг:
1

Leo Chapiro

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

Если вы не используете параметры в своей функции, она очень "статична", так сказать.
Используя параметры, вы можете использовать свою функцию более универсально.

Представьте себе, что вы хотите написать функцию, которая складывает два целых числа.
Не проще ли использовать эти два целых числа в качестве параметров функции?


Рейтинг:
0

OriginalGriff

Просто: функция с параметрами может работать с данными полностью внутренне, она не полагается на внешние значения.
Подумайте об этом так - если вы написали функцию добавления, то написание ее без параметров делает ее неуклюжей в использовании:
1) нагрузка левую значение в переменная1
2) Загрузите нужное значение в variable2
3) функция вызова.
С параметрами это намного чище:
1) вызов функции, передающей левое и правое значения.

Это также означает, что рекурсивные функции могут работать: где функция определяется в терминах самой себя:

factorial (n): where n > 1 then n * factorial(n - 1) else 1
Сделать это с переменными намного сложнее, потому что вам нужно сохранить значение n в стеке какой-то формы самостоятельно, чтобы не испортить предыдущие воплощения.