- 나쁜 코드의 경험
어느 한 회사의 예를 들어 80년대에 인기있는 앱을 출시한 회사가 있었다. 그 회사의 앱은 인기가 많았지만 업데이트 기간이 길어지기 시작했다. 이전의 버그가 새 버전에도 남아있고 프로그램 시동 시간이 길이지고 갑자기 다운되기도 했다. 결국 망했다고 한다.
결론적으로 말하자면 나쁜 코드때문이라고 한다. 출시일은 다가오는데 개발은 덜 됐고 기능을 추가하다 보니 감당이 불가능한 수준에 이르렀다고 한다.
나쁜 코드는 한 회사를 망하게 만들 수 있다고 생각하게 되었다.
나또한 많은 잘못된 코드들을 만들어본적이 있다. 급해서 시간이 부족해서 지겨워서 등등이 있었다. 하지만 이러한 코드들은 결국에 나한테 다 돌아오게 되어있다. 유지보수할때 새로운 기능을 추가하려고 할때 등등 처음부터 잘짜고 잘못된 점이 생각났을 때 고치자 다음은 없다는 마음을 갖게된 계기가 되었다.
그러므로 오히려 코드를 깨끗하고 깔끔하게 작성하려는 노력이 비용과 시간을 절감하는 방법일 것이다.
각종 전문가들이 한말들을 정리한다.
- 깨끗한 코드는 '보기에 즐거운' 코드다.
- 나쁜 코드는 나쁜코드를 유혹한다.
- 오류처리(메모리 누수, 경쟁 상태)등 세세한 사항까지 꼼꼼하게 처리하는 코드다.
- 깨끗한 코드는 한가지를 잘하는 코드.
- 단순하고 직접적인 코드
- 가독성( 잘쓴 문장처럼 잘읽힌다.)
- 추측이 아닌 사실에 기반해야한다.
- 작성자가 아닌 코드도 읽기 쉽고 고치기 쉽다.
- 깨끗한 코드에는 의미있는 이름이 붙는다.
- 의존성은 최소이며 각 의존성을 명확히 정의한다.
- 테스트 케이스에 모두 잘 돌아가야한다.
- 깨끗한 코드는 언제나 주의깊게 짰다는 느낌을 준다.
- 주의 (시간을 들여 단정하게 정리한코드)
- 꼼꼼하게 신경쓴 코드
대부분의 모든 언어로 서비스를 개발한 개발자
- 모든 테스트에 통과(같은 작업을 여러차례 반복하면 안된다.
- 중복이 없다.
- 시스템 내 모든 설계 아이디어를 표현한다.
- 클래스 메소드, 함수 등을 최대한 줄인다.
- 이름을 확정하기 전 여러번 생각해보기
- 객체가 여러기능을 수행한다면 여러객체로 나눈다.
- 메소드가 여러기능을 수행한다면 메소드 추출을 통해서 여러개로 나눈다.