Dari menggunakan sejumlah bahasa pemrograman dan pustaka, saya telah memperhatikan berbagai istilah yang digunakan untuk jumlah total elemen dalam koleksi.
Yang paling umum tampaknya length
, count
, dan size
.
misalnya.
array.length
vector.size()
collection.count
Apakah ada istilah yang disukai untuk digunakan? Apakah itu tergantung pada jenis koleksi apa itu? yaitu. bisa berubah / tidak berubah
Apakah ada preferensi untuk menjadi properti alih-alih metode?
collections
naming-conventions
terminology
semantics
gula tetes
sumber
sumber
List.Capacity
properti juga di C #.Jawaban:
Length()
cenderung merujuk ke elemen yang berdekatan - string memiliki panjang misalnya.Count()
cenderung merujuk pada jumlah elemen dalam koleksi yang lebih longgar.Size()
cenderung merujuk pada ukuran koleksi, sering kali ini dapat berbeda dari panjang dalam kasus-kasus seperti vektor (atau string), mungkin ada 10 karakter dalam sebuah string, tetapi penyimpanan dicadangkan untuk 20. Ini juga dapat merujuk pada jumlah elemen - periksa sumber / dokumentasi.Capacity()
- Digunakan untuk merujuk secara khusus ruang yang dialokasikan dalam koleksi dan bukan jumlah elemen yang valid di dalamnya. Jika tipe memiliki "kapasitas" dan "ukuran" yang ditentukan maka "ukuran" biasanya merujuk pada jumlah elemen yang sebenarnya.Saya pikir intinya adalah ke bahasa manusia dan idiom, ukuran string tidak tampak terlalu jelas, sementara panjang satu set sama membingungkan meskipun mereka dapat digunakan untuk merujuk pada hal yang sama (jumlah elemen ) dalam kumpulan data.
sumber
size()
mengacu pada jumlah elemen dalam vektor, tidak nyacapacity()
... setidaknya dalam C ++, yang saya pikir adalah pencetusvector
s dengansize
s.std::vector
(C ++) misalnya menggunakan "kapasitas" dan "ukuran" di mana Anda menggunakan "ukuran" dan "menghitung", masing-masing. Sebenarnya, semua yang distd::
gunakan "ukuran" untuk jumlah elemen saat ini, bahkanstd::string
(yang menyediakan "ukuran" untuk kompatibilitas template dan "panjang" yang sama sekali identik untuk ... kenyamanan manusia kurasa).FWIW (dan itu hampir tidak ada artinya), saya lebih suka 'Count' karena sepertinya mengindikasikan bahwa itu akan mengembalikan jumlah elemen / item dalam koleksi dengan sangat jelas.
Ketika dihadapkan dengan istilah 'Panjang' atau 'Ukuran', saya sering bertanya-tanya sejenak (atau bahkan dipaksa membaca ulang dokumentasi) apakah benda itu akan memberi tahu saya berapa banyak elemen yang ada dalam koleksi atau bagaimana banyak byte yang dikonsumsi oleh koleksi. Ini terutama berlaku untuk koleksi yang dimaksudkan untuk bersifat kontingensi seperti array atau string.
Tapi tidak ada orang yang bertanggung jawab atas konvensi penamaan yang digunakan oleh Java, BCL / .Net, atau C / C ++ kerangka kerja standar / perpustakaan yang bertanya kepada saya, jadi Anda semua terjebak dengan apa pun yang muncul.
Kalau saja saya jauh lebih pintar dari saya dan bernama Bjarne, kalian semua bisa terhindar dari kesengsaraan ...
Tentu saja, kembali ke dunia nyata, Anda harus mencoba untuk tetap menggunakan konvensi penamaan apa pun yang digunakan oleh bahasa / platform yang Anda gunakan (mis.,
size()
Dalam C ++). Bukannya ini sepertinya membantu Anda denganArray.Length
dilema Anda .sumber
Istilahnya agak bergantian, meskipun dalam beberapa situasi saya lebih suka satu sama lain. Biasanya Anda bisa mendapatkan penggunaan terbaik jika Anda berpikir tentang Bagaimana Anda menggambarkan panjang / ukuran / jumlah elemen ini secara verbal kepada orang lain?
length()
menyiratkan bahwa elemen memiliki panjang. Sebuah string memiliki panjang. Anda mengatakan "string panjangnya 20 karakter", kan? Jadi panjangnya.size()
menyiratkan bahwa elemen memiliki ukuran. Misalnya file memiliki ukuran. Anda mengatakan "file ini memiliki ukuran 2 MB", kan? Jadi ada ukurannya.Yang mengatakan, string juga dapat memiliki ukuran, tetapi saya akan mengharapkan sesuatu yang lain di sini. Misalnya string UTF-16 mungkin memiliki panjang 100 karakter, tetapi karena setiap karakter terdiri dari dua byte, saya berharap ukurannya menjadi 200.
count()
sangat tidak biasa. Objective-C menggunakan count untuk jumlah elemen dalam array. Orang mungkin berdebat jika array memiliki panjang (seperti di Jawa), memiliki ukuran (seperti dalam kebanyakan bahasa lain) atau memiliki hitungan. Namun, ukuran mungkin lagi menjadi ukuran dalam byte (jika item array adalah 32 bit int, setiap item adalah 4 byte) dan panjangnya ... Saya tidak akan mengatakan "sebuah array adalah 20 elemen panjang", yang terdengar agak aneh untuk saya. Saya akan mengatakan "sebuah array memiliki 20 elemen". Saya tidak yakin apakah hitung mengekspresikan dengan sangat baik, tetapi saya pikir hitung di sini adalah bentuk singkat untukelementCount()
dan itu lagi jauh lebih masuk akal untuk array daripada panjang () atau ukuran ().Jika Anda membuat objek / elemen sendiri dalam bahasa pemrograman, sebaiknya gunakan apa pun yang menggunakan elemen serupa lainnya, karena programmer digunakan untuk mengakses properti yang diinginkan menggunakan istilah itu.
sumber
length
, tetapi penyimpanan yang berbeda mungkin menggunakan yang berbedasizes
untuk menyimpan datanya. Java juga berpikir demikian dalam java.io.File # length () , tetapi sepertinya seluruh dunia tidak setuju.Hitungan Saya pikir adalah istilah yang paling jelas untuk digunakan jika Anda mencari jumlah item dalam koleksi. Itu bahkan harus jelas bagi pemrogram baru yang belum terlalu melekat pada bahasa yang diberikan.
Dan itu harus berupa properti seperti itu: deskripsi (alias properti) dari koleksi. Sebuah metode akan menyiratkan bahwa ia harus melakukan sesuatu pada koleksi untuk mendapatkan jumlah item dan itu sepertinya tidak intuitif.
sumber
Hmm ... saya tidak akan menggunakan ukuran. Karena ini mungkin dikacaukan dengan ukuran dalam byte. Panjang - bisa masuk akal untuk array, selama mereka seharusnya menggunakan byte memori yang konsekuen. Meskipun ... panjang ... dalam apa? Hitungannya jelas. Berapa banyak elemen. Saya akan menggunakan hitungan.
Tentang properti / metode, saya akan menggunakan properti untuk menandai itu cepat, dan metode untuk menandai itu lambat.
Dan yang paling penting - saya akan tetap berpegang pada standar bahasa / perpustakaan yang Anda gunakan.
sumber
Menambahkan ke jawaban @ gbjbaanb ...
Jika "properti" menyiratkan akses publik ke nilai, saya akan mengatakan bahwa "metode" lebih disukai hanya untuk menyediakan enkapsulasi dan untuk menyembunyikan implementasinya.
Anda mungkin berubah pikiran tentang cara
count
elemen atau cara mempertahankannyacount
. Jika ini adalah properti, Anda macet - jika diakses melalui metode, Anda dapat mengubah implementasi yang mendasarinya tanpa memengaruhi pengguna koleksi.sumber
Dalam Elixir sebenarnya ada skema penamaan yang jelas terkait dengan itu lintas tipe dalam bahasa.
sumber
Bagi saya, ini seperti bertanya apakah "pendahuluan" lebih baik daripada "untuk masing-masing". Itu hanya tergantung pada bahasa / kerangka kerja.
sumber
Saya akan mengatakan bahwa itu tergantung pada bahasa tertentu yang Anda gunakan dan kelas . Sebagai contoh di c # jika Anda menggunakan Array Anda memiliki Panjang Properti , jika Anda memiliki sesuatu yang mewarisi dari IEnumerable Anda memiliki ekstensi Metode Count (), tetapi itu tidak cepat. Dan jika Anda mewarisi dari ICollection Anda memiliki Hitung Properti .
sumber