Adakah orang lain yang menemukan kelas dan metode penamaan sebagai salah satu bagian tersulit dalam pemrograman? [Tutup]

275

Jadi saya sedang mengerjakan kelas ini yang seharusnya meminta dokumentasi bantuan dari vendor melalui layanan web. Saya mencoba untuk nama itu DocumentRetriever, VendorDocRequester, DocGetter, tetapi mereka hanya tidak terdengar benar. Saya akhirnya menjelajah melalui dictionary.com selama setengah jam mencoba mencari kata yang memadai.

Mulai pemrograman dengan nama-nama buruk seperti memiliki rambut yang sangat buruk di pagi hari, sisa hari menurun dari sana. Rasakan aku

Terindah
sumber
2
Mengapa Anda ingin kelas, ketika Anda jelas hanya membutuhkan fungsi? Pastikan Anda memeriksa steve-yegge.blogspot.com/2006/03/… untuk kata kerja sebagai masalah nama kelas.
user51568
Atau, bergerak maju & refactor ketika Anda akhirnya tahu apa namanya.
Esteban Araya
16
Apa yang Anda beri nama ? : metode : gunakan kata kerja , seperti get, set, save, dll. Kelas dan variabel : gunakan kata benda , seperti dokumen, pengguna, konteks, dll. Antarmuka : gunakan kata sifat , seperti printable, clonable, iterable, dll. Setelah membaca utas ini, saya suka saran Spolsky untuk kelas dan variabel (menggunakan kata benda) dan saran TravisO untuk metode (menggunakan kata kerja). Juga jangan membuat objek yang diakhiri dengan 'er' .
Daniel Gasull
5
"Ada dua masalah sulit dalam ilmu komputer: pembatalan cache, konvensi penamaan, dan overflow diam."
Karakuri
6
@ karakuri Versi yang saya dengar adalah "ada 2 masalah sulit dalam ilmu komputer: penamaan, dan diimbangi dengan 1 kesalahan."
Haoest

Jawaban:

121

Apa yang Anda lakukan sekarang baik-baik saja, dan saya sangat menyarankan Anda tetap menggunakan sintaks Anda saat ini, menjadi:

konteks + kata kerja + caranya

Saya menggunakan metode ini untuk memberi nama fungsi / metode, procs yang disimpan SQL, dll. Dengan tetap menggunakan sintaks ini, itu akan membuat Intellisense / Code Panes Anda jauh lebih rapi. Jadi Anda ingin EmployeeGetByID () EmployeeAdd (), EmployeeDeleteByID (). Saat Anda menggunakan sintaks yang lebih baik secara tata bahasa seperti GetEmployee (), AddEmployee () Anda akan melihat bahwa ini menjadi sangat berantakan jika Anda memiliki beberapa Gets di kelas yang sama karena hal-hal yang tidak terkait akan dikelompokkan bersama.

Saya mirip dengan penamaan file dengan tanggal, Anda ingin mengatakan 2009-01-07.log bukan 1-7-2009.log karena setelah Anda memiliki banyak dari mereka, pesanan menjadi sama sekali tidak berguna.

TravisO
sumber
28
Saya lebih suka konteks yang disimpulkan dari nama ketik ketika metode penamaan ... kelas EmployeeRepository {void Add (Karyawan karyawan); membatalkan Get (int id); membatalkan GetAll (); membatalkan GetAll (filter Aksi <FilterCriteria>); } Bagaimana menurut anda?
Vyas Bharghava
5
Juga membantu jika Anda memiliki daftar kata kerja "rumah" standar. Jadi selalu Dapatkan dan tidak Muat / Baca / Ambil / Pilih / Temukan .... dll.
Akun Mati
2
Richard Anda benar dalam skenario OOP, jawaban saya mundur sedikit dan lebih merupakan saran pengkodean umum. Saya kira secara teknis itu berlaku lebih ke bahasa non OOP. Employee.Add () dan Employee.GetByID () akan menjadi penggunaan terbaik di OOP.
TravisO
6
Saya suka efek Intellisense dari saran Anda, tetapi saya lebih suka pendekatan yang sedikit lebih melek. Jadi saya lebih suka Employee.SetSupervisor () daripada Employee.SupervisorSet () karena berbunyi (lebih seperti bahasa Inggris alami.
Matthew Maravillas
12
Tapi @ TravisO, ini tidak terdengar bagus dalam bahasa Inggris. Anda tidak mendapatkan karyawan, Anda mendapatkan karyawan. Bagaimana jika Anda memiliki tindakan yang lebih kompleks yang melibatkan kata sifat, seperti InvalidateObsoleteQueries? QueriesInvalidateObsoletesulit dibaca dan tidak masuk akal. Selain itu, dalam C #, terutama dengan Resharper, urutan alfabet tidak relevan. Jika Anda mulai mengetik "emp", Resharper akan memberikan GetEmployee, SetEmployeedan bahkan PopulateInactiveEmployeesList.
Ilya Kogan
54

Satu pelajaran yang saya pelajari, adalah bahwa jika Anda tidak dapat menemukan nama untuk suatu kelas, hampir selalu ada yang salah dengan kelas itu:

  • kamu tidak membutuhkannya
  • itu terlalu banyak
Toon Krijthe
sumber
13
Atau terlalu sedikit.
user51568
4
Terima kasih, ini sebenarnya relevan bagi saya.
Haoest
52

Konvensi penamaan yang baik harus meminimalkan jumlah kemungkinan nama yang dapat Anda gunakan untuk variabel, kelas, metode, atau fungsi apa pun. Jika hanya ada satu nama yang mungkin, Anda tidak akan pernah kesulitan mengingatnya.

Untuk fungsi dan untuk kelas tunggal, saya meneliti fungsi untuk melihat apakah fungsi dasarnya adalah untuk mengubah satu jenis hal menjadi jenis lain. Saya menggunakan istilah itu dengan sangat longgar, tetapi Anda akan menemukan bahwa sejumlah besar fungsi yang Anda tulis pada dasarnya mengambil sesuatu dalam satu bentuk dan menghasilkan sesuatu dalam bentuk lain.

Dalam kasus Anda, sepertinya kelas Anda mengubah Url menjadi Dokumen. Agak aneh untuk berpikir seperti itu, tetapi sangat benar, dan ketika Anda mulai mencari pola ini, Anda akan melihatnya di mana-mana.

Ketika saya menemukan pola ini, saya selalu nama fungsi x Fromy .

Karena fungsi Anda mengubah Url menjadi Dokumen, saya akan menamainya

DocumentFromUrl

Pola ini sangat umum. Sebagai contoh:

atoi -> IntFromString
GetWindowWidth -> WidthInPixelsFromHwnd // or DxFromWnd if you like Hungarian
CreateProcess -> ProcessFromCommandLine

Anda juga dapat menggunakan UrlToDocumentjika Anda lebih nyaman dengan pesanan itu. Apakah Anda mengatakan x Fromy atau y Tox mungkin masalah selera, tapi aku lebih suka Fromagar karena dengan begitu awal nama fungsi sudah memberitahu Anda apa jenis itu kembali.

Pilih satu konvensi dan patuhi itu. Jika Anda berhati-hati untuk menggunakan nama yang sama dengan nama kelas Anda di Anda x Fromy fungsi, itu akan menjadi jauh lebih mudah untuk mengingat nama-nama apa yang Anda digunakan. Tentu saja, pola ini tidak bekerja untuk semuanya, tetapi tidak berfungsi di mana Anda menulis kode yang dapat dianggap sebagai "fungsional."

Joel Spolsky
sumber
Pengingat yang bagus bahwa dalam bahasa OOP, nama-nama kelas tidak selalu harus menjadi kata benda tetapi tidak masalah bagi mereka untuk menjadi "verbish" pada kesempatan tertentu. Karenanya mengapa praktisi OOP sering tersandung (seperti orang yang mengajukan pertanyaan) karena terlalu menekankan bahwa kelas harus menjadi "benda" di dunia nyata.
Ray
7
XFromY-Convetion pada dasarnya mengulangi apa yang ada di daftar tipe dan parameter kembali: Foo fooFromBar (Bar bar). Terserah Anda jika Anda menyebut konsistensi atau redendansi ini.
Lena Schimmel
"Dalam kasus Anda, sepertinya kelas Anda mengubah Url menjadi Dokumen". Sejak kapan kelas seharusnya "melakukan" sesuatu, alih-alih mewakili konsep?
user51568
6
@ Brian: itu hanya berlebihan di satu tempat ... di deklarasi. Di mana pun Anda menggunakannya, senang memiliki sedikit pengingat tentang tipe data. Membuat kode lebih mudah dibaca tanpa harus kembali ke deklarasi.
Joel Spolsky
3
@ stefan- Dalam beberapa bahasa seperti C # dan Java semua kode harus dienkapsulasi dalam kelas tidak seperti di C ++. Fungsinya bukan warga negara kelas satu dalam bahasa-bahasa itu jika Anda ingin kode modularisasi. Oleh karena itu, Anda terkadang berakhir dengan kelas yang mungkin "melakukan" hal-hal seperti fungsi.
Ray
31

Terkadang tidak ada nama yang bagus untuk kelas atau metode, itu terjadi pada kita semua. Namun, sering kali, ketidakmampuan untuk menghasilkan nama bisa menjadi petunjuk untuk sesuatu yang salah dengan desain Anda. Apakah metode Anda memiliki terlalu banyak tanggung jawab? Apakah kelas Anda merangkum ide yang koheren?

Brad Barker
sumber
3
Poin yang sangat bagus, sungguh.
Camilo Martin
27

Utas 1:

function programming_job(){
    while (i make classes){
         Give each class a name quickly; always fairly long and descriptive.
         Implement and test each class to see what they really are. 
         while (not satisfied){
            Re-visit each class and make small adjustments 
         }
    }
}

Utas 2:

while(true){
      if (any code smells bad){
           rework, rename until at least somewhat better
      }
}

Tidak ada Thread.sleep (...) di mana saja di sini.

krosenvold
sumber
24

Saya menghabiskan banyak waktu juga mengkhawatirkan nama-nama apa pun yang dapat diberi nama saat saya pemrograman. Saya akan mengatakan itu terbayar dengan sangat baik. Kadang-kadang ketika saya terjebak saya meninggalkannya untuk sementara waktu dan selama rehat kopi saya bertanya-tanya sedikit jika seseorang memiliki saran yang bagus.

Untuk kelas Anda, saya sarankan VendorHelpDocRequester.

willcodejavaforfood
sumber
1
> VendorHelpDocRequester Bagus. Saya sebenarnya Googled Requestor daripada Requester, keduanya sepertinya kata-kata bahasa Inggris yang sah.
Haoest
1
Aku sudah melakukan yang sekali atau dua kali juga :)
willcodejavaforfood
1
Memiliki kata kerja dalam nama kelas selalu terdengar salah bagi saya. Plus itu selalu mengarah pada beberapa duplikasi dalam penggunaan (yaitu:) VendorHelpDocRequester.request(). Saya lebih suka bentuk jamak seperti `VendorHelpDocs.request () '
Edson Medina
19

Kode buku Lengkap oleh Steve Mcconnell memiliki bab yang bagus tentang variabel penamaan / kelas / fungsi / ...

Emile Vrijdags
sumber
itulah salah satu buku favorit saya, sangat merekomendasikannya
willcodejavaforfood
2
+1 untuk siapa saja yang pernah menyebut Kode Selesai!
Richard Ev
15

Saya pikir ini adalah efek samping.

Bukan penamaan sebenarnya yang sulit. Yang sulit adalah proses penamaan membuat Anda menghadapi kenyataan mengerikan bahwa Anda tidak tahu apa yang sedang Anda lakukan.

Nosredna
sumber
12

Saya sebenarnya baru saja mendengar kutipan ini kemarin, melalui blog Signal vs. Noise di 37Signals, dan saya setuju dengan itu:

"Hanya ada dua hal yang sulit dalam Ilmu Komputer: pembatalan cache dan penamaan hal-hal." - Phil Karlton

Jonathan Schuster
sumber
simonwillison.net/2007/Jul/5/hard membawa saya ke tbray.org/ongoing/When/200x/2005/12/23/UPI yang membawa saya ke karlton.hamilton.com dan ke karlton.hamilton.com/quotes /showallquotes.cgi , yang tidak termasuk kutipan! (Tapi saya mengenali # 5 dari Scrum.)
Daryl Spitzer
1
"Dua hal sulit dalam Ilmu Komputer: pembatalan cache, penamaan, dan kesalahan satu-per-satu."
Dan Lugg
7

Bagus, sulit. Ini memaksa Anda untuk memikirkan masalah, dan apa yang seharusnya dilakukan kelas. Nama yang baik dapat membantu mengarah pada desain yang baik.

JW.
sumber
6

Sepakat. Saya suka menjaga nama dan variabel tipe saya sejelas mungkin tanpa terlalu panjang, tetapi kadang-kadang hanya ada konsep tertentu yang Anda tidak dapat menemukan kata yang tepat untuk itu.

Dalam hal ini, selalu membantu saya untuk meminta masukan rekan kerja - bahkan jika mereka pada akhirnya tidak membantu, biasanya membantu saya untuk setidaknya menjelaskannya dengan keras dan membuat roda saya berputar.

Daniel Schaffer
sumber
6

Saya baru saja menulis tentang konvensi penamaan bulan lalu: http://caseysoftware.com/blog/useful-naming-conventions

Intinya:

verbAdjectiveNounStructure - dengan Structure dan Adjective sebagai bagian opsional

Untuk kata kerja , saya tetap menggunakan kata kerja tindakan: simpan, hapus, beri tahu, perbarui, atau hasilkan. Sekali-sekali, saya menggunakan "proses" tetapi hanya untuk secara khusus merujuk ke antrian atau backlog kerja.

Untuk kata benda , saya menggunakan kelas atau objek yang sedang berinteraksi. Dalam proyek web2, ini sering Tugas atau Proyek. Jika Javascript berinteraksi dengan halaman, mungkin tubuh atau tabel. Intinya adalah bahwa kode tersebut dengan jelas menggambarkan objek yang berinteraksi dengannya.

The Struktur adalah opsional karena unik untuk situasi. Layar daftar mungkin meminta Daftar atau Array. Salah satu fungsi inti yang digunakan dalam Daftar Proyek untuk web2proyek hanyalah getProjectList. Itu tidak mengubah data yang mendasarinya, hanya representasi data.

Kata sifat adalah sesuatu yang sama sekali berbeda. Mereka digunakan sebagai pengubah kata benda. Sesuatu yang sederhana seperti getOpenProjects mungkin mudah diimplementasikan dengan getProjects dan parameter switch, tetapi ini cenderung menghasilkan metode yang memerlukan sedikit pemahaman tentang data yang mendasarinya dan / atau struktur objek ... belum tentu sesuatu yang Anda ingin mendorong. Dengan memiliki fungsi yang lebih eksplisit dan spesifik, Anda dapat sepenuhnya membungkus dan menyembunyikan implementasi dari kode yang menggunakannya. Bukankah itu salah satu poin dari OO?

CaseySoftware
sumber
4

Lebih dari sekadar memberi nama kelas, membuat struktur paket yang tepat bisa menjadi tantangan yang sulit tetapi bermanfaat. Anda perlu mempertimbangkan memisahkan kekhawatiran modul Anda dan bagaimana mereka berhubungan dengan visi aplikasi.

Pertimbangkan tata letak aplikasi Anda sekarang:

  • Aplikasi
    • VendorDocRequester (baca dari layanan web dan berikan data)
    • VendorDocViewer (gunakan pemohon untuk memberikan dokumen vendor)

Saya berani menebak bahwa ada banyak hal yang terjadi di dalam beberapa kelas. Jika Anda merevisi ini menjadi pendekatan yang lebih berorientasi MVC, dan memungkinkan kelas kecil untuk menangani tugas individu, Anda mungkin berakhir dengan sesuatu seperti:

  • Aplikasi
    • VendorDocs
      • Model
        • Dokumen (objek biasa yang menyimpan data)
        • WebServiceConsumer (berurusan dengan seluk beluk dalam layanan web)
      • Pengendali
        • DatabaseAdapter (menangani persistensi menggunakan ORM atau metode lain)
        • WebServiceAdapter (memanfaatkan Konsumen untuk mengambil Dokumen dan menempelnya di basis data)
      • Melihat
        • HelpViewer (gunakan DBAdapter untuk mengeluarkan dokumentasi)

Kemudian nama kelas Anda bergantung pada namespace untuk memberikan konteks penuh. Kelas-kelas itu sendiri dapat secara inheren terkait dengan aplikasi tanpa harus secara eksplisit mengatakannya. Hasilnya, nama kelas lebih sederhana dan lebih mudah untuk didefinisikan!

Satu saran lain yang sangat penting: tolong lakukan sendiri dan ambil salinan Pola Desain Kepala Pertama. Buku yang fantastis dan mudah dibaca ini akan membantu Anda mengatur aplikasi dan menulis kode yang lebih baik. Menghargai pola desain akan membantu Anda memahami bahwa banyak masalah yang Anda temui telah dipecahkan, dan Anda akan dapat memasukkan solusi ke dalam kode Anda.

Mike Griffith
sumber
4

Leo Brodie, dalam bukunya "Thinking Forth", menulis bahwa tugas yang paling sulit bagi seorang programmer adalah memberi nama dengan baik, dan ia menyatakan bahwa alat pemrograman yang paling penting adalah tesaurus.

Coba gunakan tesaurus di http://thesaurus.reference.com/ .

Selain itu, jangan gunakan Notasi Hongaria PERNAH, hindari singkatan, dan konsisten.

Semoga sukses.

Rob Williams
sumber
1
Memberi +1 dengan catatan bahwa Anda tidak boleh menggunakan apa yang disebut sistem hung hungarian; Hungaria aplikasi terkadang dapat membantu, terutama dalam bahasa pemrograman tanpa sistem pengetikan yang baik.
user51568
Saya belum pernah mendengar notasi Hungaria sistem vs. aplikasi, tetapi tidak pernah ada ide bagus di lingkungan apa pun - Anda harus selalu menyebutkan berdasarkan APA, bukan BAGAIMANA, dan Hongaria sepenuhnya tentang caranya.
Rob Williams
@RobWilliams Saya pikir mereka merujuk pada artikel Joel Spolsky
Alois Mahdal
1
@RobWilliams Juga, apakah Anda yakin tentang "Saya belum pernah mendengar tentang X vs Y tetapi juga tidak pernah merupakan ide yang baik ..." ...? :)
Alois Mahdal
4

Singkatnya:
Saya setuju bahwa nama-nama baik itu penting, tetapi saya tidak berpikir Anda harus menemukannya sebelum menerapkannya dengan cara apa pun.

Tentu lebih baik memiliki nama baik sejak awal. Tetapi jika Anda tidak dapat menghasilkan satu dalam 2 menit, penggantian nama di lain waktu akan memakan waktu lebih sedikit dan merupakan pilihan yang tepat dari sudut pandang produktivitas.

Panjang:
Umumnya sering kali tidak layak untuk berpikir terlalu lama tentang suatu nama sebelum diterapkan. Jika Anda menerapkan kelas Anda, beri nama "Foo" atau "Dsnfdkgx", sementara menerapkan Anda melihat apa yang seharusnya Anda beri nama itu.

Terutama dengan Java + Eclipse, mengubah nama hal-hal itu tidak menyakitkan sama sekali, karena dengan hati-hati menangani semua referensi di semua kelas, memperingatkan Anda tentang tabrakan nama, dll. Dan selama kelas belum dalam repositori kontrol versi, saya tidak tahu t berpikir ada yang salah dengan mengganti nama 5 kali.

Pada dasarnya, ini adalah pertanyaan tentang bagaimana Anda berpikir tentang refactoring. Secara pribadi, saya suka, meskipun itu kadang-kadang mengganggu teman satu tim saya, karena mereka percaya tidak pernah menyentuh sistem yang sedang berjalan . Dan dari semua yang Anda bisa refactor, mengubah nama adalah salah satu hal paling berbahaya yang dapat Anda lakukan.

Lena Schimmel
sumber
3

Mengapa bukan HelpDocumentServiceClient yang seteguk, atau HelpDocumentClient ... tidak masalah itu vendor, intinya adalah klien ke layanan web yang berurusan dengan dokumen Bantuan.

Dan ya penamaan itu sulit.

JoshBerke
sumber
3

Hanya ada satu nama yang masuk akal untuk kelas itu:

HelpRequest

Jangan biarkan detail implementasi mengalihkan Anda dari maknanya.

Angus Glashier
sumber
Setahun setengah kemudian, saya akan menyarankan HelpLibraryuntuk kelas, tapi ini setidaknya sama baiknya. Membayar untuk membaca jawaban terlebih dahulu!
Jeff Sternal
2

Investasikan dalam alat refactoring yang bagus!

TGnat
sumber
lol. Kadang-kadang refactoring bukan pilihan terbaik (proyek C ++ besar), tapi saya sudah terpaksa melakukannya sebelumnya. Kadang-kadang saya hanya harus menyelesaikan sesuatu, dan nama-nama mendatangi saya nanti.
Steve S
2

Saya berpegang pada dasar-dasar: VerbNoun (argumen). Contoh: GetDoc (docID).

Tidak perlu mewah. Akan mudah untuk memahami satu tahun dari sekarang, apakah itu Anda atau orang lain.

LJ.
sumber
Meskipun ini terbaca dengan baik, ia berorganisasi dengan buruk karena mundur. Lebih baik mengatakan DocGet () karena ketika Anda juga membuat DocAdd () DocRemove () dll mereka semua akan muncul bersama dalam daftar. Metode Anda benar-benar menunjukkan bagaimana jeleknya jika Anda memiliki puluhan Gets atau yang lainnya.
TravisO
Saran yang bagus, TravisO.
Jon Smock
Saya tidak akan menggunakan kata kerja untuk kelas secara normal.
willcodejavaforfood
2

Bagi saya, saya tidak peduli berapa lama metode atau nama kelas asalkan deskriptif dan di perpustakaan yang benar. Lama berlalu adalah hari-hari di mana Anda harus ingat di mana setiap bagian API berada.

Intelisense ada untuk semua bahasa utama. Karena itu ketika menggunakan API pihak ke-3 saya suka menggunakan intelisense-nya untuk dokumentasi yang bertentangan dengan menggunakan dokumentasi 'aktual'.

Dengan pemikiran itu saya baik-baik saja untuk membuat nama metode seperti

StevesPostOnMethodNamesBeingLongOrShort

Lama - tapi terus kenapa. Siapa yang tidak menggunakan layar 24 inci hari ini!

Steve
sumber
1

Saya harus setuju bahwa penamaan adalah seni. Akan sedikit lebih mudah jika kelas Anda mengikuti "pola desigh" tertentu (pabrik dll).

Otávio Décio
sumber
1

Ini adalah salah satu alasan untuk memiliki standar pengkodean. Memiliki standar cenderung membantu memunculkan nama saat dibutuhkan. Ini membantu membebaskan pikiran Anda untuk digunakan untuk hal-hal lain yang lebih menarik! (-:

Saya akan merekomendasikan membaca bab yang relevan dari Kode Lengkap ( tautan Amazon ) Steve McConnell yang membahas beberapa aturan untuk membantu keterbacaan dan bahkan pemeliharaan.

HTH

Bersulang,

rampok

Rob Wells
sumber
1

Tidak, debugging adalah hal yang paling sulit bagi saya! :-)

Stew S
sumber
debugging biasanya muncul untuk menanyakan pertanyaan yang tepat. Ada permainan angka ini di mana Anda harus menebak angka dari 1 hingga 1000. Jika tebakan Anda terlalu rendah atau tinggi, konsol memberi tahu Anda, dan Anda hanya memiliki 10 percobaan. Apa yang kamu kerjakan?
Haoest
1

DocumentFetcher? Sulit dikatakan tanpa konteks.

Ini dapat membantu untuk bertindak seperti ahli matematika dan meminjam / menciptakan leksikon untuk domain Anda saat Anda mulai: menyelesaikan kata-kata sederhana yang menyarankan konsep tanpa mengeja setiap kali. Terlalu sering saya melihat frase panjang latinate yang berubah menjadi akronim, membuat Anda membutuhkan kamus untuk singkatan pula .

Darius Bacon
sumber
1

Bahasa yang Anda gunakan untuk menggambarkan masalah, adalah bahasa yang harus Anda gunakan untuk variabel, metode, objek, kelas, dll. Secara longgar, kata benda mencocokkan objek dan metode kata kerja yang cocok. Jika Anda kehilangan kata-kata untuk menggambarkan masalah, Anda juga tidak memiliki pemahaman (spesifikasi) masalah yang lengkap.

Jika hanya memilih di antara serangkaian nama, maka itu harus didorong oleh konvensi yang Anda gunakan untuk membangun sistem. Jika Anda datang ke tempat baru, ditemukan oleh konvensi-konvensi sebelumnya, maka selalu ada gunanya menghabiskan upaya untuk memperpanjangnya (dengan benar, konsisten) untuk membahas kasus baru ini.

Jika ragu, tidur di atasnya, dan pilih nama yang paling jelas pertama, keesokan paginya :-)

Jika Anda bangun suatu hari dan menyadari bahwa Anda salah, segera ubah itu.

Paul.

BTW: Document.fetch () cukup jelas.

Paul W. Homer
sumber
1

Saya menemukan saya memiliki masalah paling besar dalam variabel lokal. Sebagai contoh, saya ingin membuat objek bertipe DocGetter. Jadi saya tahu itu DocGetter. Mengapa saya harus memberikan nama lain? Saya biasanya berakhir memberinya nama seperti dg (untuk DocGetter) atau temp atau sesuatu yang sama-sama tidak deskriptif.

Jason Baker
sumber
1

Jangan lupa pola desain (bukan hanya yang GoF) adalah cara yang baik untuk menyediakan kosa kata umum dan nama mereka harus digunakan setiap kali seseorang sesuai situasi. Itu bahkan akan membantu pendatang baru yang akrab dengan nomenklatur untuk dengan cepat memahami arsitektur. Apakah kelas ini yang sedang Anda kerjakan seharusnya bertindak seperti Proxy, atau bahkan Façade?

Herrmann
sumber
1

Bukankah seharusnya dokumentasi vendor menjadi objeknya? Maksud saya, yang satu itu nyata, dan bukan hanya sebagai antropomorfisasi bagian dari program Anda. Jadi, Anda mungkin memiliki VendorDocumentationkelas dengan konstruktor yang mengambil informasi. Saya berpikir bahwa jika nama kelas berisi kata kerja, seringkali ada yang tidak beres.

Svante
sumber
1

Aku pasti merasakanmu. Dan aku merasakan sakitmu. Setiap nama yang saya pikirkan sepertinya sampah bagi saya. Semuanya tampak sangat umum dan saya ingin akhirnya belajar bagaimana menyuntikkan sedikit bakat dan kreativitas ke dalam nama saya, membuat mereka benar-benar mencerminkan apa yang mereka gambarkan.

Satu saran yang saya miliki adalah berkonsultasi dengan Thesaurus. Word memiliki yang bagus, seperti halnya Mac OS X. Itu benar-benar dapat membantu saya keluar dari awan dan memberi saya tempat awal yang baik serta beberapa inspirasi.

John Gallagher
sumber
0

Jika nama itu akan menjelaskan dirinya kepada seorang programmer awam maka mungkin tidak perlu mengubahnya.

dreamlax
sumber