1.1 좋은 코드, 나쁜 코드, 이상한 코드
- 코드에 대한 판단은 문제와 상황에 따라 다르다.
좋은 코드
- 시간/공간 복잡도가 낮아야한다.
- 문서화가 잘 되어 있는 코드
- 유지보수가 용이한 코드
- 중복이 없는 코드
- 가독성이 높은 코드
- 테스트하기 쉬운 코드
1.2 레거시 코드(Legacy Code)
legacy code란?
- 누군가 떠나면서 남겨둔 코드이다. 유산, 산물이 된 코드이다.
1.3 왜 좋은 코드를 작성해야할까?
1.5 이름 짓기
좋은이름 짓기 - 엉클 밥
- 의도를 밝혀라
- 그릇된 정보를 피라하
- 의미있게 구분하라
- 발음, 검색하기 쉬운 이름 사용하라
- 자신의 기억력을 자랑하지 마라
- 기발한 이름을 피하라
- 한 개념에 한 단어를 사용하라
- 말장난하지 마라
- 해법/ 문제 영ㅇ역에서 가져온 이름을 사용하라
- 의미있는 맥락을 추가하라
- 불필요한 맥락을 없애라
1.6 캡슐화(Encapsulation)
캡슐화란?
- 객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶고 실제 구현 내용 일부를 외부에 감춰 은닉한다.
- 접근 지정자를 두어 은닉의 정도를 기술하여 구현한다.
- 데이터와 그 처리 방법을 숨길 수 있다.
자바 빈 규약이란?
- 기본 생성자가 있어야한다.
- 모든 멤버는 private으로 선언한다.
- Getter, Setter가 public 으로 열려 있다.
TDA원칙 (Tell, Don't Ask)- Martin Fowler
- 객체와 객체가 협력하는 경우, 다른 객체에게 정보를 요구하지 말고 그냥 행위하도록 시키라는 의미한다.
1.7 열거형(Enum)
Eum의 장점
- 상수보다 가독성이 가능하다.
- Enum 기본 함수 제공한다. ( name, ordinal, values)
- IDE의 도움이 뛰어남 (검색, 타입 체크)
- 인스턴스 변수가 1개 있음을 보장한다.
- 상수 확장성(필드 및 메서드)