Ý nghĩa của #XXX trong nhận xét mã là gì?


126

Tôi đã thấy điều này rất nhiều trong mã, thậm chí vim đánh dấu nó là một trường hợp đặc biệt. #TODO#FIXMEhai dấu hiệu sửa lỗi khác vim nổi bật nhưng #XXXcó nghĩa là gì?


7
Câu hỏi là hỏi về codetag hoặc nhận xét các thực tiễn tốt nhất trong lập trình Python. Có thảo luận Đề xuất Nâng cao Python về chủ đề này. Câu hỏi xứng đáng được giữ lại trên SO. Nó có thể đã được nói tốt hơn một chút mặc dù.
nik

Câu trả lời:


140

XXXtrong một bình luận thường là một head-up. Nó có thể là:

  • Một cái gì đó không được thực hiện hoàn toàn chính xác.
  • Một cái gì đó nên được sửa chữa sau này.
  • Làm nổi bật một điểm có thể có vấn đề.
  • Một cái gì đó bạn không chắc chắn về, một câu hỏi.

Tôi đã thường được ưa thích một thẻ mô tả giống như FIXMEhoặc TODOhoặc HACK. XXXthường được sử dụng như là một bắt tất cả cho ở trên.

Tìm kiếm 'XXX' trên tham chiếu chéo mã FreeBSD là một ví dụ hay về nhiều cách sử dụng. Có hàng ngàn ...


Điều buồn cười là tôi tự mình sử dụng cái này. Về cơ bản, XXX hoặc #XXX sẽ ngắt trình biên dịch và nhắc tôi quay lại một cái gì đó. Nói chung các tham chiếu con trỏ hoặc một giá trị hoặc tên biến chưa biết trước đó.
bboy

5
Điều này đã xác nhận dự đoán ban đầu của tôi, Nó chỉ đơn giản là một thẻ bắt tất cả để chỉ ra các lập trình viên khác làm nổi bật nhận xét đó như một cái gì đó để xem xét.
Jorge Vargas

Không cố gắng để troll, nhưng "HACK" không được mô tả. Trên thực tế, nó rất mơ hồ. Đối với tôi, nó có thể có nghĩa ít nhất 3 điều.
Ярослав Рахматуллин

2
@ Орос mặc Tôi đã không sử dụng nó (tôi thường sử dụng TODOhoặc XXXthay vào đó), nhưng đó là cách tôi sẽ diễn giải nó.
Iiridayn

92
  • NOTE: Mô tả cách thức hoạt động của mã (khi nó không hiển thị).
  • XXX: Cảnh báo về những cạm bẫy có thể, có thể được sử dụng như NOTE:XXX:.
  • HACK: Mã không được viết hoặc không đúng định dạng để tránh sự cố / lỗi. Nên dùng như HACK:FIXME:.
  • FIXME: Điều này hoạt động, loại, nhưng nó có thể được thực hiện tốt hơn. (thường là mã được viết vội vàng cần viết lại).
  • BUG: Có một vấn đề ở đây.
  • TODO: Không có vấn đề, nhưng mã bổ sung cần phải được viết, thường là khi bạn bỏ qua một cái gì đó.

Ít nhất đây là cách tôi được dạy về các thẻ này. Về cơ bản hai ( NOTEXXX) đầu tiên được sử dụng cho thông tin và không có hành động được yêu cầu. Trong khi ba vừa qua ( FIXME, BUGTODO) làm đòi hỏi hành động. HACKTôi nghĩ có một nơi nào đó ở giữa (và hầu như không bao giờ được sử dụng?).


3
Danh sách tốt. Tôi cũng thích LAZY(không quan trọng bằng FIXME hoặc HACK) và OCD(được biết là quá mức).
Brendan Byrd

2
Bạn có thực sự sử dụng XXX như thế này không? Tôi đã đến xem XXX với mức độ ưu tiên cao hơn nhiều, có nghĩa là "đây là điều phải được sửa trước khi mã này thậm chí được gửi tới kiểm soát sửa đổi". Đó là cách nó được sử dụng trong google, được thực thi tự động, do đó bạn có thể thấy các XXX trong quá trình xem xét mã nhưng không thể gửi mã cho đến khi hết các XXX. Ghi chú công việc tồn tại lâu hơn có thể được đánh dấu bằng TODO, được phép gửi miễn là tên của ai đó hoặc id lỗi được đính kèm.
Don nở

21

Một số lưu ý từ Đề xuất cải tiến Python tháng 6 năm 2005 đã bị từ chối .

Lựa chọn giữa FIXMEXXXkhó khăn.
XXXdường như là phổ biến hơn, nhưng ít mô tả hơn.
Hơn nữa, XXXlà một giữ chỗ hữu ích trong một đoạn mã
có giá trị không xác định.

Do đó FIXMElà chính tả ưa thích.
Sun nói điều đó XXXFIXMEhơi khác nhau, cho XXXmức độ nghiêm trọng cao hơn.
Tuy nhiên, với nhiều thập kỷ hỗn loạn về chủ đề này và quá nhiều triệu
nhà phát triển sẽ không bị ảnh hưởng bởi Sun, thật dễ dàng để gọi chúng là từ đồng nghĩa.


PEP bắt đầu với,

PEP này đã bị từ chối. Trong khi cộng đồng có thể quan tâm,
không có mong muốn làm cho thư viện tiêu chuẩn phù hợp với tiêu chuẩn này.

...

Codetags là gì?

Các lập trình viên sử dụng rộng rãi các quy ước đánh dấu nhận xét mã ad-hoc để đóng vai trò nhắc nhở các phần của mã cần kiểm tra hoặc xem xét kỹ hơn. Ví dụ về đánh dấu bao gồm FIXME, TODO, XXX, BUG, nhưng có nhiều hơn nhiều trong việc sử dụng rộng rãi trong các phần mềm hiện có. Đánh dấu như vậy từ đó sẽ được gọi là tiền mã hóa . Các loại tiền mã hóa này có thể hiển thị trong mã ứng dụng, kiểm tra đơn vị, tập lệnh, tài liệu chung hoặc bất cứ nơi nào phù hợp.


PEP là một bài đọc thú vị.


10

Hãy xem PEP350 . Nó giải thích tất cả TODO, XXXv.v. Tôi sử dụng nó hàng ngày khi tôi không thể nhớ chính xác ý nghĩa của một trong các thẻ mã.


1
Bạn có biết PEP350 là nguồn gốc của các nhãn này không? Bạn có biết bất kỳ tài liệu cũ nào (từ thời Unix) mô tả cách sử dụng các nhãn này không?
Ярослав Рахматуллин

6

Tôi sử dụng XXXvì nó dễ gõ hơn TODO.

XXX là khi bạn đang vội và sẽ tự quay trở lại vấn đề này.

TODO là khi bạn phải trao nó cho người khác.


XXX có nghĩa là "Tôi đang vội và sẽ tự quay lại vấn đề này" TODO có nghĩa là "Đây là một phần chính thức của yêu cầu tồn đọng trong tương lai sẽ được gán cho người khác." Đó là những nghĩa đen.
S.Lott

2
Và RFC là những "nghĩa đen" trong? Hoặc có bất kỳ trích dẫn nào khác cho điều đó?
Randall

6
@Randall: "trích dẫn"? Xin lỗi, đó chỉ là sự hiểu biết của tôi sau khi đọc rất nhiều mã.
S.Lott


3

Từ các quy ước mã Java (cũ) :

Sử dụng XXX trong một nhận xét để gắn cờ một cái gì đó không có thật nhưng hoạt động. Sử dụng FIXME để gắn cờ một cái gì đó không có thật và bị hỏng.


1

XXX là viết tắt của caveat hơi khác so với NOTE nhưng khá giống với HACK. Nó có thể là một lỗi trong thư viện / mã của bên thứ ba đang được sử dụng và mã có // XXX: chỉ ra rằng đó là cách khắc phục do lỗi trong mã của bên thứ ba hoặc nó có thể có nghĩa là "thận trọng" với ai đó đang tìm kiếm / sửa đổi mã để chỉ ra lý do tại sao một cái gì đó được thực hiện theo một cách nhất định mà nếu không thì có vẻ không chính xác / không phù hợp trong cái nhìn đầu tiên. HACK là thuật ngữ chung có nghĩa là một cách giải quyết cho một vấn đề có thể xuất hiện trong cơ sở mã của riêng bạn hoặc thư viện của bên thứ ba.


0

Tôi tin rằng trong khi FIXMEdành cho nhà phát triển, và HACKdành cho người bảo trì, XXXdành cho người dùng.

Ví dụ: nếu bạn bỏ qua XXXvà gọi chức năng này ở nơi khác, mà không hiểu cách thức hoạt động của nó, điều gì đó bất ngờ có thể xảy ra và người xử lý vấn đề này sẽ không vui (ít nhất là người đã thêm XXXsuy nghĩ như vậy). Bạn có thể nghĩ rằng vấn đề sẽ biến mất nếu bạn không sử dụng chức năng này.

Nhưng đối với FIXME, bạn sẽ cảm thấy xứng đáng khi chỉ sửa mã để làm cho nó hoạt động. Và đối với HACK, bạn có thể không có lựa chọn nào tốt hơn ngay cả khi bạn không sử dụng nó.

Nếu bạn đã viết XXXtrên mã của riêng bạn và ai đó đã sử dụng nó, bạn có thể cảm thấy không vui vì những lý do như bạn viết lại hoàn toàn mã đó, và sau đó nó hành xử theo những cách hoàn toàn khác nhau và bạn đã phá vỡ mã của người khác. Nhưng nếu bạn để lại FIXMEhoặc TODOthay vào đó, bạn sẽ không quan tâm lắm.


0

Tôi sử dụng // XXX vì vậy tôi không phải nhớ số dòng. Thay vào đó tôi chỉ tìm kiếm XXX khi tôi muốn quay lại đoạn mã đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.