문제

여러 프로그래밍 언어와 라이브러리를 사용함으로써 컬렉션의 총 요소 수에 다양한 용어가 사용되었습니다.

가장 흔한 것 같습니다 length, count, 그리고 size.

예를 들어.

array.length
vector.size()
collection.count

선호하는 용어가 사용될 것이 있습니까? 그것이 어떤 유형의 컬렉션인지에 달려 있습니까? 즉. 돌연변이/불변

메소드 대신 속성이되는 것을 선호합니까?

도움이 되었습니까?

해결책

Length() 연속 요소를 지칭하는 경향이 있습니다. 예를 들어 문자열의 길이가 있습니다.

Count() 느슨한 컬렉션의 요소 수를 참조하는 경향이 있습니다.

Size() 컬렉션의 크기를 참조하는 경향이 있으며, 종종 벡터 (또는 문자열)와 같은 경우 길이와 다를 수 있으며 문자열에는 10자가있을 수 있지만 스토리지는 20에 예약되어 있습니다. 요소 - 확인 소스/문서를 확인합니다.

Capacity() - 수집에서 할당 된 공간을 구체적으로 참조하는 데 사용됩니다. 유형에 "용량"과 "크기"가 모두있는 경우 "크기"는 일반적으로 실제 요소의 수를 나타냅니다.

요점은 인간의 언어와 관용구에 달려 있다고 생각합니다. 문자열의 크기는 그다지 분명하지 않은 것처럼 보이지만, 세트의 길이는 같은 것을 참조하는 데 사용될 수 있지만 세트의 길이는 똑같이 혼란 스럽습니다 (요소 수입니다. ) 데이터 모음에서.

다른 팁

fwiw (그리고 그것은 사라지지 않음), 나는 컬렉션의 요소/항목의 수를 명확하게 반환 할 것이라는 것을 나타 내기 때문에 'count'를 선호합니다.

'길이'또는 '크기'라는 용어에 직면했을 때 나는 종종 잠시 동안 궁금해하는 것 (또는 문서화를 다시 읽어야 함) 많은 바이트가 컬렉션을 소비하고 있습니다. 이것은 배열이나 문자열처럼 우발적 인 컬렉션에 특히 그렇습니다.

그러나 Java, BCL/.NET 또는 C/C ++ 표준 프레임 워크/라이브러리가 사용하는 이름 지정 규칙을 담당 한 사람은 나에게 물어 보는 것을 귀찮게하지 않았으므로 모두 자신이 생각해 낸 모든 것에 붙어 있습니다.

만약 내가 나보다 훨씬 더 똑똑하고 Bjarne이라는 이름 이었다면, 당신은 모두 불행을 겪을 것입니다 ...

물론, 현실 세계로 돌아가서, 당신은 당신이 사용하고있는 언어/플랫폼에서 사용되는 명명 규칙을 고수해야합니다 (예 : size() C ++). 이것이 당신을 도와주는 것 같습니다 Array.Length 양도 논법.

이 용어는 다소 상호 교환 적으로 이루어 지지만 어떤 상황에서는 서로를 선호합니다. 일반적으로 생각하면 최상의 사용량을 얻을 수 있습니다. 이 요소의 길이/크기/수를 다른 사람에게 구두로 설명 하시겠습니까?.

length() 요소의 길이가 있음을 의미합니다. 문자열의 길이가 있습니다. 당신은 "문자열이 20 자 길이"라고 말합니다. 그래서 길이가 있습니다.

size() 요소의 크기가 있음을 의미합니다. 예를 들어 파일의 크기가 있습니다. "이 파일은 2MB 크기"라고 말합니다. 그래서 그것은 크기가 있습니다.

즉, 문자열도 크기를 가질 수 있지만 여기에 다른 것을 기대할 것입니다. 예를 들어 UTF-16 문자열의 길이는 100 자를 가질 수 있지만 모든 문자는 2 바이트로 구성되므로 크기는 200이 될 것으로 예상됩니다.

count() 매우 드문 일입니다. Objective-C는 배열의 요소 수를 카운트합니다. 배열의 길이 (Java에서와 같이)가 있고 크기가 (대부분의 다른 언어에서와 같이) 크기가 있는지 또는 카운트가 있는지 논쟁 할 수 있습니다. 그러나 크기는 바이트의 크기 일 수 있습니다 (배열 항목이 32 비트 int, 각 항목은 4 바이트 인 경우) ... "배열의 길이가 20 요소 길이"라고 말하지 않을 것입니다. 나. 나는 "배열에는 20 개의 요소가 있습니다"라고 말하고 싶습니다. Count가 그것을 잘 표현하는지 확실하지 않지만 Count가 여기에 짧은 형태라고 생각합니다. elementCount() 그리고 그것은 길이 () 또는 size ()보다 배열에 대해 다시 의미가 있습니다.

프로그래밍 언어로 고유 한 객체/요소를 만드는 경우 프로그래머는 해당 용어를 사용하여 원하는 속성에 액세스하는 데 사용되므로 다른 유사한 요소를 사용하는 것이 가장 좋습니다.

컬렉션의 항목 수를 찾고 있다면 사용하기가 가장 확실한 용어라고 생각합니다. 그것은 아직 주어진 언어에 특히 첨부되지 않은 새로운 프로그래머에게도 명백해야합니다.

그리고 그것은 그것이 바로 그 것과 같은 속성이어야합니다 : 컬렉션의 설명 (일명 속성). 이 방법은 항목의 수를 얻기 위해 컬렉션에 무언가를해야한다는 것을 암시하고 직관적이지 않은 것 같습니다.

흠 ... 크기를 사용하지 않을 것입니다. 이것은 바이트의 크기와 혼동 될 수 있기 때문입니다. 길이 - 결과적으로 메모리의 바이트를 사용해야하는 한 배열에 대해 의미가있을 수 있습니다. 그래도 ... 길이 ... 뭐? 수는 명확합니다. 얼마나 많은 요소. 나는 count를 사용할 것입니다.

속성/방법에 대해, 나는 속성을 사용하여 빠르게 표시하고, 느리게 표시하는 방법을 표시합니다.

그리고 가장 중요한 것은 - 나는 당신이 사용하는 언어/라이브러리의 표준을 고수 할 것입니다.

@gbjbaanb의 답변에 추가 ...

"속성"이 값에 대한 공개 액세스를 의미하는 경우, 캡슐화를 제공하고 구현을 숨기기 위해 단순히 "방법"이 선호된다고 말합니다.

당신은 방법에 대해 마음을 바꿀 수 있습니다 count 요소 또는 어떻게 유지 관리 count. 재산이라면, 당신은 붙어 있습니다 - 메소드를 통해 반복되는 경우, 컬렉션의 사용자에게 영향을 미치지 않고 기본 구현을 변경할 수 있습니다.

Elixir에는 실제로 언어의 유형에 따라 명확한 명명 체계가 있습니다.

데이터 구조의 요소 수를 "계산"할 때 Elixir는 간단한 규칙을 준수합니다. 함수의 이름이 지정됩니다. size 작업이 일정한 시간에있는 경우 (즉, 값은 사전 계산) 또는 length 작업이 선형 인 경우 (예 : 입력이 증가함에 따라 길이가 느려집니다).

나에게 이것은 "foreach"가 "각각"보다 낫지 묻는 것과 조금 비슷합니다. 언어/프레임 워크에 달려 있습니다.

나는 그것이 특별하다고 말할 것입니다 언어 당신이 사용하고 있습니다 클래스. 예를 들어 C#에서 배열을 사용하는 경우 재산 길이, ienumerable에서 상속되는 것이 있다면 확장이 있습니다. 방법 count ()이지만 빠르지는 않습니다. 그리고 당신이 icollection에서 상속된다면 당신은 가지고 있습니다 재산 세다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top