Вы называете их функциями, процедурами или методами? - PullRequest
5 голосов
/ 07 мая 2010

рассмотрим стандартную c # 'функцию'

public void foo () { // некоторый код }

В c или c ++ это называется «функцией» - даже если она не принимает параметров и не возвращает значений. На другом языке, возможно, это будет «процедура». В объектно-ориентированной речи это будет называться «методом», если член класса. Какой термин будет правильным для использования в c #?

Ответы [ 8 ]

4 голосов
/ 07 мая 2010
  • Метод: функция класса.
  • Функция: функция вне класса, возможна только в языках полного объекта (например, C ++, C и т. Д.)
  • Процедура: функция, которая не возвращает ничего / пустота. Мне лично это слово не нравится, я бы предпочел использовать «функцию»

Сделай свой выбор =)

Редактировать : Если быть более точным, метод, функция и процедура - это ООП слова для описания подпрограммы. Некоторые языки имеют свой собственный словарь, такой как «предикат» в Прологе, «конструктор» в C ++ / C # / Java или даже «свойство» в C #.

2 голосов
/ 07 мая 2010

Метод ООП абстракция термин.Они описывают поведение (глагол) объекта.Они эквивалентны некоторым функциям и процедурам процедурного программирования.(свойства и т.д. также являются функциями и процедурами).

Итак, функция - это программа в программе, которая возвращает некоторые значения.Процедура - это программа внутри программы, которая что-то делает.Методы, свойства и т. Д. Являются следующим уровнем абстракции (используется в ООП).Они обернуты вокруг функций и процедур.

2 голосов
/ 07 мая 2010

Просто чтобы еще больше запутать проблему: (из спецификации языка C #)

7.4 Члены функции
Члены функции - это члены, которые содержат исполняемые операторы.Члены функции всегда являются членами типов и не могут быть членами пространств имен.C # определяет следующие категории членов функции:
* Методы
* Свойства
* События
* Индексаторы
* Пользовательские операторы
* Конструкторы экземпляров
* Статические конструкторы
* Деструкторы

И

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

Таким образом, «член-функция» или «метод» будет правильным для C #.

1 голос
/ 07 мая 2010

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

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

1 голос
/ 07 мая 2010

Если «Функция» является частью класса, я называю это методом.

Если я кодировал на C (то есть в процедурной или не OO-форме), я называю это функцией.

Лично я не использую слово «продолжить» для обозначения «функции»

1 голос
/ 07 мая 2010

Я думаю, что в C # это называют методом, потому что C # - объектно-ориентированный язык.

0 голосов
/ 07 мая 2010

Поскольку я провел много времени с ADA, я бы назвал это «процедурой», поскольку она не имеет возвращаемого значения. Если бы оно имело возвращаемое значение, я бы назвал его «функцией».

Я никогда не видел смысла говорить «Метод», хотя это, скорее всего, правильный термин, который следует использовать при разговоре о функциях / процедурах, которые являются членами класса. Никогда в действительности не видел использование еще одного термина для того же самого.

0 голосов
/ 07 мая 2010

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

...