Los términos son algo intercambiables, aunque en algunas situaciones preferiría una sobre otra. Por lo general, puede obtener el mejor uso si piensa en ¿Cómo describiría la longitud/tamaño/conteo de este elemento verbalmente a otra persona?.
length()
implica que el elemento tiene una longitud. Una cuerda tiene una longitud. Usted dice "una cadena tiene 20 caracteres", ¿verdad? Entonces tiene una longitud.
size()
implica que el elemento tiene un tamaño. P.ej. un archivo tiene un tamaño. Usted dice "este archivo tiene un tamaño de 2 MB", ¿verdad? Entonces tiene un tamaño.
Dicho esto, una cadena también puede tener un tamaño, pero esperaría algo más aquí. P.ej. una cadena UTF-16 puede tener una longitud de 100 caracteres, pero como cada carácter está compuesto por dos bytes, espero que el tamaño sea 200.
count()
es muy inusual. Objective-C usa recuento para la cantidad de elementos en una matriz. Uno podría argumentar si una matriz tiene una longitud (como en Java), tiene un tamaño (como en la mayoría de los otros idiomas) o tiene un recuento. Sin embargo, el tamaño podría volver a ser el tamaño en byte (si los elementos de la matriz son 32 bits int, cada elemento es 4 bytes) y longitud ... No diría que "una matriz tiene 20 elementos", eso suena bastante extraño yo. Diría que "una matriz tiene 20 elementos". No estoy seguro si el conteo lo expresa muy bien, pero creo que el recuento es aquí una forma abreviada para elementCount()
y eso tiene mucho más sentido para una matriz que la longitud() o el tamaño().
Si crea objetos/elementos propios en un lenguaje de programación, es mejor usar cualquier otro elemento similar que use, ya que los programadores están acostumbrados a acceder a la propiedad deseada utilizando ese término.
Y también está la propiedad 'List.Capacity' en C#. – RBT
Espero que los nuevos idiomas eviten términos ambiguos. –