본문 바로가기

코딩 스탠다드/코드 컴플리트

(2)
[코드 컴플리트 2] 8장 방어적프로그래밍 방어적 프로그래밍: 다른 루틴의 잘못으로 인한 것이라도 루틴에 잘못된 데이터가 들어왔을 때 작성한 루틴에 아무런 문제가 발생하지 않도록 하는 것. 8.1 잘못된 입력으로부터 프로그램 보호 외부로부터 들어오는 모든 데이터의 값을 검사하라. 데이터가 허용가능한 범위안에 있는지 확인 문자열이 목적에 부합되는 타당한 값인지 시스템을 공격하려는 데이터(버퍼 오퍼플로 시도, SQL 명령문 주입, HTML이나 XML코드 주입, 정수 오버플로, 시스템 호출에 전달되는 데이터) 잘못된 입력을 어떻게 처리할 것인지를 결정하라. 8.2 어설션 루틴이나 매크로 실행시 프로그램이 스스로 검사할 수 있도록 사용하는 코드. 참이면 예상되로 작동 중. 크고 복잡한 프로그램과 높은 신뢰도를 보장해야하는 프로그램에서 특히 유용 예상치 ..
[코드 컴플리트 2] 7장 고급루틴 루틴 : 한가지 목적을 위해서 호출 할 수 있는 개별 메서드나 프로시저. 7.1 루틴을 작성하는 이유 복잡성을 줄인다. 루틴 사용시 해당 데이터를 어떻게 처리할지 고민 하지 않아도 된다. 이해하기 쉬운 중간 단계의 추상화를 도입한다. 이름만으로 별도의 문서가 필요 없을 수 있다. 중복 코드를 피한다. 서브클래싱을 지원한다. 구조화 덜된 루틴보다 길이도 짧고 구조적으로 완성도 높은 루틴을 오버라이드 하면 변경할 내용 많지 않다. 코드의 실행 순서를 감춘다. 포인터 연산을 감춘다 이식성을 높인다. 복잡한 불린 테스트를 단순화 한다. 성능을 개선한다. **간단한 작업도 루틴화 하는게 가독성 향상에도 좋지만 단순히 길이를 짧게 하기 위해서 루틴을 쓰는 건 부적합하다. 크기가 큰 하나의 루틴 내에서 처리하는 것이..