Apa nama Anda fungsi / variabel / dll ketika Anda tidak bisa memikirkan nama yang baik? [Tutup]

13

Ketika Anda mendefinisikan fungsi / variabel / dll dan tidak yakin apa nama itu, apa nama Anda? Bagaimana Anda mendapatkan nama?

Jika Anda menggunakan nama sementara sebagai kartu tempat hingga Anda memberikannya nama asli, nama sementara apa yang Anda gunakan?


memperbarui

Saya telah menggunakan hal-hal seperti WILL_NAME_LATER, NEEDS_NAME, atau TO_BE_NAMED. Saya berharap ada konvensi yang diadopsi, saya benar-benar berharap bahwa jika saya menggunakan konvensi yang diadopsi ini, IDE saya akan menyoroti nama sampai saya mengubahnya.

JD Isaacks
sumber
Hati-hati menggunakan semua huruf besar untuk nama variabel. Dengan konvensi populer, ini berarti variabel global.
spong
@sunpech, saya tahu, saya menggunakan konvensi penamaan untuk konstanta juga. Tapi saya pikir kapitalisasi membuatnya menonjol jadi saya tidak lupa untuk mengganti nama. Saya tidak membiarkannya dinamai seperti itu lama.
JD Isaacks
3
Untuk semua orang yang mengatakan, Anda seharusnya tidak pernah memiliki masalah dengan nama ... Bahkan Jon Skeet kadang-kadang tidak bisa: stackoverflow.com/questions/521893/…
JD Isaacks
@ JohnIsaacks Saya pikir Anda harus berani sementara . Terlalu banyak orang yang membaca pertanyaan ini dan membuat kode menjadi sesuatu yang suci. Jujur, ya, Anda dapat menulis kode ceroboh TERUTAMA ketika Anda mencoba untuk mendorong sesuatu yang lebih penting. Kami tidak etsa kode menjadi batu di sini.
Spong
1
Saya kira konvensi untuk sesuatu seperti ini adalah menambahkan TODO dalam kode, dengan penjelasan mengapa Anda perlu memperbaruinya. Banyak alat dapat mengurai TODO tersebut dan menunjukkan daftar semua hal yang harus dilakukan.
Eduardo Scoz

Jawaban:

29

Hampir tidak mungkin untuk tidak dapat memikirkan nama untuk artefak yang ingin Anda desain. Anda mungkin tidak suka nama apa yang Anda buat karena itu tidak ringkas atau seksi, tetapi jika Anda berpikir terlalu keras, Anda akan berakhir dengan artefak bernama buruk.

Katakanlah Anda memiliki sesuatu yang membantu Anda membuat objek, tetapi Anda tidak tahu ini biasanya disebut pabrik. Sebut saja ObjectCreator. Kedengarannya tumpul, tapi setidaknya jelas.

Katakanlah Anda memiliki kamus yang mengubah nama host menjadi alamat IP. Silakan saja dan sebut saja HostnamesToIpAddresses. Tentu itu panjang, tetapi dikatakan persis apa fungsinya.

Ketidakmampuan untuk membuat nama untuk sesuatu berarti Anda tidak tahu apa yang dilakukannya, yang juga berarti Anda memiliki masalah yang lebih besar di hadapan Anda.

Mark Canlas
sumber
8
Saya selalu ingin menampar orang yang mengeluh tentang pengenal terlalu lama (ketika mereka hanya tiga atau empat kata). Kita seharusnya tidak dibatasi oleh kecepatan mengetik, dan jika ya, kita harus melihat ABCD dan belajar mengetik!
dash-tom-bang
1
+1 karena "The inability to come up with a name for something means you don't know what it is doing". Saya pikir ini benar-benar poin penting. Menyadari hal ini membantu Anda menemukan ambiguitas dan ketidakjelasan dalam kode.
BiAiB
34

Saya selalu mencoba memberikan nama variabel dan fungsi saya yang luar biasa .

Jika saya tidak bisa memikirkan nama yang hebat, saya akan puas dengan nama yang baik .

Jika saya tidak dapat menemukan nama yang bagus, saya akan menggunakan nama yang oke .

Saya tidak pernah, dalam 15 tahun pemrograman profesional, tidak dapat menemukan nama yang layak.

Portman
sumber
6
+1 untuk menjadi, seperti, puitis.
spong
1
... namun, 15 tahun dan 6 bulan lalu, Microsoft Bob lahir.
VirtuosiMedia
12

Jika Anda tidak bisa memikirkan nama baik pada variabel atau fungsi, Anda tidak mengerti apa yang Anda lakukan atau Anda mendapatkan desain yang buruk. Either way, menampar beberapa nama sewenang-wenang seperti "x" (kecuali jika Anda berurusan dengan koordinat) tidak akan menyelesaikan dilema Anda; itu hanya akan memperburuk dan rasa sakit untuk mempertahankan lebih besar.

Gablin
sumber
8
Saya tidak setuju. Pengembang tidak akan selalu memiliki pemahaman penuh tentang terminologi bisnis. Heck, bahkan klien mungkin tidak dapat menyampaikan terminologi selama pengumpulan persyaratan - apalagi kadang-kadang bahkan memahami bisnis mereka sendiri! Tetapi ini tidak menghentikan perangkat lunak untuk diproduksi. Itu tidak menghentikan pembuatan prototipe. Atau bahkan kode yang dikeluarkan benar karena kurangnya pemahaman. Tetapi kode dalam situasi ini masih perlu diproduksi dan dikirim.
spong
3
@sunpech Maaf, tapi ini sedikit menakutkan. Apakah Anda mencoba memberi tahu kami bahwa menulis kode acak adalah hal yang tidak umum? Jika Anda tidak tahu sesuatu, usahakan untuk mencari tahu dan Anda akan menghindari masalah di masa depan.
Adam Byrtek
@AdamByrtek Tidak, saya tidak bermaksud begitu. Apa yang saya katakan adalah bahwa tidak selalu tergantung pada pengembang dan tim untuk memiliki pemahaman terbaik tentang apa yang diinginkan klien. Beberapa klien kesulitan menjelaskan apa yang mereka inginkan, atau tidak tahu apa yang mereka inginkan. Kode buruk memang terjadi. Masalah terjadi dalam proyek mulai dari persyaratan yang buruk hingga tenggat waktu yang tidak realistis. Itu kenyataan. Tidak ada dunia yang sempurna di mana pengembang akan memiliki semua yang tidak diketahui diselesaikan, di mana klien sempurna, dan tenggat waktu akurat. Kode yang dihasilkan untuk prototipe dimaksudkan untuk dibuang. Tetapi pengkodean masih perlu terjadi.
spong
lanjutan ... Kami tidak berbicara tentang membuat kode produksi atau kode final sesaat sebelum check-in. Kita sedang berbicara tentang bagaimana memberi nama sesuatu yang belum kita pahami sepenuhnya - untuk memulai pada sesuatu yang tidak jelas karena alasan yang mungkin (misalnya: belum ada orang di tim yang mengerti, mungkin tidak bahkan klien). Tetapi hal-hal perlu bergerak maju masih berdasarkan apa yang diketahui.
spong
1
@sunpech: Satu-satunya tempat saya benar-benar melihat foodan bardigunakan dalam kode adalah dalam potongan kecil kode yang digunakan untuk menunjukkan konsep. Tentu, saya juga tersandung ketika memikirkan nama-nama, tetapi saya tidak pernah berakhir di posisi yang buruk di mana footelah menjadi satu-satunya pilihan yang masuk akal. Jika itu terjadi, maka saya benar-benar tidak tahu apa yang saya lakukan dan perlu kembali ke papan gambar dan kode semu sebagai gantinya sampai saya tahu apa yang harus dilakukan.
gablin
5

Pertanyaan ini dan terutama jawabannya membuatku takut tidak masuk akal. Seseorang harus mempertahankan kode itu di mana Anda baru saja menamai variabel "Cup", Anda tahu. Jika Anda tidak beruntung, seseorang itu adalah Anda!

Anda punya variabel. Itu suatu hal. Itu mewakili suatu hal. Dan banyak hal memiliki nama. Begitulah cara Anda mengetahui hal-hal itu! Apakah Anda benar-benar mengatakan kepada saya bahwa Anda harus menyebutkan nama demi nama karena Anda tidak dapat menyebutkan nama benda yang sebenarnya?

Iterator harus disebut i. Iterator bersarang kemungkinan kesalahan, tetapi jika Anda membutuhkannya, buat jalan Anda melalui sisa vokal, dalam rangka (a, e, o, u, dan tuhan membantu saya, ya, kadang-kadang y).

Terlepas dari itu, sebut saja benda apa itu dan lakukan dengan itu!

Dan Ray
sumber
9
Saya harus protes! Jelas iterator dalam harus disebut j dan yang di dalamnya k . Tradisi matematika yang sudah lama ada melihat ke belakang!
Frank Shearar
Hah. Saya tidak pernah melakukan j dan k. Saya melihat bahwa itu masuk akal.
Dan Ray
8
Salah satu alasan Dijkstra sangat cocok untuk ilmu komputer adalah karena namanya memasukkan tiga variabel iterator yang paling umum dalam urutan yang benar.
glenatron
3
@ glenatron: Akhirnya, cara untuk mengingat bagaimana mengeja nama itu!
konfigurator
4

Jika saya tidak dapat segera menghasilkan nama yang hebat, saya menggunakan nama "oke" untuk sementara, kemudian teruskan pengkodean. Setidaknya itu akan menjadi sesuatu yang cukup menggambarkan item itu, bahkan itu tidak sempurna . Hampir selalu, pada saat saya selesai menulis konsep pertama dari potongan kode tertentu, nama yang lebih sempurna akan muncul di benak saya. Melalui proses pengkodean, niat saya dengan variabel tertentu menjadi lebih jelas. (Di sisi lain, kadang-kadang terpikir oleh saya bahwa variabel menjadi tidak dipahami sejak awal dan saya menghapusnya demi sesuatu yang lain.)

Nick Spreitzer
sumber
3

Saya beri nama fungsi yang menurut saya harus dilakukan - sesuatu yang kurang lebih menyampaikan maksudnya. Setelah tubuh fungsi ditulis, saya menemukan dengan jelas apa yang memanggilnya dan kembali dan mengganti nama jika diperlukan.

Adam Lear
sumber
1
Ini tidak selalu berhasil, terutama ketika pengembang mungkin tidak terbiasa dengan terminologi atau bahkan niat bisnis / industri. Sesuatu yang lebih umum dan jelas harus digunakan untuk menyampaikan bahwa itu perlu didefinisikan dan diubah kemudian. OP tampaknya bertanya kapan niatnya tidak diketahui, dan apa yang awalnya harus digunakan. Jika penamaan adalah sesuatu yang kurang lebih menyampaikan maksud, maka nama baik sudah tidak jauh.
Spong
1
@sunpech Serius, bahkan ketika pertama kali memulai dalam pekerjaan dengan domain yang cukup spesifik, saya tidak mengalami masalah dengan nama fungsi. Mungkin saya hanya perlu menulis lebih banyak fungsi. :)
Adam Lear
1
@sunpech: Bagaimana Anda bisa menulis suatu fungsi tanpa mengetahui apa fungsinya?
konfigurator
4
@sunpech: Saya tidak mengatakan itu. Saya hanya mengatakan Anda tidak mungkin menulis fungsi tanpa mengetahui apa yang dilakukannya. Itu tidak mungkin. Saya belum pernah melihat itu terjadi, dan saya tidak melihat bagaimana itu bisa terjadi. Mungkin saya bodoh, tetapi ketika Anda menyebutkan fungsi DoFoo (), apa yang Anda masukkan ke dalamnya ??
konfigurator
2
@ Sunpech: Saya tidak pernah mengatakan nama harus 'bagus' sejak awal. Saya hanya gagal melihat bagaimana Anda akan masuk ke situasi di mana Anda ingin membuat fungsi tetapi Anda tidak tahu apa yang akan dilakukan.
konfigurator
2

foo dan bar . Karena belum ada makna di balik fungsi penamaan / variabel, saya menggunakan beberapa kombinasi Foo dan / atau Bar dengan apa pun yang saya coba definisikan.

Itu membuatnya mudah untuk mencari / menemukan nanti ketika saya memiliki pemahaman yang lebih baik tentang apa yang harus dinamai.

Lihat juga Foobar di wikipedia .

Istilah foobar, foo, bar, dan baz kadang-kadang digunakan sebagai nama placeholder (juga disebut sebagai variabel metasyntactic) dalam pemrograman komputer atau dokumentasi terkait komputer. Mereka telah digunakan untuk memberi nama entitas seperti variabel, fungsi, dan perintah yang tujuannya tidak penting dan hanya berfungsi untuk menunjukkan konsep. Kata-kata itu sendiri tidak memiliki arti dalam penggunaan ini. Foobar kadang-kadang digunakan sendiri; foo, bar, dan baz kadang-kadang digunakan dalam urutan itu, ketika banyak entitas diperlukan.

sepon
sumber
1

Awali fungsi Anda dengan sesuatu dan berikan nama pilihan terbaik untuk saat ini. Misalnya, fungsi yang menyimpan-semua-produk-untuk-pengguna-yang-dipilih-ke-database dapat berupa RENAME_SaveAllProductsForTheSelectedUserToTheDatabase()

Kode keras
sumber
Tentu saja, dalam hal ini, Anda cukup memberi nama fungsiSaveAllProductsForTheSelectedUserToTheDatabase()
konfigurator
1

Apa pun yang saya sebut variabel-variabel yang sulit dinamai ini, saya memberikan //TODO find a better namekomentar sehingga saya dapat kembali nanti untuk menamainya kembali

Biasanya, ketika saya mulai menggunakan variabel / fungsi / kelas saya menemukan nama yang lebih baik untuk mereka.

pengguna1041
sumber
0

Yang terbaik adalah segera memasukkan nama yang baik sementara Anda memiliki kode dalam pikiran, daripada menunggu sampai nanti ketika Anda berharap Anda menamainya dengan baik!

Jon Onstott
sumber
0

Saya hampir tidak pernah memiliki masalah dalam menemukan nama-nama deskriptif yang bagus .. tetapi kadang-kadang penamaannya menjadi sangat berlebihan, dalam hal kelas dan nama variabel sangat mirip. WebClient webclient = Webclient baru (uri); ...dan sejenisnya.

Zaz
sumber
0

Terkadang saya menggunakan zzzz sementara.

Aturan yang baik untuk membantu Anda adalah ini:

  • Apakah itu mengembalikan boolean dan tidak memiliki efek samping: Kemudian gunakan kata sifat (mulai dengan is, was) tetapi tidak pernah tegang di masa depan.
  • Apakah itu mengembalikan jenis yang berbeda dan tidak memiliki efek samping: Kemudian gunakan kata benda.
  • Apakah itu tidak menghasilkan apa-apa selain melakukan sesuatu: Kemudian gunakan kata kerja.
  • Is it a class: Lalu gunakan kata benda.
ctrl-alt-delor
sumber
-1

Di masa lalu saya banyak menggunakan bob , tetapi ini akan menjadi satu-satunya variabel yang tidak disebutkan dengan benar dalam fungsi / skrip karena jika tidak, kode dengan cepat menjadi tidak terbaca.

(bob adalah hangover dari uni days - lolos dengan memanggil variabel variabel bob and fred)

Saya senang menggunakan saya untuk penghitung.

Lebih baik menggunakan nama yang bermakna, meskipun nama itu tidak pendek dan tajam.

Dan
sumber
Saya telah bekerja dengan seorang pria yang menggunakan nama-nama seperti itu untuk aplikasi dan kelasnya dalam aplikasi-nya. Mungkin tidak perlu dikatakan, kodenya pada umumnya sangat buruk.
dash-tom-bang
2
@ dash-tom-band: Saya pikir kodenya pada umumnya sangat bob.
configurator
Jika saya bisa memasukkan nama saya ke beberapa notasi hungaria untuk enumerasi, saya biasanya melakukannya, bahkan jika itu sedikit berlebihan. TPropertyEnhancmentTypeEditor = (PETEObtuse, PETEAwful, PETEDispicable);
Peter Turner
-1

Jika saya benar-benar tidak tahu apa nama variabel, yang belum terjadi dalam lebih dari dua puluh tahun ... nama-nama pacar lama, atau wanita yang saya harapkan adalah pacar. Kode terakhir dengan pengidentifikasi tersebut telah dihapus dari produksi beberapa tahun yang lalu.

David Thornley
sumber
-2

WorkMagic atau Abracadabra.

Penguji101
sumber
-2

bla , tapi hanya sementara. Saya selalu kembali dan menamainya menjadi nama variabel yang baik.

Jason Berkan
sumber
1
Jangan pernah gunakan ini. Tidak buruk.
Dinamis
-2

Doit (), a (), b (c) xxxx () ....

Tentu saja mereka mendapatkan refactored pergi .... biasanya

Praha Sangha
sumber
-3

Saya cenderung menggunakan barang-barang di meja saya.

  • Cangkir
  • Alt
  • Foo
  • b / a / c (sampah satu huruf)
  • alk (sampah multi-huruf yang bisa diucapkan)

Saya juga condong ke nama generik (setidaknya untuk fungsi):

  • menukar
  • proses
  • revisi Var
  • menggerumit

Ini untuk barang sementara. Saya bersumpah tidak ada yang berhasil masuk ke dalam repositori, apalagi produksi.

...

Josh K.
sumber
Saya selalu merasa kotor, tetapi kadang-kadang nama yang paling jelas untuk suatu metode adalah "Go" atau "DoIt". Kapan pun saya bisa menemukan nama yang lebih baik, tetapi kadang-kadang itu adalah "lakukan pekerjaan yang menyiratkan nama program akan terjadi." Namun, itu terlalu panjang untuk digunakan untuk nama fungsi. :)
dash-tom-bang
@ dash-tom-bang: Entah kenapa, runterlihat jauh lebih baik daripada go. Mungkin karena kita semua ingin program kita menjadi lebih cepat.
konfigurator