Apa arti #XXX dalam komentar kode?

126

Saya telah banyak melihat ini dalam kode, bahkan vim menandainya sebagai kasus khusus. #TODOdan #FIXMEdua penanda fix vim highlight lainnya tapi apa #XXXartinya?

Jorge Vargas
sumber
7
Pertanyaannya adalah menanyakan tentang codetag atau komentar praktik terbaik dalam pemrograman Python. Ada diskusi Python Enhancement Proposal tentang masalah ini. Pertanyaannya layak dipertahankan di SO. Itu bisa dikatakan sedikit lebih baik.
nik

Jawaban:

140

XXXdalam komentar biasanya pemberitahuan awal. Bisa jadi:

  • Sesuatu yang tidak diterapkan sepenuhnya dengan benar.
  • Sesuatu yang harus diperbaiki nanti.
  • Menyoroti kemungkinan tempat bermasalah.
  • Sesuatu yang tidak Anda yakini, sebuah pertanyaan.

Saya sering lebih suka tag yang lebih deskriptif seperti FIXMEatau TODOatau HACK. XXXsering digunakan sebagai tangkapan semua hal di atas.

Mencari 'XXX' pada referensi silang kode FreeBSD adalah contoh bagus dari banyak penggunaan. Ada ribuan ...

Stef
sumber
Yang lucu adalah saya menggunakan ini sendiri. XXX atau #XXX pada dasarnya menjalankan kompilator dan mengingatkan saya untuk kembali pada sesuatu. Umumnya referensi penunjuk atau nilai atau nama variabel yang sebelumnya tidak diketahui.
bobby
5
Ini mengkonfirmasi dugaan asli saya, Ini hanyalah tag penampung semua untuk menunjukkan pemrogram lain untuk menyorot komentar itu sebagai sesuatu untuk dilihat.
Jorge Vargas
Tidak mencoba untuk menjebak, tapi "HACK" tidak deskriptif. Faktanya, ini sangat ambigu. Bagi saya, itu bisa berarti setidaknya 3 hal.
Ярослав Рахматуллин
2
@ ЯрославРахматуллин dalam kode sumber Saya akan selalu membacanya dalam pengertian "ini adalah pekerjaan hack yang jelek, tetapi tampaknya bekerja cukup baik" - sesuatu yang ingin Anda bersihkan nanti, tetapi tidak mendesak. Saya tidak menggunakannya (saya biasanya menggunakan TODOatau XXXsebaliknya), tapi begitulah cara saya menafsirkannya.
Iiridayn
92
  • NOTE: Deskripsi tentang cara kerja kode (jika tidak terbukti dengan sendirinya).
  • XXX: Peringatan tentang kemungkinan jebakan, dapat digunakan sebagai NOTE:XXX:.
  • HACK: Tidak ditulis dengan baik atau kode yang salah format untuk menghindari masalah / bug. Harus digunakan sebagai HACK:FIXME:.
  • FIXME: Ini berfungsi, semacam, tetapi bisa dilakukan dengan lebih baik. (biasanya kode ditulis dengan terburu-buru sehingga perlu ditulis ulang).
  • BUG: Ada masalah di sini.
  • TODO: Tidak masalah, tetapi kode tambahan perlu ditulis, biasanya saat Anda melewatkan sesuatu.

Setidaknya begitulah cara saya diajari tentang tag ini. Pada dasarnya dua yang pertama ( NOTEdan XXX) digunakan untuk informasi dan tidak ada tindakan yang diperlukan. Sedangkan tiga yang terakhir ( FIXME, BUGdan TODO) memang membutuhkan tindakan. HACKada di antara keduanya (dan saya pikir hampir tidak pernah digunakan?).

Peter
sumber
3
Daftar yang bagus. Saya juga suka LAZY(tidak sepenting FIXME atau HACK) dan OCD(dikenal overengineering).
Brendan Byrd
2
Apakah Anda benar-benar menggunakan XXX seperti ini? Saya telah melihat XXX sebagai prioritas yang jauh lebih tinggi, yang berarti "ini adalah sesuatu yang harus diperbaiki bahkan sebelum kode ini dikirim ke kontrol revisi". Begitulah cara penggunaannya di dalam Google, secara otomatis diterapkan, jadi Anda mungkin melihat XXX selama peninjauan kode, tetapi tidak mungkin untuk mengirimkan kode sampai XXX hilang. Catatan agenda yang lebih tahan lama
Don Hatch
21

Beberapa catatan dari Proposal Peningkatan Python Juni 2005 yang ditolak .

Sulit memilih antara FIXMEdan XXX.
XXXtampaknya lebih umum, tetapi kurang deskriptif.
Selain itu, XXXadalah tempat penampung yang berguna dalam potongan kode yang
memiliki nilai yang tidak diketahui.

Demikianlah FIXMEejaan yang disukai.
Sun mengatakan itu XXXdan FIXMEsedikit berbeda, memberikan XXXtingkat keparahan yang lebih tinggi.
Namun, dengan kekacauan selama beberapa dekade tentang topik ini, dan terlalu banyak jutaan
developer yang tidak akan terpengaruh oleh Sun, mudah untuk menyebut mereka sinonim.


PEP Dimulai dengan,

PEP ini telah ditolak. Meskipun komunitas mungkin tertarik,
tidak ada keinginan untuk membuat perpustakaan standar sesuai dengan standar ini.

...

Apa itu Codetags?

Pemrogram secara luas menggunakan konvensi markup komentar kode ad-hoc untuk berfungsi sebagai pengingat bagian kode yang perlu diperiksa atau ditinjau lebih dekat. Contoh markup termasuk FIXME, TODO, XXX, BUG, tapi ada banyak lagi digunakan secara luas dalam perangkat lunak yang ada. Markup tersebut selanjutnya akan disebut sebagai codetag . Codetags ini dapat muncul dalam kode aplikasi, pengujian unit, skrip, dokumentasi umum, atau dimanapun sesuai.


PEP adalah bacaan yang menarik.

nik
sumber
10

Silakan lihat di PEP350 . Ini menjelaskan semua TODO, XXXdll. Saya menggunakannya setiap hari ketika saya tidak dapat mengingat dengan tepat apa arti salah satu tag kode.

Ztyx
sumber
1
Tahukah Anda jika PEP350 adalah asal mula label ini? Apakah Anda tahu dokumen lama (dari era Unix) yang menjelaskan cara menggunakan label ini?
Ярослав Рахматуллин
6

Saya menggunakan XXXkarena lebih mudah untuk mengetik daripada TODO.

XXX adalah untuk saat Anda sedang terburu-buru dan akan kembali ke ini sendiri.

TODO adalah saat Anda harus menyerahkannya kepada orang lain.

S. Lott
sumber
XXX berarti "Saya sedang terburu-buru dan akan kembali ke ini sendiri" TODO berarti "Ini adalah bagian resmi dari permintaan backlog masa depan yang akan diberikan kepada orang lain." Itu adalah makna literal.
S. Lotot
2
Dan di RFC mana "makna literal" itu? Atau apakah ada kutipan lain untuk itu?
Randall
6
@Randall: "kutipan"? Maaf, itu hanya pemahaman saya setelah membaca banyak kode.
S. Lotot
3

Dari konvensi kode Java (lama) :

Gunakan XXX di komentar untuk menandai sesuatu yang palsu tetapi berfungsi. Gunakan FIXME untuk menandai sesuatu yang palsu dan rusak.

Martin
sumber
1

XXX adalah singkatan dari peringatan yang sedikit berbeda dari NOTE tapi sangat mirip dengan HACK. Ini mungkin bug di pustaka / kode pihak ketiga yang sedang digunakan dan kode dengan // XXX: menunjukkan bahwa itu adalah solusi karena bug dalam kode pihak ketiga atau bisa berarti "hati-hati" bagi seseorang yang melihat / memodifikasi kode untuk menunjukkan mengapa sesuatu dilakukan dengan cara tertentu yang mungkin tampak tidak benar / tidak elegan pada pandangan pertama. HACK adalah istilah umum yang berarti solusi untuk masalah yang mungkin ada di basis kode Anda sendiri atau pustaka pihak ketiga.

Divick
sumber
0

Saya percaya sementara FIXMEuntuk pengembang, dan HACKuntuk pengelola, XXXuntuk pengguna.

Misalnya, jika Anda mengabaikan XXXdan memanggil fungsi ini di tempat lain, tanpa memahami cara kerjanya, sesuatu yang tidak terduga dapat terjadi, dan orang yang menangani masalah ini tidak akan senang (setidaknya orang yang menambahkan XXXanggapan tersebut). Anda mungkin berpikir masalahnya akan hilang jika Anda tidak menggunakan fungsi ini.

Namun karena FIXME, Anda akan merasa layak untuk memperbaiki kode agar berfungsi. Dan karena HACK, Anda mungkin tidak memiliki pilihan yang lebih baik meskipun Anda tidak menggunakannya.

Jika Anda menulis XXXpada kode Anda sendiri dan seseorang menggunakannya, Anda mungkin merasa tidak senang karena alasan seperti Anda benar-benar menulis ulang kode itu, dan kemudian berperilaku dengan cara yang sangat berbeda, dan Anda melanggar kode orang lain. Tetapi jika Anda meninggalkan FIXMEatau TODOsebaliknya, Anda tidak akan terlalu peduli.

pengguna23013
sumber
0

Saya menggunakan // XXX jadi saya tidak perlu mengingat nomor baris. Alih-alih, saya hanya menelusuri XXX saat ingin kembali ke bagian kode itu.

Air biru
sumber