2011-11-05 33 views
7

Trong Mathematica được xây dựng trong Ký hiệu bắt đầu bằng chữ in hoa. Do đó nó được chấp nhận thực hành để không bắt đầu người dùng tạo ra tên biểu tượng với chữ in hoa.Chữ in hoa cho các mẫu có tên

Hạn chế này nên được mở rộng đến các khía cạnh khác của cú pháp như thế nào? Thực tiễn tốt có yêu cầu không sử dụng chữ hoa cho mẫu có tên trong biểu thức SetDelayed hoặc RuleDelayed (nơi các tên như vậy được bản địa hóa) không?

Tôi nghĩ rằng thủ đô mở rộng không gian tên theo cách hữu ích và phân biệt trực quan giữa chữ thường L và 1, ví dụ. Họ cũng cho phép các đối số được đặt tên theo kiểu sách giáo khoa.

Nếu các ký hiệu mới được giới thiệu trong các phiên bản sau, các patters được đặt tên sẽ thay thế các mã này và mã hiện tại không được ngắt.

Con là mơ hồ nếu các tên hiện có như ND được sử dụng, nhưng tôi cảm thấy rằng cả ngữ cảnh sử dụng và cú pháp cú pháp FrontEnd đều làm giảm thiểu điều này.

+0

+1 Nhưng 1 nghĩ 1owercase L dễ phân biệt với 1 nếu tên của bạn đủ mô tả. Bên cạnh đó, việc sử dụng mở rộng vùng tên cần được xem xét cẩn thận: đặt tên cho myboa là symbo1 và một MyHome khác là một công thức nấu ăn c1assica1 ... –

+0

@belisarius Vì tôi thích mã hóa, hầu hết tên mẫu của tôi là một ký tự đơn, do đó 'l' và' 1' khá giống nhau. Tương tự như vậy, chắc chắn tôi sẽ nhầm lẫn các ký hiệu trong 'f [A_, a_]: = ...'. Được sử dụng trên toàn cầu Tôi đồng ý với bạn, và tôi làm cho tên toàn cầu của tôi tiết lộ chi tiết hơn, nhưng trong trường hợp cụ thể này, tôi tự hỏi liệu tôi có thể thay đổi thực hành của mình hay không. –

+0

Trên phản ánh "nhất" là không chính xác, nhưng nhiều là các chữ cái duy nhất, đặc biệt là trong ngắn, cũng đóng gói các quy tắc thay thế. Xem [câu trả lời này] (http://stackoverflow.com/questions/5644801/tweaking-style-attributes-of-existing-graphics-objects-in-mathematica/5645482#5645482); Tôi muốn thay đổi 'l: Line [__]' thành 'L_Line' trong mã đó. –

Trả lời

2

Đây là một thực tế được chấp nhận mà tôi không chấp nhận!

Tôi đang đề cập đến các gói, để sử dụng cho cá nhân hoặc bên thứ ba. Nói chung, tôi muốn công việc hoàn thành của mình trở nên không thể phân biệt nhất có thể từ chất lượng lý tưởng (WRI), giao diện. Điều này bao gồm các tên mô tả dài cho các lệnh của tôi, với tất cả các quy ước viết hoa được WRI sử dụng.

Tất nhiên các gói của tôi là - tại thời điểm này - không ở đâu gần chất lượng WRI, nhưng ít nhất tôi đang cố gắng tích hợp chúng tốt nhất có thể với chức năng tiêu chuẩn của MMA. Và điều này bao gồm các lệnh viết hoa.

Trong khi phát triển, đánh dấu cú pháp cảnh báo cho tôi về các xung đột có thể xảy ra với các hàm MMA tiêu chuẩn, vì vậy tôi có thể thực hiện các hành động thích hợp. Tất nhiên các lệnh và gói của tôi có thể xung đột với các phiên bản tương lai của MMA, nhưng không có gì kéo dài mãi mãi và nếu một lệnh MMA tương lai có tên và chức năng tương tự, tôi sẽ chuyển sang chức năng tiêu chuẩn với ít hoặc không thay đổi đặt tên.

Bên cạnh đó, tôi thấy hấp dẫn hơn nhiều khi sử dụng chữ in hoa để phân biệt các lệnh gói từ các biến tạm thời khiêm tốn hơn. Nếu bạn muốn xem một số mã không rõ ràng/không hấp dẫn, chỉ cần nhìn vào bất kỳ mã Maple nào. Về các biến mẫu, tôi cố gắng cung cấp các tên mẫu có ý nghĩa, chủ yếu là ngắn, không có chữ hoa, do đó người dùng có thể đoán bằng cách xem mẫu Ctrl/Cmd-K loại đầu vào nào được mong đợi trong các lệnh gói của tôi.

+0

Tôi muốn nói rằng không nên sử dụng tên viết hoa trong công việc/sổ ghi chép tương tác để tránh các xung đột * ngẫu nhiên * với built-in * hoặc * với các ký hiệu gói. Nếu biểu tượng gói được viết hoa sẽ hỗ trợ người dùng trong này, không cản trở cô. Vì vậy, có, tôi cũng thích các gói để có tên biểu tượng viết hoa. – Szabolcs

+1

Theo Roman Maeder, sử dụng tên viết hoa cho các chức năng công cộng trong các gói * là * một thực tế được chấp nhận. Đối với các gói, tên viết hoa không có vấn đề gì, vì tên đầy đủ (khác) là khác nhau, vì các ngữ cảnh khác nhau ('' Hệ thống '' 'so với ngữ cảnh của gói), do đó, các xung đột hiển thị chính chúng như các thể hiện của bóng. Tránh che bóng là một vấn đề khác. –

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