2010-05-07 12 views
5

xem xét một tiêu chuẩn C# 'chức năng'bạn có gọi chúng là hàm, thủ tục hoặc phương pháp không?

public void foo() { // một số mã }

Trong c hoặc C++ này được gọi là một 'chức năng' - ngay cả khi chụp không có tham số và trả về không có giá trị. Trong một ngôn ngữ khác có thể nó sẽ là một 'thủ tục'. Trong định hướng đối tượng, nó sẽ được gọi là 'phương pháp' nếu một thành viên của lớp. Điều gì sẽ là thuật ngữ chính xác để sử dụng trong C#?

Trả lời

1

Tôi nghĩ rằng trong C# gọi nó là một phương thức vì C# là ngôn ngữ hướng đối tượng.

+0

Còn chức năng JavaScript thì sao? Chúng ta có nên gọi nó là một phương pháp nữa không? – Feyyaz

0

Tôi nghĩ rằng phương pháp là thuật ngữ chính xác, nhưng tôi nghi ngờ bạn sẽ nhận được bất kỳ cái nhìn hài hước nào khi sử dụng bất kỳ tên được đề xuất nào khác.

1

Nếu "Hàm" là một phần của lớp tôi gọi đó là phương thức.

Nếu tôi viết mã bằng C (tức là trong thành ngữ thủ tục hoặc không phải OO), tôi gọi nó là hàm.

Cá nhân tôi không sử dụng các proceedure từ để chỉ một "Function"

0

Kể từ khi tôi đã dành rất nhiều thời gian với ADA tôi sẽ gọi đó là một "thủ tục" vì nó không có giá trị trả về. Nếu nó có giá trị trả về, tôi sẽ gọi nó là "hàm".

Tôi chưa bao giờ thấy điểm nói "Phương pháp", mặc dù đó có thể là thuật ngữ chính xác để sử dụng khi nói về các hàm/thủ tục là thành viên của một lớp. Không bao giờ thực sự nhìn thấy việc sử dụng một thuật ngữ khác cho cùng một điều.

4
  • Phương thức: chức năng của lớp học.
  • Chức năng: chức năng ra khỏi một lớp, chỉ có thể bằng các ngôn ngữ đầy đủ đối tượng (như C++, C, v.v.)
  • Quy trình: hàm trả về không có gì/void. Tôi personnaly không thích từ này, tôi muốn sử dụng 'chức năng'

Bạn lựa chọn =)

Sửa: Chỉ cần được chính xác hơn, phương pháp, chức năng và thủ tục là OOP lời để mô tả một chương trình con. Một số ngôn ngữ có từ vựng riêng của họ như "predicate" trong Prolog, hoặc "constructor" trong C++/C#/Java, hoặc thậm chí "property" trong C#.

+0

Một vị từ Prolog là xa một chương trình con. Ngôn ngữ với các chương trình con, các dẫn xuất Algol, bao gồm các câu lệnh bắt buộc cộng với các biểu thức. Tôi sẽ cho rằng một ngôn ngữ không có câu lệnh không thể có các chương trình con, mặc dù nó có thể có các hàm. Là "y = 2 * x + b" một chương trình con? Một chức năng? ;) –

+0

@Bạn đã đúng, đặc biệt là đối với Prolog. Tôi đoán chương trình con không được chiếm đoạt. Tôi có thể chỉnh sửa để xóa nó .. –

2

Chỉ cần để gây nhầm lẫn cho thêm tác phát hành: (từ C# Language Specification)

7.4 Function members
thành viên Chức năng là thành viên có chứa báo cáo thực thi. Các thành viên chức năng luôn là thành viên của các loại và không thể là thành viên của không gian tên.C# định nghĩa các loại sau đây của các thành viên chức năng:
* Phương pháp
* Thuộc tính
* Sự kiện
* Indexer
* khai thác người dùng định nghĩa
* constructors Instance
* constructor tĩnh
* Destructors

10. Classes
Một lớp là một cấu trúc dữ liệu có thể chứa các thành viên dữ liệu (hằng số và các lĩnh vực), thành viên chức năng (phương pháp, thuộc tính, sự kiện, bộ chỉ mục, các nhà khai thác, nhà thầu dụ, hàm hủy và nhà thầu tĩnh), và các loại lồng nhau. Các kiểu lớp hỗ trợ kế thừa, một cơ chế trong đó một lớp dẫn xuất có thể mở rộng và chuyên lớp cơ sở.

Vì vậy, "thành viên chức năng" hoặc "phương pháp" sẽ chính xác cho C#.

2

Phương pháp là OOP trừu tượng số. Chúng mô tả hành vi (một động từ) của một đối tượng. Chúng tương đương với một số chức năng và thủ tục của chương trình thủ tục. (các thuộc tính vv cũng là chức năng và thủ tục).

Vì vậy, chức năng là một chương trình trong chương trình trả về một số giá trị. Thủ tục là một chương trình trong chương trình làm điều gì đó. Phương thức, thuộc tính, v.v ... là cấp trừu tượng tiếp theo (được sử dụng trong OOP). Chúng được bao bọc xung quanh các chức năng và thủ tục.

1

Tôi nghĩ (trong Ada) rằng 'thủ tục' là thuật ngữ chính xác nói chung và 'hàm' là thủ tục được bảo đảm là không có tác dụng phụ, nghĩa là nó chỉ đọc và thao tác trên dữ liệu, và trả về nó, nhưng không viết bất cứ điều gì hoặc có bất kỳ 'tác dụng phụ' nào.

Tôi là một anh chàng Java dù sao, tôi gọi tất cả mọi thứ một chức năng mặc dù nó nên được gọi là một phương pháp.