게임 개발 일지/내일배움캠프 TIL

안 좋은 코드 시리즈 3탄

빛하_ 2023. 12. 19. 21:26

 

 

 

안 좋은 코드 시리즈 3탄

 

11. 기능 편애

한 클래스가 다른 클래스에 지나치게 의존하는 상황.

다른 클래스의 세부 사항에 지나치게 의존해서 코드 이해와 유지보수가 어려워진다.

 

해결법) 관련된 함수끼리 묶여서 보관될 수 있도록 코드를 분산시킨다.

또 다른 방법 ) 전략패턴 사용하기 

 

 

12. 데이터 뭉치

서로 밀접한 데이터들 간에 자주 나타나는 현상으로, 코드의 중복을 증가시킴

해결법) 데이터를 묶어서 클래스 객체를 만든다. 코드 중복을 줄여서 매개변수 사용을 감소시킨다.

 

 

13. 반복문

반복문이 [절대적으로 나쁘다] 라기보다

요즘 나오는 프로그래밍 언어의 추세를 보면 반복문보다 함수형, 선언형 프로그래밍을 추구한다.

LINQ같은 기능이 추가되는 이유가 이런 트렌드에 맞추기 위함.

파이프라인 이라는 개념을 제시하는 추세.

 

반복문 : 명령형 프로그래밍 : 어떻게?

파이프라인 : 선언형 프로그래밍 : 무엇을?

 

상황에 따라서 적절하게 반복문과 파이프라인을 번갈아 사용하자.

(알고리즘에서도 제한 시간에 따라 반복문 쓸지,  LINQ 쓸지 선택할 수 있음)  

파이프라인을 사용하려면 함수를 많이 알고 있어야 하며, 적재적소에 쓸 줄 알아야 함.

 

 

14. 임시 필드 사용

특정 상황에서만 사용되는 필드가 존재하는 경우

ex. 임시 필드, 급하게 만든 클래스 방치 등

임시 필드는 별도의 클래스나 메소드로 모아서 관리하고 나중에 꼭 위치를 정해주는 것이 좋다.

 

 

15. 상속 포기하기

자식 클래스가 부모 클래스로부터 받은 메소드나 데이터를 일부만 사용하는 경우. (즉 일부의 상속을 포기)

완전한 상속이 아닌, 일부만 사용할 거면 상속하지 않는 것이 맞다.

부모가 주는 데이터는 모두 사용하는 것이 좋다.

 

만약 일부만 사용하고 싶다면 delegation 사용하기 => 부모 클래스의 인스턴스를 자식 클래스가 가져가 사용함.