인프런 커뮤니티 질문&답변

생각하는자님의 프로필 이미지
생각하는자

작성한 질문수

김영한의 실전 자바 - 중급 1편

예외 처리가 필요한 이유1 - 시작

ghuhan18님이 질문한것중 OMG님이 대답의 대한 질문.

해결된 질문

작성

·

60

·

수정됨

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]

image.png

안녕하세요. ghuhan님의 질문 내용과 OMG님의 답변 내용을 보면서, 궁금증이 생겨서 질문을 남깁니다.

OMG님의 답변 내용을 보면서 그 내용 중 '코드 규모가 커지고' 라는 말이 있습니다.

만약에 ghunhan님의 말처럼 지역 클래스 로 만들었는데, 어느 정도 코드 규모가 커져서 별도의 클래스 를 만들어야 한다는 상황이 생겻다면,

(지역 클래스에서 그냥 일반 클래스로 전환)

어느 정도 코드 큐모가 커야지? 별도의 클래스를 만들겟다는 생각이 드는지요?

각각 사람들이 생각하는 코드의 규모가 있을 텐데요, 아직 저로서는 어떤 게 코드 규모가 큰지 생각을 할 수 없네요.

수정 : 너무 말이 이상해서 수정을 좀 많이 하네요. 수정 하시기전 보신 분들 좀 죄송합니다.

답변 부탁 드립니다.

답변 1

1

안녕하세요. 생각하는자님, 공식 서포터즈 OMG입니다.

좋은 질문입니다 😀

참조하신 답변에서 말씀드린 '코드 규모'는 구체적이지 않고 추상적이여서 그 기준을 궁금해 하시는 것 같습니다.

제가 생각하기에 사실 이 부분은 '정답'은 없는 것 같습니다.

정량적으로 기준을 정해서 '몇줄 이상' 이라던지 혹은 '메서드,필드의 갯수가 몇개 이상부터 라던지의 기준을 정하는 것이 의미가 있다고 생각하지 않습니다.

 

제가 이전 답변에서 설명드린

코드 규모가 커지고 다양한 곳에서 클래스를 참조한다면

이라는 표현을 앞 서 서두에 설명드린 내용을 포함하여 답변(설명)을 보완하겠습니다.

 

프로젝트 규모가 커짐에 따라 내부 클래스로만 사용했던 클래스가 다른 클래스에서도 참조하는 상황이 발생한다면

정량적인 기준을 정해서 따르는 걸 선호하지 않는다고 말씀드렸는데요, 코드가 늘어날 때 그러면 기준으로 언제 리팩토링을 하는지에 대해 말씀드리겠습니다.

 

개발 요구사항이 늘어남에 따라 클래스의 역할이 점점 커지는 경우가 있습니다.

필드 점점 늘어나고, 메서드도 점점 늘어나는 상황이 오는데요.

 

예를 들어, '제품(Product)' 이라는 클래스를 개발했는데, 처음에는 요구사항이 제품코드(productCode)와 제품이름(productName)을 괸라하는 기능뿐이여서 문제가 없었지만

class Product {
    long productCode;
    String productName;
}

'제품가격'의 요건이 추가되어 아래와 같이 필드를 추가하였는데

class Product {
    long productCode;
    String productName;
    int productPrice;
}

추가로 '제품가격기준' 이라는 요건이 추가되었을 때,

Product에 필드를 추가하지 않고 별도의 Price클래스를 만들 것 같습니다.

class Product {
    long id;
    String name;
    int productPrice;
}
class Price {
    int value; // 값
    String standard; // 기준
}
class Product {
    long id;
    String name;
    Price prce; // 추가
}

 

제가 드리고 싶은 말씀을 정리하여 말씀드리면

정량적인 기준에 맞추기 보다는 프로젝트 규모가 늘어남에 따라 코드(클래스)의 역할이 늘어나 자신의 책임 외의 것을 담당해야하는 상황에서 리팩토링을 한다.

입니다.

 

감사합니다.

OMG님. 좋은 질문 이라고 생각해 주셔서, 어떻게 해야할지 어느 정도 알켜 주시어서 감사합니다.

생각하는자님의 프로필 이미지
생각하는자

작성한 질문수

질문하기