많은 프로그래밍 언어와 라이브러리를 사용하면서 컬렉션의 총 요소 수에 사용되는 다양한 용어를 발견했습니다.
가장 일반적인 것 같다 length
, count
하고 size
.
예.
array.length
vector.size()
collection.count
선호되는 용어가 있습니까? 어떤 유형의 컬렉션에 의존합니까? 즉. 가변 / 불변
메소드 대신 속성이 선호 되는가?
많은 프로그래밍 언어와 라이브러리를 사용하면서 컬렉션의 총 요소 수에 사용되는 다양한 용어를 발견했습니다.
가장 일반적인 것 같다 length
, count
하고 size
.
예.
array.length
vector.size()
collection.count
선호되는 용어가 있습니까? 어떤 유형의 컬렉션에 의존합니까? 즉. 가변 / 불변
메소드 대신 속성이 선호 되는가?
답변:
Length()
연속 요소를 참조하는 경향이 있습니다-예를 들어 문자열 길이가 있습니다.
Count()
느슨한 컬렉션의 요소 수를 나타내는 경향이 있습니다.
Size()
컬렉션의 크기를 나타내는 경향이 있습니다. 종종 벡터 (또는 문자열)와 같은 경우 길이와 다를 수 있습니다. 문자열에 10자가있을 수 있지만 저장 공간은 20 개로 예약되어 있습니다. 요소-소스 / 문서를 확인하십시오.
Capacity()
-컬렉션에 할당 된 공간을 나타내며 유효한 요소 수가 아닙니다. type에 "capacity"와 "size"가 모두 정의 된 경우 "size"는 일반적으로 실제 요소 수를 나타냅니다.
요점은 인간의 언어와 관용구에 달려 있다고 생각합니다. 문자열의 크기는 매우 분명하지 않은 반면, 세트의 길이는 동일한 것을 참조하는 데 사용하더라도 똑같이 혼란 스럽습니다 (요소 수 )를 수집합니다.
size()
벡터의 요소 수를 의미 하지 는 capacity()
... 내가의 발신자 생각하는 C ++ 적어도 vector
와의 size
의.
std::vector
예를 들어 (C ++)는 "size"및 "count"를 각각 사용하는 "capacity"및 "size"를 사용합니다. 사실, 모든 것을 에서 std::
현재 요소 수, 심지어위한 용도 "크기" std::string
(템플릿 호환성과 내 생각에 ... 인간의 편리 완전히 동일한 "길이"에 대한 "크기"를 제공).
FWIW (그리고 사라지는 것은 거의 없음), 'Count'를 선호합니다. 컬렉션의 요소 / 항목 수를 명확하게 반환한다는 것을 나타 내기 때문입니다.
'길이'또는 '크기'라는 용어에 직면했을 때 나는 종종 얼마나 많은 요소가 컬렉션에 있는지 또는 어떻게 컬렉션이 소비하는 많은 바이트. 이것은 배열이나 문자열과 같은 우연한 컬렉션에 특히 해당됩니다.
그러나 Java, BCL / .Net 또는 C / C ++ 표준 프레임 워크 / 라이브러리에서 사용되는 이름 지정 규칙을 책임지는 사람은 아무도 귀찮게하지 않았습니다.
내가 나보다 훨씬 똑똑하고 Bjarne이라는 이름을 가진 사람이라면 모두 불행을 겪을 수 있습니다 ...
물론, 현실 세계로 돌아가서, 사용중인 언어 / 플랫폼에서 사용하는 이름 지정 규칙 (예 : size()
C ++) 을 고수해야합니다 . 이것이 당신의 Array.Length
딜레마 에 도움이되는 것 같지는 않습니다 .
일부 상황에서는 다른 용어를 선호하지만 용어는 다소 상호 교환 가능합니다. 일반적 으로이 요소의 길이 / 크기 / 개수를 다른 사람에게 구두로 어떻게 설명 하시겠습니까?
length()
요소의 길이가 있음을 나타냅니다. 문자열은 길이가 있습니다. "문자열의 길이는 20 자"입니다. 그래서 길이가 있습니다.
size()
요소의 크기가 있음을 나타냅니다. 예를 들어 파일 크기가 있습니다. "이 파일의 크기는 2MB"입니다. 크기가 있습니다.
즉, 문자열도 크기를 가질 수 있지만 여기에 다른 것이 필요합니다. 예를 들어 UTF-16 문자열의 길이는 100 자이지만 모든 문자가 2 바이트로 구성되므로 크기는 200이 될 것으로 예상됩니다.
count()
매우 이례적입니다. Objective-C는 배열의 요소 수에 count를 사용합니다. 배열에 길이가 있거나 (Java에서와 같이) 크기가 있거나 (대부분의 다른 언어에서와 같이) 개수가있는 경우 논쟁 할 수 있습니다. 그러나 크기는 다시 바이트 단위의 크기 일 수 있습니다 (배열 항목이 32 비트 int이면 각 항목은 4 바이트입니다). 길이는 "배열이 20 요소입니다"라고 말하지 않을 것입니다. 나를. "배열에는 20 개의 요소가 있습니다"라고 말하고 싶습니다. count가 그 점을 잘 표현하고 있는지 확실하지 않지만 count는 짧은 형식 elementCount()
이며 length () 또는 size ()보다 배열에 대해 더 의미 가 있다고 생각 합니다.
프로그래밍 언어로 고유 한 객체 / 요소를 만드는 경우 프로그래머가 해당 용어를 사용하여 원하는 속성에 액세스하는 데 사용되므로 다른 유사한 요소를 사용하는 것이 가장 좋습니다.
length
하지만 스토리지마다 다른 스토리지 sizes
를 사용하여 데이터를 저장할 수 있습니다 . Java는 java.io.File # length () 에서도 그렇게 생각 하지만 세계의 다른 사람들은 동의하지 않는 것 같습니다.
@gbjbaanb의 답변에 추가 ...
만약 "property"가 그 가치에 대한 대중의 접근을 의미한다면, "method"가 단순히 캡슐화를 제공하고 구현을 숨기는 것이 바람직하다고 말할 것입니다.
count
요소 화 방법이나 유지 관리 방법 에 대한 생각이 바뀔 수 있습니다 count
. 그것이 속성이라면, 당신은 붙어 있습니다-그것이 메소드를 통해 접근한다면, 컬렉션의 사용자에게 영향을 미치지 않고 기본 구현을 변경할 수 있습니다.
List.Capacity
C #에도 속성이 있습니다.