코드 작성시 생각해 볼 사항들

2024. 11. 19. 15:13코딩테스트/Java

1. 인덴트에 탭과 스페이스 섞어쓰지 않도록 주의

 

2. 조건문 줄이기 (return값 사용)

- return값 boolean이면 바로 리턴

예: if(x%n!=0) answer=false; return answer; --> return x%n==0;

- 계산 결과 값 사용

예: cnt = (x&1)==1 ? 1 : 0; -> cnt += x&1;

- que가 비어있을때 poll하면 null을 리턴하는 것 활용

- que.isEmpty() 리턴값이 true, fasle 인 것 활용

 

3. 반복문 종료조건 깔끔하게

임시변수, 조건문 최소화할 수 있는 종료조건 생각하기

 

4. 객체지향적으로 코딩하기

1) 클래스를 만들어 사용한다.

- 클래스를 만들 때 적절한 속성(변수), 기능(메소드)을 선언한다.

- 생성자는 클래스에 필수적인 요소만 포함하여 생성한다.

2) 값이 다르면 새로운 객체를 생성

좌표가 달라지게 되면 새로운 Point 를 new

3) solution은 흐름만, 실제 기능은 객체 안의 메소드가 수행하도록 코딩

 

5. 가변요소(하드코딩) 줄이기

반드시 상수가 들어가야하는 경우 final 변수 선언

 

6. 자바 코딩 규칙에 맞게 변수명 짓기

- 자의적으로 줄인 변수명을 사용하기 보다 용도를 충분히 유추할 수 있는 적절한 변수명을 사용하는 것이 좋음

- 무의미한 변수명 보다는 변수를 구분할 수 있는 이름 사용하기

 

7. 코드 가독성 생각하기

- 미리 컨디션을 확인해서 return시킬 것은 먼저 return 시키고, 그 이후에 로직이 나오는 방식으로 작성

- 최대한 if - else 등으로 indent 가 들어가지 않는 형태로 작성

- else 사용을 지양 (return, continue, break 등 활용)

 

8. 내가 짜고 있는 코드가 혹시 자바 라이브러리로 제공되는 기능은 아닐까? 생각해보기

- previousWords 배열의 문자열 포함 여부를 for문으로 하나하나 비교 -> ArrayList로 만들어서 contains()

- for문으로 배열 일부 복사 -> Arrays.copyOfRange(원본 배열, 복사할 시작인덱스, 복사할 끝인덱스)

 

9. label 문법 사용하지 않기

해당 부분을 메소드로 분리해서 return으로 처리

 

10. 수학 개념 나오면 그 정의에 맞게 코드 짜기

예) 소수 -> 1과 자기 자신만으로 나누어 떨어지는 1보다 큰 양의 정수.

 

11. 문자열 비교할 때 equals()보다 효율적인 방법 생각해보기

- 한 단어만 비교하면 된다면 charAt()

- Hashmap의 키 값으로 문자열을 저장하면 문자열이 맵 내부의 "해시값"으로 저장되어 비교되기 때문에 문자열 비교 속도가 빠르다

 

12. 배열 기본값 활용하여 불필요한 실행문 제거

int 기본값 0, boolean 기본값 false, 객체 기본값 null

 

13. 배열이나 리스트를 정렬해서 얻을 수 있는게 있는지 생각해보기

 

14. 배열 순회하는 경우 배열의 크기를 n+2로 만들면 엣지값 확인 조건을 없앨 수 있다

 

15. 객체를 list에 넣을 때는 객체에 필요한 모든 처리들을 끝내고 리스트에 넣기 (넣다 뺐다 불필요한 작업 줄이기)

 

16. 코딩 전 접근방법 여러번 다듬어 생각해보기

문제에 접근할 때 처음 떠오르는 방법으로 냅다 코드를 짜기 보다

다른 좋은 방법을 좀 더 생각해보는 것이 오히려 시간 단축에 도움이 된다

머리 속에 떠오르는 아이디어를 조금 더 다듬고 코딩을 시작하자

 

 

관련하여 읽어 볼 게시물 ▼

https://developerfarm.wordpress.com/2012/02/03/object_calisthenics_summary/