2009-07-06 5 views
2

LOC (코드 줄)의 수를 기반으로 프로그램을 이해하는 데 걸리는 시간에 대해 광범위하고 지나치게 일반적으로 쓸모없는 규칙이 있습니까?LOC에 의해 프로그램을 이해하는 시간

(나는 어떤 규칙이, 넓은 overgeneralized 주로 쓸모가있을 것 이해합니다. 즉, 괜찮습니다.)

(문제의 언어 델파이,하지만 난이 넓은 overgeneralized을 찾고 있기 때문에 그 문제가되지해야하며, 대부분 쓸모없는 규칙입니다.)

+7

대답은 "42"입니다. –

+0

-1 : Google 검색 결과 아무 것도 발견되지 않았습니다. –

답변

4

피어 코드 검토에 관한 일부 논문은 시간당 100 줄에서 400 줄 사이에 있어야한다고 말합니다.

+0

나는 그것을 좋아한다. 이를 통해 3.5 ~ 14주의 근무 기간 동안 코드를 이해할 수 있습니다. 나는 분명히 넓고, 지나치게 일반화 된, 그리고 거의 쓸모없는 것에 대한 설명에 맞다고 말할 것이다. 고맙습니다! –

+0

뭐야? 나는 시간당 50-100 loc, 400까지 얻은 연구에 익숙하다. – AviD

+0

두 번째 생각에서 보안 코드 검토에 대해 이야기하고 있습니다. 아마도 그렇지 않은 것이므로 상당한 차이가있을 수 있습니다. – AviD

3

특정 언어로 프로그래밍하는 개별 사람마다 다른 대략적인 숫자가 있기 때문에 이것을 수행 할 수 없습니다.

프로그램 작성을 위해 Drake'sEquation을 쓰려고합니다.

이것이 내 뜻입니다.

프로그램 작성자 정보.

  • 각 사람은 쓰기와 주석 코드의 다른 스타일을 가지고
  • 모든 프로그래밍 언어에서 사용
  • 데이터 구조도 같은 언어로 여러 가지 방법으로 구현 될 수
  • 알고리즘 서로 다른 뉘앙스와 가독성을 가지고 다른 사람들은 꽤 다양 해지는 경향이 있습니다.
  • 코드가 소스 파일을 통해 배포되는 방식 또한 개인적인 취향에 따라 변경됩니다.

코드를 읽는 사람으로 이동합니다.

  • 언어와 사람의 친숙 알고리즘 및 데이터 구조 패턴을
  • 친숙 사용 문제 동시에 보유 할 수있는 사람이 중요한 것은 정보 컨텍스트
  • 양 중요한

환경에 초점을 맞추면 중요한 것이 될 것입니다.

  • 산만의 양 (모두 프로그래머 및 프로그램을 읽는 사람에 대한) 독자의 부분에 활동과 의욕을 보류 프로그래머
  • 에 대한 코드 해제 시간에
  • 가까움을
  • 인기 이벤트
  • 근접 (휴가, 스포츠 이벤트, 영화 릴리스 날짜!)
+0

난독 화 된 C 코드도 하루에 1 줄의 비율로 이해할 수 있습니다. 따라서 가능한 값의 범위는 드레이크의 방정식만큼 넓지 않습니다. –

+0

Danial이 지적하고자하는 것은 가능한 '매개 변수'의 범위가 식별하고 일반화하기 어렵다는 것입니다.따라서, LOC 당 일별 정렬에 대한 최악의 추정치를 제공 할 수는 있지만 (42 이외의) 수식을 제공하는 사용 가능한 수식은 없습니다. – nik

+0

그런데, 드레이크의 방정식에 매핑 된 것을 과장했다. 나중에, 나는 어느 쪽이 더 넓었는지 조금 모호했다. 마침내 과장된 것에 대해 크게 동의했습니다. – nik

5

그것은이 프로그램을 이해하는 데 걸리는 시간을 결정 LOC의 수는 아니다, 그것은 복잡성 더.

내 프로그램에 인쇄 문장이 10 만 줄이면 프로그램을 이해하는 것이 분명하다고 생각합니다. 그러나 for-loops가 10 개 깊숙이 중첩 된 프로그램이 있다면 이해하는 데 시간이 오래 걸릴 것이라고 생각합니다.

Cyclomatic complexityROUGH에 코드를 이해하는 데 얼마나 어려운지 표시하고 코드에 대한 다른 경고 플래그를 알릴 수 있습니다.

+0

동의. 그러나 숫자가 없으면 이것은 도움이되지 않습니다. SourceMonitor (메트릭 프로그램)는 평균 복잡성 7.45를보고합니다. 그래서 복잡도가 10이고 복잡도가 5보다 복잡한 프로그램보다 간단하다는 것을 압니다. 그러나 참조 점이 없으면 아무 것도 말해주지 않습니다. –

1

나는 광범위하고 지나치게 일반적으로 쓸모없는 규칙을 찾고 있습니다.

여러분은 새로운 코드베이스를 배울 때 시간이 얼마나 걸리는 지 알기 원합니다. 이 경우 온라인에서 코드 스 니펫을 찾고 시간을 이해하는 데 걸리는 시간을 확인하십시오. 이것을 스 니펫의 줄 수로 나눕니다. 일부 패딩을 추가하십시오. 빵! 당신 규칙이 있습니다.

+0

프로그램의 크기에 따라 시간이 선형 적으로 또는 거의 선형으로 변화하는지 확신 할 수 없습니다. – ChrisW

+0

그래서 더 많은 샘플을 추가하고 시간을 계획하여 어떤 종류의 커브가 따르는 지 확인하십시오. 선형 일 수도 있고, 다항식 일 수도 있고, 지수 일 수도 있습니다. 솔직히, 나는 그것이 대수적이라고 생각합니다 : 5000 라인이있을 때보 다 5 줄이 더 많을 때 코드의 추가 라인이 훨씬 더 많다는 것을 의미합니다. – Welbog

+1

예를 들어, 시간은 프로그램이 얼마나 좋은지에 달려 있습니다. 그것이 얼마나 많은 코드 라인에 포함되어 있지는 않습니다. – ChrisW

3

저는 O (n)이라는 이론을 가지고 있습니다. 왜냐하면 각 행을 모든 다른 행과 함께 이해해야하기 때문입니다.

하지만 실제로는 큰 숫자 표기법을 사용하여 실제 숫자 값을 구할 때이 대답은 광범위하고 지나치게 일반적이어서 쓸모가 없습니다.

+0

프로그램 모듈화가없는 경우 true입니다. – flybywire

+0

어쨌든 사실 : 저는 방금 n * 2에 의해 * 위에 묶여 있다고 말하고 있습니다. O (n)도 O (n^2)입니다. – balpha

2

코드 검토 메트릭 (동일한 것은 아니지만 거의 비슷 함)은 숙련 된 코드 검토자를 위해 시간당 약 50-100 LoC 범위의 숫자를 입력합니다.

이것은 물론 그들이 리뷰, 언어, 복잡성, 친숙성 등에서 무엇을 찾고 있는지에 달려 있습니다.하지만 어쨌든 일반적인 과장을 줄 수도 있습니다. "복잡한 프로그램이 얼마나?"그렇다

+0

이것은 원래의 질문과 다소 다르다고 생각합니다. 코드 검토자는 코드를 비판적으로 검토하지만 독자가 코드를 검토하여 이해합니다. 나는 독자가 평론가보다 훨씬 더 빠르다고 믿는다. –

+0

그래, 나도 동의한다 - 나는 심지어 그것을 지적했다. 그러나 비슷한 *에 대한 실제적인 숫자이다. 그리고 그는 그것을 근거로 무언가를주기 위해 무의미한 숫자를 요구했다. – AviD

0

는, 다른 변수는 같은 것들을 포함 "이 어떻게 당신이 그것을 이해?" 그리고 "얼마나 잘 이해하고 있습니까 다른 프로그램의 기능적 사양과 같은 것들이 있습니까?"

새 프로그램으로 작업하기 시작할 때 가능한 한 으로 이해하려고 노력합니다.

  • 사람이

  • (아무도 내가 전혀 이해할 필요하지 않을 날 다음 프로그램 변경을 원하지 않는 경우) 내가하고 싶어하는 변화의 기능 명세를 이해 : 특히 내가하려고

    가능한 가장 작은 하위 집합을 찾아서 이해하면 다른 기존의/기존 기능을 손상시키지 않고 변경 작업을 수행 할 수 있습니다.

1

COCOMO 방정식을보십시오. 여기에는 소스 코드 줄을 기반으로 광범위하고 지나치게 일반적으로 쓸모없는 규칙이 포함되어 있습니다.

관련 문제