2009-02-09 40 views
13

Có quy ước đặt tên/đặt tên "chính thức" cho F # không?Quy ước đặt tên F #

Tôi luôn nghi ngờ của việc sử dụng C# phong cách hay không:

Class.MyFunctionName or Module.my_function_name 

Trong F # bạn có nghĩa là để trộn lớp BCL và F cái # thư viện: họ có vỏ khác nhau và mã trông rất xấu xí.

Trả lời

19

Vâng, có sự nhầm lẫn, bởi vì F # đã chuyển từ OCaml để NET trong những năm qua. Về cơ bản, các quy ước đặt tên là "thay đổi đột phá" - mã cũ không phù hợp với mã mới.

Tuy nhiên, CTP tháng 5 năm 2009 đã giải quyết được vấn đề.

Các Release Notes nói ...

Thư Viện Tiêu chuẩn Quy ước đặt tên

Các quy ước đặt tên áp dụng cho các thư viện # F như sau:

  • Tất cả .NET và F # Mã OO sử dụng PascalCase theo nguyên tắc .NET hiện tại

  • Các toán tử lập trình hàm F # như List.map được sử dụng trong mã thực hiện nội bộ F #. Loại mã này sử dụng camelCase cho tên nhà điều hành

  • Không được sử dụng dấu gạch dưới.

Vì vậy, câu hỏi của bạn ...

Class.MyFunctionName or Module.my_function_name 

Câu trả lời là

Class.MyFunctionName và Module.MyFunctionName

(áp dụng quy tắc 1 ở trên).

Vẫn còn một số nhầm lẫn bằng cách so sánh với toán tử lập trình F # (ví dụ: List.averageBy), nhưng mã F # sản xuất nên sử dụng CamelCase và do đó trông giống như mã .Net của mọi người. Nếu nghi ngờ, hãy kiểm tra số sample code cho CTP.

(Cá nhân tôi like_the_caml_style, nhưng tôi sẽ phải GetOverThat)

+1

Cập nhật - trong bản phát hành mới nhất, các chức năng to_type đã bị xóa theo ưu tiên của TypeType – Benjol

+0

Cảm ơn bạn. Để đơn giản, tôi đã xóa văn bản đề cập đến chúng. –

1

Từ những gì tôi đã thấy từ hubfs.com và các nguồn khác, kết hợp của nó từ .net và OCaml.

Tôi hy vọng họ chuyển sang một trong hai và không có hai công ước khác nhau và là Microsoft tôi chắc chắn họ sẽ đi với phong cách net dot.

3

Bất cứ điều gì chính thức: Tôi nghĩ "chưa hoàn toàn", nhưng bất cứ khi nào VS 2010 đạt Beta1 bạn có thể sẽ thấy thư viện F # ở dạng gần như cuối cùng, và sẽ có một số thay đổi liên quan đến CTP. F # có lẽ sẽ luôn là tâm thần phân liệt hơn so với những người anh em họ .NET cũ của nó, vì lịch sử của nó.

+0

Hi Brian, điều gì làm bạn có ý nghĩa bởi "F # có thể sẽ luôn luôn được nhiều hơn một chút tâm thần phân liệt hơn người anh em họ NET cũ của nó, vì lịch sử của nó"? Cảm ơn. –

+2

Lịch sử: F # có nguồn gốc từ OCaml, và F # vẫn giữ lại một lõi mà phần lớn là nguồn tương thích với OCaml. Nhưng OCaml có quy ước đặt tên khác với .Net. Vì vậy, F # được kéo theo hai hướng khác nhau. – Brian

0

Không chắc chắn có bất kỳ giải pháp thực sự nào. Có vẻ như có lẽ mã OCaml-ish có thể giữ lại một số tên của nó, tức là, các phương thức mô-đun chữ thường, trong khi các thành viên OO sẽ đi theo kiểu .NET.

1

Sự hiểu biết và cách sử dụng hiện tại của tôi là các mô đun/hàm tĩnh có chữ thường và hàm 'instance' có chữ hoa.

Sửa không phải là một câu trả lời cho câu hỏi này, nhưng có liên quan: F# Formatting conventions bởi Don Syme

Các vấn đề liên quan