티스토리 뷰

* 추가 하는 코드에 대해 명확히 이해하라

-> 코드를 추가할 때, 그 코드가 어떤 기능을 하는지 간단한 테스트라도 해라. 처음 시도, 사용하는 알고리즘이나 라이브러리 사용시에는 특히 주의하라. 그 기능을 명확히 이해하지 못하고 사용한다면, 그 것은 우연에 맡기는 프로그래밍을 하는 것이다.

 

* 적은 조건을 만족해도 잘 돌아가는 코드를 작성해라 (복잡도를 줄여라)

-> 다른 코드나 외부 데이터에 적게 영향 받는 코드를 만들어라.

 

* 가정 하지 마라. 코드에서 직접 제약을 걸어라.

-> 어떤 처리에 대한 클라이언트와의 규약 (예를 들면, 비번 방 지정은 방장만 할 수 있다던가, 게임 방에서만 가능하다던가 하는 가정)은 반드시 지켜질 수 있도록 코드에서 그 동작이 불가능 하도록 만들어라.

* 자료구조에서 넣는 키 값과, 빼는 키 값에 주의하라.

온라인 서버 게임에서 호환을 위해 대소문자 캐릭터 아이디를 모두 메모리에 들고 있는 경우가 있다. 이 때 자료구조에 소문자 캐릭터 아이디로 넣고, 대문자 캐릭터 아이디로 빼는 경우문제가 생겼다. 이런식으로 스트링의 경우 키의 대 소문자 구분에 주의 하자.
 

* 코드 재 사용시 가정이 깨지는 것에 주의하라

같은 코드를 다른 곳에서 재 사용시에 기존에 수립한 가정을 다시 검토하라.

 

* 증명을 하자
프로그래머는 추론이 아닌 증명을 해야 한다. 특정 상황이 의심스럽다면 그 상황이 맞는지 입증해라.

* 성급한 일반화의 오류를 범하지 말자
특정 플랫폼, 특정 컴파일러, 특정 라이브러리의 구현이 일반적이라고 믿는 일반화의 오류를 범하지 말자. 구현은 천차만별이다.


* 표준 규격이 있다면 그 것을 사용하라무언가가 표준으로 정해진 데에는 그만한 메리트가 있기 마련이다.
예를 들어 시간을 1000분에 1초 단위로 사용한다던가 하는 것인데, 이런 규격은 합당한 이유가 없다면 표준 규격을 사용하도록 하자.

* 데이터 형의 특성을 잊지 마라데이터 형 마다 담을 수 있는 값의 범위와, 특징이 존재한다.
예를 들면, 오라클에서의 문자열 데이터형은 문자 셋에 따라 C와 같은 스타일의 저장 크기를 가진다. (유니코드 2바이트, 아스키는 한글,한자등은 2바이트, 영어는 1바이트). 또한 DBMS에서 varchar2와, char의 특성을 명확히 이해하라. char에서는 뒤에 공백 문자가 존재해서 varchar2와 비교 시 유의해야 하기 때문이다.

* 표준 규격이 있다면 그 것을 사용하라무언가가 표준으로 정해진 데에는 그만한 메리트가 있기 마련이다.
예를 들어 시간을 1000분에 1초 단위로 사용한다던가 하는 것인데, 이런 규격은 합당한 이유가 없다면 표준 규격을 사용하도록 하자. 표준 규격은 유지보수시에 큰 잇점이 있다. 또한 호환성도 높기에 표쥰규격을 이용 하는 것이 좋다.

* 키 값이 필요한 자료구조에 주의하자.
대부분의 키 값을 필요로 하는 자료구조 들은 키 값으로 정렬한다. (맵, 멀티맵, 셋, 멀티셋 등)
이 키 값을 변경했을 때 퍼포먼스가 낮아지는 현상이 있을 수 있고, 객체를 키로 잡았을 때 객체 안의 값이 바뀜으로 인해 로직상의 문제가 생길 수 있다.

맵을 사용할 때에는 객체 안의 특정 변수를 키로 잡고, 객체를 값으로써 관리하는 경우도 있는데 이때도 마찬가지로 키로 잡은 변수를 변경시키지 않도록 주의하자.

'Software Engineering > Knowhow' 카테고리의 다른 글

문제 해결 노트  (0) 2009.02.03
나의 로그 기준  (0) 2008.02.23
서버 프로그래밍시 유의점  (0) 2008.01.14
패치의 악몽을 겪지 않기 위해  (0) 2008.01.14
클라이언트를 믿지 말자.  (0) 2008.01.14
댓글