소개
게시글
질문&답변
2024.06.20
클래스를 써야할때와 함수를 써야할때
class 와 function 모두 내부적으로는 Function Object가 맞습니다.하지만 코드팩토리님이 말씀 주신 부분 처럼 목적에 따라 다르게 사용되는데요.class를 사용하는 경우는 인스턴스의 생성이 주 목적입니다. (객체와는 다른 부분이 있어 인스턴스라고 명명하겠습니다.)class를 사용하게 되면 해당 함수는 무조건 new 연산자를 통해서만 호출이 가능하며, 이를 통해 인스턴스의 생성 목적임을 강하게 강제하게 됩니다. 즉 일반 함수를 호출 하는 것처럼 사용할 수 없게 되는 것이죠.function 키워드를 사용해 함수를 구현하는 경우, 가장 큰 목적은 기능의 구조화라고 생각하는데요. 전역 공간에 모든 코드를 다 작성할 수 있지만 function 키워드를 통해 함수를 구현하는 경우, 함수 스코프를 활용할 수 있어 내부에서만 사용하는 로컬 변수를 정의할 수 있습니다.또, 특정 목적에 맞는 기능을 구조화 함으로써 명확한 코드를 작성할 수 있게 도와줍니다. 이 외에도 클로저의 활용 등 다양한 목적으로 사용할 수 있다는 특징이 있습니다.
- 0
- 2
- 186
질문&답변
2021.03.29
항상 좋은 강의 너무 감사드립니다.
얼릉 진행하고 넘어가야겠네요! 감사합니다~
- 0
- 2
- 330
질문&답변
2021.03.13
안녕하세요, 프로젝션 타입들에 대해 궁금한 게 있어 질문 드립니다!
주말에도 이렇게 빨리 답변 주시니 감동입니다ㅠㅠㅠ 즐거운 주말 보내시기 바랍니다! 감사합니다!!
- 0
- 2
- 598
질문&답변
2021.03.05
빈 2개 이상일 때, Autowired의 DIP에 대한 질문
맨 윗분 질문에 제 개인적인 생각을 덧붙이자면 하위 구현체를 바로 명시하는 것은 DIP원칙에 위반되는 것이 맞습니다. 결국 역할과 구현에 모두 의존하는게 되니 말이죠. 하지만 단순히 우선순위를 명시해 주는 것은 결과적으론 추상화에 의존 하기 때문에 DIP원칙은 위배되지 않습니다. @primary를 쓸 경우 코드상에는 아무런 의존관계도 명시되지 않습니다. 하지만 이러한 코드 추가가 수정이라는 관점에서는 OCP원칙에 의거해서 봤을 때 좀 더 생각해봐야 할 거 같네요. 김석중님의 질문에 대한 제 생각은, 어노테이션을 추가하는 작업은 기존 코드를 수정하는 작업과는 조금 별개로 볼 수 있지 않을까요? @primary를 사용할 경우 기존 Impl 클래스에서는 아무것도 변경 할 것이 없습니다. 단지 주입되는 대상 클래스에 @primary만 추가해주면 되는 것이죠. @primary 대상이 바뀌면 바뀐 대상에만 해당 어노테이션을 붙여주면 됩니다. 이정도 수정은 스프링빈에 등록하기 위해 @conponent를 붙이는 것과 별반 다르지 않다고 생각합니다. 또한 확장을 했음에도 의존관계를 주입 받는 Impl 클래스에는 어떠한 코드의 변화도 없었습니다. 그러므로 OCP원칙에 위배되지 않는다고 생각됩니다. 제 개인적인 의견일 뿐입니다. 잘못됬거나, 의문 사항, 또는 모순이 있다면 언제든 말씀주시기 바랍니다. 감사합니다!
- 1
- 3
- 271
질문&답변
2021.02.25
강의 잘 듣고 있습니다. 궁금한 게 있습니다!
아 그렇군요! 답변 감사합니다! 역할에 맞는 메서드를 사용해서 코딩하는것이 중요하겠네요! 감사합니다~
- 1
- 2
- 304