코딩 표준으로 피할 수있는 버그 [닫기]


11

코딩 표준이 버그를 줄이는 데 도움이된다는 주장을 뒷받침하는 통계 (또는 추정)를 찾고 있습니다. 하드 번호는 좋을 것입니다. 그러나 나는 아무것도 찾지 못했습니다. 다양한 오픈 소스 프로젝트에 대한 버그 추적을 살펴 보았지만 필요한 것을 찾는 데는 성공하지 못했습니다. 내가 이것을 찾을 수있는 곳을 아는 사람이 있습니까? 또는 더 나은 코딩 표준으로 피할 수있는 버그가있는 오픈 소스 프로젝트에 기여한 사람이 있습니까?


5
행운을 빕니다! 프로그래밍과 관련된 모든 것에 대한 통계를 찾는 것은 정말 어렵습니다.
Winston Ewert

나는 코딩 표준을 한 번 읽었습니다. 그리고 그것은 그 이야기의 끝입니다. 반면에 StyleCop-나는 매일 그것을 실행합니다.
Job

버그를 해결하기 위해 IMO는 대부분 복잡성으로 인해 발생하는 버그를 수정하는 데 사용됩니다. 따라서 개발자로서 당신의 임무는 모든 군단과 다양한 합병증에 맞서 싸우는 것입니다. 비즈니스 요구 사항 자체부터 시작하여 일관성, 가독성뿐만 아니라 결합, 종속성 및 아키텍처를 살펴 봅니다. 불완전한 코딩 표준은 당신에게 줄 지어있는 합병증의 작은 대대만을 나타냅니다.
브래드 토마스

답변:


8

자체 코딩 표준은 버그를 줄이지 않습니다. 건전한 소프트웨어 개발 프로세스의 일부로 코딩 표준은 버그를 줄입니다.

다음은 시작점으로 사용할 수있는 결함 감소에 대한 건전한 소프트웨어 엔지니어링 프로세스의 통계적 영향을 연구하는 두 가지 논문입니다.


3

"표준"코딩 ... 표준화 할 수있는 많은 개발 영역이 있습니다. 명명 표준 등과 같은 코딩 규칙에 대해 이야기하고 있습니까? 아니면 TDD / BDD, CI 등과 같은 더 깊은 것에 대해 이야기하고 있습니까?

CI에 통과 테스트와 우수한 코드 적용 범위를 적용하여 "테스트 우선"방법론을 준수하면 클라이언트가 발견 한 버그 수를 줄일 수 있습니다. 개발자와 QA에 의한 자동화 된 테스트는 일반적으로 피드백 시간이 매우 짧기 때문에 버그를 찾는 비교적 "빠른"방법입니다. 약 45 초 분량의 단위 테스트를 실행하여 자신이 생각한 것을 쓰지 않았다는 것을 알 수 있습니다. 몇 시간의 통합 테스트를 통해 서로 연결하는 것이 계획대로 진행되지 않는 곳을 찾을 수 있으며 엔드 투 엔드 및 자동화 된 UI 테스트를 통해 소프트웨어의 기능적 결함을 매우 높은 수준으로 신속하게 파악할 수 있습니다.

또한 회귀를 방지합니다. 버그를 발견했습니다. 동작이 더 이상 발생하지 않음을 입증하는 테스트를 작성하고 테스트가 통과 할 때까지 코딩 한 다음이 시점부터 버그가 다시는 문제가되지 않도록 테스트합니다. 이것은 내 경험상 새로운 버그의 주요 원인입니다. 한 가지를 고치면 다른 것이 깨지고 개발자가 수정 프로그램을 테스트하면 현재 중단 된 다른 상황을 다루지 못할 수 있습니다. 일하는 데 사용 된 것들을 깨는 것은 고객들에게 엄청난 붉은 깃발입니다.

마지막으로,이 방법론의 일부로 구축 된이 자동화 된 테스트 구조는 문자 그대로 즉시 새로운 소프트웨어 빌드를 릴리스 할 수있는 환경을 제공합니다. "이봐, 방금 고친 그 버그가 진짜 두통을 일으켰다. 언제 새 버전에서 준비 할 수 있을까?" "아, 빌드 서버가 다운로드 페이지에 게시를 마치면 약 5 분 안에"를 클릭하십시오 .

변수 이름 표준화와 같은 기본 코딩 규칙에 관해서는, 그 대부분이 덜 유용하고 더 자극적이라는 것을 알았습니다. 그것들은 "선택할 것이 너무 많기 때문에 놀라운"표준의 종류입니다. PascalCased와 camelCased 식별자의 차이점으로 인식하는 것은 다른 사람의 생각과 다를 수 있습니다. 선행 밑줄, 이름 길이 제한 (또는 방법 / 필드 이름이 이야기를 요구하는 요구 사항) 컴파일러에 의해 시행되거나 언어 별 라이브러리 코드에서 일반적으로 볼 수있는 규칙 외에, 현대 IDE는 변수 또는 함수에 대해 알아야 할 특정 변수를 사용하지 않아야하는지 여부를 포함하여 모든 것을 알려줍니다. 상황. 또한 코드 규칙 검사를 실행하면 수행 할 수 없거나 수행 할 수없는 코드 관련 문제가 종종 반환됩니다. 다른 표준 세트를 사용하는 타사 라이브러리 또는 모국어 표준 대신 Win API 명명 표준을 준수 할 수있는 interop 코드와 같은 변경을 원하지 않습니다. 결국 코드에 cruft를 추가하여 툴에서 코드의 cruft를 무시하도록 지시합니다.


3

모든 SQL 주입 취약점은 코딩 표준으로 방지 할 수있는 결함입니다. SQL 인젝션 취약점에 대한 통계는 AFAIK입니다.

코딩 표준으로 모든 버퍼 오버 플로우 취약점을 방지 할 수있었습니다. 이것들에 대한 통계도 가능할 것입니다.

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