9월 첫째주 정리
2015-09-09- 에러와 익셉션 처리에 대해 생각해 봤다.
- 에러는 예상/처리 불가능한 상황, 익셉션은 예상/처리 가능하지만 비정상 상황
- 여러 모듈이 복합적으로 돌아서 다양한 종류의 오류(에러, 익셉션 모두)가 발생할 수 있는 코드라면, 해당 상황을 예측하여 복잡한 에러 코드를 만드는 것보다, 또는 다른 모듈끼리 서로 에러코드를 공유하게 하려 하거나하는 것보다 커스텀 익셉션을 써서 최외곽 코드에서 한 번에 처리하는 것이 편하다.
- 로그 관리/수집기가 필요하다.
- 로그 관리는 프로젝트 초반에 만들어지면 좋고, 프로젝트 후반에는 꼭 있어야 한다.
- 로그 수집기는 프로젝트 시작부터 만들어야 한다.
- 그러니 프로젝트를 시작할 때는, 에러/익셉션 로그 형식부터 만들자.
- 프로토콜 제네레이터가 필요하다.
- 지난 프로젝트 때 미리 만들어 둬서 아주 편하게 썼는데도, 이번에는 만들지 않았다.
- 얼마 안 되니까, 라는 생각에 대충 한 것이 문제.
- 프로토콜 제네레이터가 만들어야 하는 것
- 패킷 스트럭처 자체 - YAML이든 뭐 다른 간단한 문서를 써서 클라이언트/서버 측에서 쓰는 패킷 스트럭처 코드를 만든다.
- 패킷과 1대1로 대응할 코드 틀 - 서버의 패킷 수신/처리부나 클라이언트의 송신부 등 가능하면 자동화할 수 있는부분은 최대한 자동화해서 넘긴다.
- 리턴값으로 null을 넘기지 않는다.
- 이건 뭐 사람마다 다를 수도 있지만, 메소드 결과에 null을 넣지 않는다는 것을 원칙으로 하기로 했다. 특히 리스트 등을 반환할 때. 전에도 한 번 이렇게 생각을 했는데, 짜다보니 잘 안 지켜져서 다시 한 번.