【问题标题】:do you call them functions, procedures or methods?你称它们为函数、过程还是方法?
【发布时间】:2010-05-07 07:01:56
【问题描述】:

考虑一个标准的 c# 'function'

公共无效 foo() { //一些代码 }

在 c 或 c++ 中,这称为“函数”——即使不带参数也不返回值。在另一种语言中,这可能是一个“程序”。 在面向对象的说法中,如果是类成员,它将被称为“方法”。 在 c# 中使用的正确术语是什么?

【问题讨论】:

    标签: oop theory


    【解决方案1】:
    • 方法:类的函数。
    • 函数:类外的函数,仅适用于全对象语言(如 C++、C 等)
    • 过程:函数不返回任何内容/无效。我个人不喜欢这个词,我宁愿用'function'

    做出你的选择 =)

    编辑:更准确地说,方法、函数和过程是描述子程序的 OOP 词。有些语言有自己的词汇表,例如 Prolog 中的“谓词”,C++/C#/Java 中的“构造函数”,甚至 C# 中的“属性”。

    【讨论】:

    • Prolog 谓词远非子例程。带有子例程的语言(Algol 派生词)由命令式语句和表达式组成。我认为没有语句的语言不能有子例程,即使它可以有函数。 “y = 2 *x + b”是子程序吗?一个函数? ;)
    • @Heath 你是对的,特别是对于 Prolog。我猜子程序没有被占用。我可能会编辑删除它..
    【解决方案2】:

    只是为了进一步混淆问题:(来自 C# 语言规范)

    7.4 Function members
    函数成员是包含可执行语句的成员。函数成员始终是类型的成员,不能是命名空间的成员。 C# 定义了以下类别的函数成员:
    * 方法
    * 属性
    * 活动
    * 索引器
    * 用户自定义运算符
    * 实例构造函数
    * 静态构造函数
    * 析构函数

    10. Classes
    类是可能包含数据成员(常量和字段)、函数成员(方法、属性、事件、索引器、运算符、实例构造函数、析构函数和静态构造函数)和嵌套类型的数据结构。类类型支持继承,这是一种派生类可以扩展和专门化基类的机制。

    所以“函数成员”或“方法”对于 C# 来说是正确的。

    【讨论】:

      【解决方案3】:

      方法是OOP 抽象术语。它们描述对象的行为(动词)。 它们等价于过程编程的一些功能和过程。 (属性等也是函数和过程)。

      因此,函数是程序中返回一些值的程序。 过程是程序中的一个程序,它做某事。 方法、属性等是下一层抽象(在 OOP 中使用)。它们围绕着函数和过程。

      【讨论】:

        【解决方案4】:

        我认为在 C# 中将其称为方法,因为 C# 是面向对象的语言。

        【讨论】:

        • JavaScript 函数怎么样?我们也应该称它为方法吗?
        【解决方案5】:

        如果“函数”是类的一部分,我将其称为方法。

        如果我在 C 中编码(即在过程或非 OO 习语中),我将其称为函数。

        我个人不使用过程一词来指代“功能”

        【讨论】:

          【解决方案6】:

          我认为(在 Ada 中)“程序”通常是正确的术语,“函数”是保证没有副作用的程序,也就是说,它只读取数据并对其进行操作, 并返回它,但不写任何东西或有任何“副作用”。

          不管怎样,我是一个 Java 人,我把所有东西都称为函数,即使它应该称为方法。

          【讨论】:

            【解决方案7】:

            我认为方法是正确的术语,但我怀疑你会因为使用任何其他建议的名称而受到任何有趣的怒视。

            【讨论】:

              【解决方案8】:

              由于我在 ADA 上花了很多时间,我将其称为“程序”,因为它没有返回值。如果它有返回值,我会称它为“函数”。

              我从来没有看到过说“方法”的意义,尽管这很可能是在谈论作为类成员的函数/过程时使用的正确术语。从来没有真正看到过使用另一个术语来表示同一件事。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-02-22
                • 2013-05-02
                • 2015-02-06
                • 1970-01-01
                • 2023-03-20
                • 1970-01-01
                • 2020-11-22
                • 2014-08-02
                相关资源
                最近更新 更多