가장 과소 평가 된 프로그래밍 툴 [닫기]


35

우리는 훌륭한 프로그래머 텍스트 편집기, IDE, 디버거, 버전 제어 시스템 등과 같이 프로그래밍 할 때 많은 도움이되는 많은 훌륭한 도구를 가지고 있습니다. 일부 도구는 작업을 수행하기위한 "필수"도구입니다 (예 : 컴파일러). .

여전히 많은 도움을주는 도구들이 있지만, 여러 가지 이유로, 예를 들어, 그들이 출시되었을 때, 그들이 시간을 앞당기 고 지금은 잊혀지고 있습니다.

당신은 도구를 프로그래밍의 어떤 종류의 생각 가장 과소 평가 하나? 답을 동기를 부여하십시오.


3
우리의 두뇌? - -
Trufa

누가 Lisp 항목을 추가하고 싶습니까? * grin *
Mark C

답변:


70

고무 오리. 네 진짜로 요.

http://en.wikipedia.org/wiki/Rubber_duck_debugging

고무 덕 디버깅 , 고무 덕킹고무 덕 테스트 는 소프트웨어 엔지니어링에서 코드 디버깅 방법을 나타내는 데 사용되는 비공식 용어입니다. 이 이름은 이름이없는 전문가 프로그래머가 항상 책상에 고무 오리를 유지하고 자신에게 코드를 한 줄씩 설명하도록 강요하여 코드를 디버깅 할 가능성이있는 묵시적인 이야기를 나타냅니다.

이 프로세스를 사용하기 위해 프로그래머는 고무 오리와 같은 무생물에 코드를 설명하고 잘못된 코드 조각에 도달하여이를 설명하려고 시도하면 오류를 발견하게됩니다. 코드가 수행해야 할 작업을 설명하고 실제로 수행하는 작업을 관찰하면이 두 코드 사이의 불일치가 분명해집니다 ...


6
나는 항상 남편과 함께합니다. 그는 프로그래밍 능력을 대폭 향상시킨 기술 지원 담당자로서, 내가 말한 것의 약 60 %를 이해하지만 내가 이해하지 못하는 40 %를 설명하도록 강요합니다. 그것이 작동하는 경우의 수는 정말 인상적입니다.
Ethel Evans

1
당신은 웃어요. 나는 동료에게 실제로 그녀의 책상에 고무 오리가 있습니다.
Berin Loritsch

57
나는 그것을 시도했지만 내 고무 오리는 문제에 집중할 수 없었습니다. 프로그래밍에 진정으로 관심이있는 적절한 고무 오리를 어디에서 찾을 수 있습니까?
Steve314

3
나는 이것을 위해 나의 일지를 사용한다. 나는 때때로 그것에 대해 꽤 긴 토론을합니다. 나는 때때로 내가 의미하는 바를 스스로 이해할 수 있기를 바랍니다. 이것을 저널에 쓰면 나중에 작업하는 코드를 작성한 바보가 무슨 생각을했는지 궁금 할 때 종종 도움이됩니다.
Lars Wirzenius

1
@Steve : 일본 연구원들이 연구하고 있지만, 그들이 가까이 있다고 생각하지는 않습니다 : youtube.com/watch?v=3g-yrjh58ms
Rei Miyasaka

42

펜과 노트북.

  1. 전기없이 작동합니다.
  2. 가지고 다닐 수 있는.
  3. 회의에서 심심할 때 낙서
  4. 유용한 정보를 저장하십시오.
  5. 적어두면 사람들이 더 중요하게 생각합니다.
  6. 다른 사람들은 그것을 읽고 배울 수 있습니다.

대기업 시절, 엔지니어와 기술자에게는 빈 엔지니어링 노트북이 제공되어 하드 드라이브의 다양한 파일에 넣는 경향이있는 모든 것을 쓸 수있었습니다. 노트북이 가득 차면 안전하고 안전한 저장소로 보내집니다. 누구든지 해당 노트에 액세스해야한다면 노트북을 확인할 수 있습니다.
oosterwal

3
러시아인들은 연필을 사용했습니다.
Job

@Job Hah, 나는 여전히 잉크 병을 사용합니다! (... 글쎄, 서예에 대해서만, 여전히. :))
Mateen Ulhaq

태블릿 PC는 어떻습니까?
Mateen Ulhaq

1
@Job :… 그리고 보드카!
Spoike

38

플랫 텍스트 파일의 로그 출력 또는 데이터를 비교할 때 차이 도구가 사용되지 않는 것 같습니다. 아니면 틈새 시장일까요? 방대한 프로그램 실행 로그를 비교하고 변경된 하나 또는 두 개의 세부 정보를 정확히 찾아내는 것이 디버깅에 매우 유용하고 도움이되는 것 같습니다.

성능 프로파일 링 도구 는 특히 중요한 병목 현상에 부딪 칠 때 매우 유용하지만 그에 익숙한 사람은 거의 없습니다 (이 범주에서 어느 정도 인정합니다).

십여 줄 이상의 선 또는 다중 스키마를 XML 파일로 작업하는 경우 훌륭한 XML 도구 가 필수적입니다. 때로는 다른 편집자들이 강조하는 기본 구문 이상의 것을 필요로합니다. 또한 XML로 작업 할 때 XSL을 배우는 것이 매우 유용 할 수 있습니다. 여러 번 응용 프로그램 코드의 여러 줄에서 수행되는 간단한 XSL 변환으로 수행 할 수있는 작업을 확인했습니다. 분명히 말하지만, 나는 XML 자체 가 "과소 평가 된 프로그래밍 도구"라고 제안 하지는 않는다 . 좋은 XML 편집기 의 가치가 내가 본 것에서 과소 평가 되었다고 제안합니다 .


1
++ 절대적 diff으로 저평가되었습니다. 프로파일 링의 주제에서, 당신은 그들이 유용해야한다고 생각하는 데 혼자가 아니지만, 당신 자신은 방법을 모릅니다. 이것을 확인하십시오.
Mike Dunlavey가

네, 프로파일 링 도구를 실제로 배우는 것에 대해 생각해 봤지만 결코 그럴 수 없었습니다
Anto

23
프로파일 링의 경우 +1, diff 도구의 경우 +1, XML 도구의 경우 -1 어떤 사람들은 문제가 생겼을 때 "XML을 사용할 것입니다"라고 생각합니다. <Problem:Worsening> <Problem:TimeDescription>Now</Problem:TimeDescription> <Problem:Posessive>they have</Problem:Posessive> <Problem:Quantity>many, many</Problem:Quantity> <Problem:WorseningDescription>more problems</Problem:WorseningDescription></ProblemWorsening>
메이슨 휠러

2
@Mason : 귀여운 XML.
Mike Dunlavey가

10
@Mason Wheeler : 문제를 해결하기 위한 도구로 XML 제안하지 않았고 , 좋은 XML 도구를 제안했습니다. XML 로 작업 해야 할 때 매우 유용한 편집기 / 도구가 있는지 확인하십시오. Xpath 쿼리, 스키마 유효성 검사, 변환, 값 대 구조 비교 (특별한 종류의 diff 도구) 등을 실행할 수있는 것 ... 강조 표시가있는 간단한 편집기는 일이 지저분 해지면 잘릴 수 없습니다. 더 나쁘다 (btw 나는 당신의 XML 코드를 좋아한다).
FrustratedWithFormsDesigner

37

정규식

그들은 매우 유용합니다. 로그 파일을 검색하거나 텍스트를 구문 분석 할 때 도움이됩니다. 매우 유용합니다.

나는 그들과 관련된 약간의 학습 곡선이 있기 때문에 내가 사용하지 않는 사람들이 얼마나 많은지 이상하다고 생각합니다. 간단한 정규 표현식이 빨리 다운 될 수있을 때 사람들이 어려운 일을하는 것을 자주 보았습니다 (참고 : 정규식 전에 어려운 일을했습니다).


8
정규 표현식은 올바르게 적용해도 훌륭하더라도 스위스 군용 칼이 아닙니다.
Anto

10
매우 유용하지만 종종 악용되어 암호로 유지 관리 할 수없는 코드가 생성됩니다. 오래된 "지금 당신은 두 가지 문제가 있습니다"라고 말하는 것은 실제로 어떤 근거가 있습니다.
Steve314

4
RegExes는 스위스 군용 칼입니다. 집 전체를 만드는 데 적합한 도구는 아니지만 많은 빠른 작업에 적합한 도구입니다.
JasonTrue

4
흠, 어떤 이유로 나는 정규 표현식이 과소 평가되지 않았다는 인상을 항상 받았다. 나는 종종 사람들이 간단한 split / for-loop로 충분하거나 정규 표현식이 단순히 대답이 아닌 경우 (예 : xml / html 구문 분석) 정규 표현식에 도달하는 것을 보았습니다.
MAK

나는 두 가지 현상을 보았다 : 정규식? 그 내용은 여기에서 읽을 수 없거나 느리게 / 삽입 중대하고 "하나의 정규 표현식으로 구문을 분석하는 (완전히 비정규 문법 삽입) 가장 좋은 방법은 무엇입니까?"
JasonTrue

24

팀원. 핫 샷 아이디어를 사용하지 않고 팀을 통합하는 것을 잊어 버린 경우 왜 작동하지 않는지 또는 더 나은 이유에 대한 우려 나 아이디어를 듣지 못할 것입니다.

나는 이것이 프로그래밍이라고 생각하기 쉽기 때문에 사람들은 그들의 훌륭한 아이디어를 가지고 구석 구석에서 행하는 반사회적 일이라고 생각하기 쉽다. 이를 생각하는 사람들은 아이디어 / 프로젝트 싱크 / 수영을 돕는 데있어 팀과 팀원의 가치를 과소 평가합니다.


좋은 팀원은 결코 과대 평가 될 수 없습니다. 대부분의 소프트웨어 및 하드웨어가 가능합니다.
익명 유형

19

구글. 아직 해결 및 문서화되지 않은 문제는 거의 없습니다. 잘 조정 된 Google 검색어를 사용하면 모든 사람이 많은 시간을 절약 할 수 있습니다.


13
좋은 도구이지만 적어도 더 이상 과소 평가되지 않았다고 확신 할 수 없습니다 (9 ~ 10 년 전에 동의했을 것입니다).
FrustratedWithFormsDesigner

12
죄송하지만 Google이 과소 평가 했습니까? 적어도 구글은 과대 평가되었다 :)
eestein

2
내가 알지! 그러나 과소 평가되었다는 이론적 근거는 귀하가 동의 할 것으로 의심되는 것입니다. StackOverflow에 대해 제기 된 질문의 75 % 이상이 Google에서 쉽게 대답 할 수 있습니다. 분명히 많은 사람들이 그것을 사용하지 않는다면 어느 정도 과소 평가됩니다. 내 근거에 결함이 있으면 답변을 삭제하겠습니다.
Adam Crossland

3
@Adam Crossland : 75 %가 친절합니다. 나는 그것이 그것보다 높다고 생각합니다.
S.Lott

1
@ adam @ s.lott 그래서 요점은 Google이 올바르게 사용되지 않는다는 것입니다. 그것에 동의합니다. 사람들이 Google을 올바르게 사용하는 방법을 알면 많은 질문에 대답 할 수 있습니다 (요청하지 않아도 됨). 문안 인사.
eestein

16

"병목 현상"을 찾는 데 가장 많이 평가되지 않는 도구 는 디버거에서 Ctrl+ C또는 "일시 중지"단추입니다.

의 마지막 단락 확인 이 게시물게시물 , 그리고 이 게시물 스타터를.

많은 사람들이 "프로그램이 너무 느립니다! 어떻게해야합니까? 프로파일 러를 시도했지만 그 내용을 이해하지 못합니다. " 글쎄, 추측은 그뿐입니다. 내가 항상 해왔고 다른 사람들도 해왔 던 일은 진행하고 중단하고 호출 스택을 검사하는 것입니다. 만약 문제가 정말로 나쁘다면, bingo 바로 앞에 있습니다. 문제가 경미한 경우 여러 번 수행하십시오. 피할 수있는 둘 이상의 샘플에 나타나는 것은 수정할 수있는 병목 현상입니다.

예, 이것은 미끼 미끼이지만 효과가 있습니다.


무딘 도구를 과소 평가해서는 안됩니다. 분명히 이것이 항상 정답은 아니지만 가능할 수 있습니다. 필요한 경우 실제 프로파일 러로 수정하기 위해이를 1 차 근사치라고합니다.
Kristof Provost

@ 크리스토프 (Kristof) : 그렇게 생각하고 싶은 유혹이 있으며, 처리 할 수없는 문제가 있으며 샘플을 얻기가 쉽지 않은 경우가 있지만 Zoom과 같은 특정 종류를 제외하고는 프로파일 러가 이러한 경우를 처리 할 수 ​​없습니다 심지어는 문제를 바로 잡을 수 있다는 의미에서 실제로 더 나을 수도 없습니다.
Mike Dunlavey

@ 크리스토프 (Kristof) : 랜덤-일시 정지가 좋지 않은 문제는 다음과 같습니다.-스냅 샷을 제 시간에 찍어 연구하면 그 이유를 알 수 없습니다. 예 : 메시지 중심 처리, 메시지를 보낸 위치 또는 이유 또는 빈도를 알 수없는 위치 또 다른 예 : 메시지가 교환되는 비동기식 프로토콜. 우리는 항상 다른 사람을 기다리는 것 같습니다. 동기 처리의 경우, 프로파일은 더 나은 측정 할 수 있지만, 임의 일시 중지은 더 발견 .
Mike Dunlavey

14

어떤 유형의 프로그래밍 도구가 가장 과소 평가되었다고 생각하십니까? 답을 동기를 부여하십시오.

컴파일러.

대부분의 사람들은 자신이 선택한 컴파일러의 기능을 이해하는 데 시간이 걸리지 않습니다. 그들은 단지 코드를 실행 가능한 프로그램으로 만든다고 생각합니다. 가장 현대적인 구성에는 필요한 구성을 제공 할 수있는 몇 가지 구성이 있습니다. 예를 들어, 사무실의 개발자 절반이 경고를 오류 수준으로 설정하는 방법을 모릅니다 (실제로 가정). 디버그 기호를 출력하려면 어떤 옵션이 필요합니까? 어떤 최적화 (또는 어떤 수준)를 원하십니까? 목록은 계속됩니다.


3
@Kevin : 그리고 실제로 컴파일러가 (정적으로 유형이 지정된 언어에 대한) 검사를 수행하도록 코드를 작성하는 방법을 추가합니다. 대부분의 개발자는 문자열과 같은 선반 유형을 사용하여 관련이없는 데이터에 대해 단순하지만 호환되지 않는 유형을 정의하고 인수를 전달할 때 엉망이되지 않은 컴파일러를 갖는 모든 종류의 정보를 나타냅니다.
Matthieu M.

@Matthieu M : 좋은 지적이기도합니다. 많은 사람들이 당신을 도울 수있는 쉬운 방법을 잊어 버립니다.
kemiller2002

3
모든 컴파일러 경고는 소중한 선물입니다. 그들을 무시하지 마십시오! 더 요청! -실수는 필수입니다.
Kristof Provost

@ 크리스토프 : -pedantic -Wall -Wextra -Werror...하지만 그때 아무것도 구축하기 어려울 수 있지만 : P
Matthieu M.

어쩌면 그것은 나 일지 모르지만 "개발자의 절반"이 디버그 심볼에 대해 알지 못한다고해도 과언이 아닙니다.
kizzx2

10

당신의 두뇌. 다른 도구는 그것 없이는 의미가 없습니다.


4
나는 때때로 가끔 내 서비스를 사용할 수 없게 만들었습니다.
David Thornley

3
"약간 잊혀진": -S

5
과소 평가되었다고 말할 수 있습니다. 너무 많은 사람들이 항상 지름길을 찾고 있으므로 생각할 필요가 없습니다. 상식과 논리를 대체 할 수 없으며 도구는이를 대체 할 수 없습니다.
jnevelson

2
나는 두뇌가 종종 과소 평가되는 Jonathan과 동의합니다. 실제로 너무 많은 프로그래머는 상자 밖으로 나가서 때로는 문제를 조사하기 위해 맞춤형 (저렴하고 더러운 클래스를 버리는) 테스트 사례와 테스트 도구를 작성하는 대신 알고있는 몇 가지 트릭에 의존합니다. 나는 많은 경우 개발자들에게 생각의 상태를 넘어서 몇 가지 질문만으로 문제를 해결할 수있는 수단을주었습니다.
asoundmove

1
일부 의견은 내 의견을 바꾸게 해주었습니다. +1 :)
Anto

10

좋은 예전 :

print

때로는 디버거 또는 프로파일 러 또는 UML 흐름도가 유용합니다. 그리고 때때로 그들은 당신을 미치게 만듭니다. 나는 항상 내 코드가 내가 생각할 때 내가하고 있다고 생각하는 것을 수행하기 위해 인쇄 명령문 (또는 추적 또는 NSLog 또는 무엇을 가지고 있는지)을 사용하여 다시 빠져 나간다.


나는 이것이 언어와 디버거에 달려 있다고 생각합니다. 요즘 인기있는 언어를 위해 가장 알맞은 IDE에서 제공하는 디버거 종류는 인쇄 문보다 훨씬 쉽게 할 수 있습니다.
Billy ONeal

8

평범한 오래된 스크립트 ... 우리가 개발하는 차세대 언어 수에 관계없이 우리는 여전히 스크립트에 크게 의존합니다. 또한 대부분의 일상적인 작업은 몇 줄의 스크립트를 작성하여 달성 할 수 있습니다.


1
.. 나는 이것에 동의하지 않습니다. 예, 스크립트는 일부 작업을 자동화 할 수 있습니다. 그러나 종종 그들은 의미의 범위를 넘어서 스파게티의 큰 파이크가되는 지점까지 가져갑니다.
Billy ONeal

1
사실 큰 스크립트는보기에 끔찍하며 펄이나 파이썬을 사용할 수도 있습니다. 그들은 여전히 ​​작은 일을 완수하는 데 능숙합니다.
Gaurav Sehgal

@ 빌리 파이썬을 사용하십시오. 스파게티 문제 해결 :)
Evan Plaice



5

펄과 다른 스크립팅 언어. Agent Ransack과 같은 GUI 도구에는 너무 복잡한 작업에 적합합니다.


1
나는 그들이 과소 평가되는 확실하지 않다 ...
Anto

3
확실히 과소 평가되었습니다 ... expecially 펄. 랭입니다. 간결한 모토를 유지하도록 매우 잘 설계되었습니다 ... 따라서 완료 해야하는 빠른 작업에는 비용이 들지 않습니다.
Rook

@Rook : 100 명 이상의 연산자를 가진 언어가 어떻게 "간단한"언어로 간주 될 수 있는지 잘 모르겠습니다. 아마도 유용 할 것입니다. 그러나 "간단한"것은 아닙니다.
Billy ONeal

@ 빌리-단순은 강력한 것을 배제하지 않습니다. 계산기가 간단하다는 것을 알았습니다. 내 300 개 기능 중 절반이 무엇을하는지 알지 못하지만 단순성이 줄어들지는 않습니다.
Rook

4

빠르고 자주 리팩토링 할 수있는 키보드 단축키. 일부 키를 눌렀을 때 변수, 메소드, 상수 또는 클래스를 추출하는 방법 (또는 인라인 등)을 학습하면 기본적으로 코딩 방법이 변경되었습니다. 비용이 최소 일 때만 자주 (즉, 충분히) 리팩토링하므로, 이러한 지름길을 제 2의 성격으로 만드는 것은 내가 생각하는 한 좋은 코드를 작성하고 유지하는 데 필수적입니다.

따라서 일반적으로 좋은 도구 (IDE / editor)를 사용하고 제공하는 기능을 최대한 활용하는 방법을 배우십시오.

다음으로 코드를 테스트하고 리팩토링에 대한 두려움을 방지하기 위해 단위 테스트 및 TDD가 제공됩니다.

이것들을 사용하면 DRY 원칙을 준수하고 자체 문서화되는 올바른 유지 관리 가능한 코드 작성으로 쉽게 이동할 수 있습니다.


4

단위 테스트 는 다음과 같은 이점을 제공합니다.

  • 개발자는 코드의 첫 번째 클라이언트가됩니다. 버그가 빨리 잡히면 수정 비용이 줄어 듭니다. 빌드, 설치 또는 배포 전에 버그가 발생할 수 있습니다 .
  • 테스트는 코드에 대한 관점을 바꿉니다. 디자인이 명확합니까? 코너 케이스를 처리합니까?
  • 호손 효과 는 팀이 품질 / 테스트 메트릭을 게시하고 있음을 알리는 것만으로 품질을 향상시킵니다.
  • 테스트가 소스 제어로 확인되지 않더라도 새로운 지형을 탐색하고 배우는 좋은 방법이 될 수 있습니다.
  • 버그가 적을 확률이 높습니다!

4

코드 생성기

코드 생성기는 간단한 정의에서 효율적이고 버그가없는 많은 양의 코드를 만들 수 있습니다. 데이터 액세스 클래스를 작성하는 데 ORM 유형 사용이 가장 분명하지만 더 많은 잠재적 사용이 있습니다.

코드 생성 지원은 여전히 ​​프로그래머와 프레임 워크 관점에서 아직 초기 단계에있는 것 같지만 점점 더 많이 보게 될 것입니다. 에서 .NET 당신은 함께 물놀이 시작할 수 CodeDOM을의 물건.


나는 코드 생성기를 작성하는 것을 좋아하는데, 가장 쉬운 방법은 아니지만 유용합니다.
Zachary K

3

AgentRansack을 많이 사용 합니다. 수천 개의 파일을 매우 빠르게 검색하는 데 큰 도움이됩니다. 시간이 많이 절약되었지만 알고 있거나 사용하는 많은 프로그래머를 알지 못합니다.


3

공식적인 방법.

http://www.amazon.com/Discipline-Programming-Edsger-W-Dijkstra/dp/013215871X

http://www.amazon.com/Science-Programming-Monographs-Computer/dp/0387964800/ref=pd_sim_b_1

그들의 중요성을 과장하기는 어렵습니다. 모든 루프와 모든 if 문은 일종의 "증거"가 필요한 아이디어로 시작됩니다. 대부분의 프로그래머는이 증거를 대부분 머리에서합니다. if 문이 무엇을하고 무엇을 선택하고 무엇을 선택했는지 완벽하고 일관되며 배타적이며 논리적이고 논리적으로 표현할 수 있는지 묻습니다.

그러나 일부는 무작위로 추측하는 것 같습니다. 그들은 더 많은 도움이 필요하고 공식적인 방법이 필요한 도움이 될 수 있습니다.

코드의 대수 (및 미적분학) 일뿐입니다. 너무 복잡하거나 정교한 것은 없습니다.


나는 간단한 것들을 올바르게 얻는 데 종종 유용하다는 것을 알았으므로 더 복잡한 것들을 디버깅하는 동안 그것에 의존 할 수 있습니다. 내 경험에 따르면 공식적인 방법은 미묘한 버그를 거의 제거하고 테스트로 쉽게 잡히는 눈에 띄는 명백한 버그 만 남습니다.
David Thornley

3

햇빛과 신선한 공기에서 빠른 조깅을 위해 의자를 떠나는 것과 같은 실제 디자인 패턴은 우리의 두뇌를 최고로 놀라게 만듭니다.


3

Half Life 2입니다. 여기에 좋아하는 게임을 삽입하십시오. 문제가 발생하면 해결할 수 없어서 그냥 좋아하는 게임으로 게임을 시작하고 갑자기 솔루션이 떠 오릅니다. 솔직히 말해서 그것은 게임이나 그런 것이 아니라 다른 일을하는 것입니다 . 나는 종종 사람들이 문제를 해결하지 않고 몇 시간 동안 문제에 앉아있는 것을 보았고 그들이해야 할 일은 짧은 기간 동안 뇌를 오프라인으로 만드는 것입니다.


3

스택 오버플로 -붙어있을 때 전문가의 빠른 도움

전문적이고 열성적인 프로그래머를위한 질문과 답변 사이트. Q & A 사이트의 Stack Exchange 네트워크의 일부로 사용자가 구축하고 실행합니다. 귀하의 도움으로 우리는 프로그래밍에 대한 모든 질문에 대한 자세한 답변 라이브러리를 구축하기 위해 협력하고 있습니다 ...


+1, 더 이상 과소 평가되지는 않음
MAK

4
아마도 과대 평가되었거나 적어도 과용되었을 수도 있습니다
Anto

3

나는 생각 메모장 / TextPad를 / 간단한 텍스트 편집 프로그램. 누구나 IDE를 열 필요없이 빠른 수정이 필요한 빠른 수정이 필요한 경우가 있습니다. 그리고 모든 컴퓨터에는 간단한 텍스트 편집 프로그램이 있습니다.


2

주장하고 좋은 alwaysAssert()기능. IMHO는 단위 테스트가 테스트하려는 특정 경우에만 버그를 찾을 수 있기 때문에 단위 테스트보다 더 중요합니다. 동일한 프로그래머가 코드와 테스트를 작성하면 두 경우 모두 동일한 경우를 놓칠 수 있습니다. 또한 구성 요소 기능 및 / 또는 작동하는 데이터 환경이 너무 복잡하여 테스트 사례를 도출하기가 어려워 단위 테스트가 비실용적 일 수 있습니다.

주장의 아름다움은 가정을 문서화 하고 결정되지 않은 입력에서 테스트하는 능력에있다 . 이러한 가정 중 하나라도 틀리면 코드가 "작동"하는 대신 크게 실패하지만 미묘하게 잘못된 결과가 생성됩니다. 또한 주장이없는 것보다 문제의 근원에 더 가깝게 실패합니다. 실제로 코드 조각에 대해 충분한 가정을 명시하고 이러한 가정이 모두 정확하면 코드는 일반적으로 정확합니다.

주장에 대한 하나의 일반적인 그립은 그것들을 끌 수 있다는 것입니다. IMHO의 모든 언어 또는 표준 라이브러리는 alwaysAssert()기능은 동일 assert하지만 해제 할 수없는 대략적인 기능을 가져야합니다 . 이것은 어설 션 해제의 이점이 무시할 수있는 비 성능 핵심 코드 영역에서 가정을 확인하는 데 사용할 수 있습니다.


동의했다. 그러나 불행히도 간단하지만 효율적인 도구는 종종 과소 평가됩니다.
Peter Mortensen 2016 년

2

F1 키 -모르는 프로그램과 작업중인 프로그램에 유용합니다. (큰 응용 프로그램이라고 가정합니다.)

사용자가 소프트웨어 작동 방식에 대한 해석을 바탕으로 버그를보고하면 문제를 필터링 할 수 있습니다. 물론 디자인 자체에 결함이있을 수 있습니다. 그러나 그것은 또 다른 이야기입니다.


2
과소 평가되거나 과소 평가되었습니다.
익명 유형

현재 사용중인 응용 프로그램 개발자가 과소 평가했습니다. 따라서 도움말에는 유용한 정보가 거의 또는 전혀 포함되어 있지 않습니다.
찌를

2

다양한 UNIX 기본 유틸리티, 그러나 주로 find때때로 greped. 깊게 중첩 된 파일에서 찾을 수있는 기능은 특히 코드베이스를 갑자기 상속하여 수정해야 할 때 매우 중요합니다. 상기 코드가 잘 문서화되어 있어도, 당신은 아마 사냥을해야하고, find그것을 잘 이해해야 합니다.


2

호기심

이것을 "프로그래밍의 수수께끼"라고 부릅니다. 도구를 사용하는 사람과 비교할 때 도구는 무엇입니까? 어떻게 그리고 왜 어떤 것이 효과가 있는지 또는 왜 효과가 없는지 알고 자하는 욕구는 특정 도구보다 지식을 넓히고 있으며 이는 프로그래밍 그 이상입니다.


2
Ctrl + C    
Ctrl + V

전 세계 수많은 시간을 절약했습니다!


1

꼬리

Tail은 프로그램 로그 출력 파일을 실시간으로 모니터링하는 데 사용할 수 있습니다. 다른 사람들이 로그를 읽을 수있는 수단을 제공하지 않는 시스템을 개발할 때 큰 도움이되었습니다.

예제 프로그램은 다음과 같습니다.


Mac OS X은 UNIX 시스템입니다. 따로 언급 할 필요가 없습니다.
rightfold

0

나는 Perl 호출 그래프 생성기를 한 번 묶었 다. 그것은 매우 유용했지만 비절 차적 코드 나 파일 외부 루틴에서는 어려움을 겪었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.