2012-01-03 49 views
9

Vì vậy, tôi đang cố gắng chuyển sang ký hiệu PEP8 (từ một ký hiệu CamelCase khá cá nhân) và tôi tự hỏi các bạn xử lý các trường hợp các hàm/biến hiện có sẽ bị ghi đè như thế nào?Quy ước đặt tên biến số

ví dụ: có một cái gì đó như:

open, high, low, close, sum = row 

sẽ ghi đè các hàm "mở" và "tổng". Trước tiên, nếu tôi không sử dụng một IDE tốt, tôi thậm chí sẽ không nhận thấy rằng tôi đã chỉ ghi đè các chức năng cơ bản quan trọng. Thứ hai, bạn sẽ đặt tên cho các biến thay thế như thế nào? Trong ví dụ này, tôi đã sử dụng các ứng dụng hungarian và sẽ không gặp phải bất kỳ vấn đề tiềm ẩn nào cả.

Cảm ơn!

Trả lời

8

Tại sao không chỉ chọn tên không xung đột? Chẳng hạn như opening_price, closing_pricetotal nếu đó là những gì chúng đại diện. Trong khi nó có thể đủ điều kiện không gian tên như trong các trả lời khác, chắc chắn rằng không nên cần thiết cho các biến địa phương. Bất cứ ngôn ngữ nào bạn lập trình trong đó là công việc của bạn để biết các từ dành riêng; không có nhiều người trong số họ.

8

Tôi sẽ sử dụng open_sum_.

+11

Mặc dù đây là những gì PEP8 gợi ý, tại sao không chỉ chọn tên không xung đột? Chẳng hạn như 'opening_price',' closing_price' và 'total' nếu đó là những gì chúng đại diện. Trong khi nó có thể đủ điều kiện không gian tên như trong các trả lời khác, chắc chắn rằng không nên cần thiết cho các biến địa phương. Bất cứ ngôn ngữ nào bạn lập trình trong đó là công việc của bạn để biết các từ dành riêng; không có nhiều người trong số họ. –

+1

@SideshowBob Tôi nghĩ bạn nên gửi bình luận của bạn như một câu trả lời, bởi vì nó là, trong tâm trí của tôi, giải pháp tốt nhất, đơn giản nhất, rõ ràng nhất và thành ngữ nhất đối với vấn đề của OP. – Jeet

+0

guys, cảm ơn rất nhiều - Tôi sẽ đi với giải pháp của Sideshow Bob. Lý do ban đầu tại sao tôi không làm điều này là bởi vì tôi sử dụng các biến này thường xuyên như vậy bằng cách sử dụng một cái gì đó như 'open_price' ở khắp mọi nơi cuối cùng sẽ nhìn lộn xộn. Vì vậy, vì lý do chính xác này, tôi sẽ chỉ sử dụng 'o, h, l, c' thay vì các biến này chỉ được sử dụng cục bộ trong các hàm và chúng thường được sử dụng thường xuyên để giữ chúng càng ngắn càng tốt. Hãy cho tôi biết nếu bạn không đồng ý. Cảm ơn! – Muppet

5

Trong trường hợp cụ thể này, tôi muốn sử dụng số namedtuple. Điều này sẽ biến những tên đó thành những tên đủ điều kiện (data.open, data.low, v.v.).

from collections import namedtuple 
Data = namedtuple('Data', ['open', 'high', 'low' 'close', 'sum']) 

data = Data(*row) 

Điều này sẽ loại bỏ khả năng xảy ra xung đột tên với chức năng tích hợp và có thể cải thiện khả năng đọc tổng thể trên đường đi.

3

Nếu họ là tất cả các giá trị từ cùng một tên miền, bạn có thể sử dụng một từ điển:

params = ('open', 'high', 'low', 'close', 'sum') # defined once 

val = dict(zip(params, row)) # for each row 

# val == {'open': 12, 'high': 34, 'low': 56, 'close': 78, 'sum': 90} 

Sau đó, bạn có thể truy cập trực tiếp: val['open']. Bạn có thể lặp qua chúng val.iteritems() và cứ tiếp tục như vậy.

0

Pep8 khuyến nghị sử dụng dấu gạch dưới, tuy nhiên cũng có đề cập rằng trong các trường hợp có thể sử dụng từ đồng nghĩa cho biến sẽ là ý tưởng tốt hơn.

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