Os termos são um tanto intercambiáveis, embora em algumas situações eu prefira um ao outro. Normalmente, você pode obter o melhor uso se pensar em como descreveria o comprimento / tamanho / contagem desse elemento verbalmente para outra pessoa?
length()
implica que o elemento tenha um comprimento. Uma string tem um comprimento. Você diz "uma string tem 20 caracteres", certo? Então tem um comprimento.
size()
implica que o elemento tem um tamanho. Por exemplo, um arquivo tem um tamanho. Você diz "este arquivo tem um tamanho de 2 MB", certo? Então tem um tamanho.
Dito isto, uma string também pode ter um tamanho, mas eu esperaria algo mais aqui. Por exemplo, uma string UTF-16 pode ter um comprimento de 100 caracteres, mas como cada caractere é composto de dois bytes, eu esperaria que o tamanho fosse 200.
count()
é muito incomum. O Objective-C usa count para o número de elementos em uma matriz. Alguém poderia argumentar se uma matriz tem um comprimento (como em Java), tem um tamanho (como na maioria das outras linguagens) ou tem uma contagem. No entanto, tamanho pode ser novamente o tamanho em bytes (se os itens da matriz tiverem 32 bits int, cada item tem 4 bytes) e o comprimento ... Eu não diria que "uma matriz possui 20 elementos", isso soa estranho para mim. Eu diria "uma matriz tem 20 elementos". Não tenho certeza se count expressa isso muito bem, mas acho que count é aqui uma forma abreviada de elementCount()
e isso novamente faz muito mais sentido para uma matriz do que length () ou size ().
Se você criar objetos / elementos próprios em uma linguagem de programação, é melhor usar quaisquer outros elementos semelhantes, pois os programadores são usados para acessar a propriedade desejada usando esse termo.
List.Capacity
propriedade também em C #.