작성
·
76
·
수정됨
1
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예
[질문 내용]
함수 안에 같은 부분을 포함하는데 중간에
bool 값을 true 해주거나 false 해주는건 어떻게 리팩토리할까요? 예를들어
public static void main(String[] args) {
kim(); -> holy=true 한번은 true가 되
kim(); -> 한번은 holy=true가 안되게
static void kim(){
System.out.println("wow");
holy = true;
System.out.println("hello");
}
}
println은 다같이 중첩되는데
한번은 holy 부분이 작동안되게하고
다른 한번은 true값을 변경하고싶어요
함수를 2개만들순없고 저건 예시를 든거고 만약
kim() 함수가 길면 함수2개를 만드는 의미가 없다고생각합니다
답변 1
0
안녕하세요. 이해욱님, 공식 서포터즈 OMG입니다.
예시코드 기준으로 출력문 사이에 변수의 값을 변경하는 코드가 있으므로
System.out.println("wow");
System.out.println("hello");
holy = true;
이렇게 변경하면 출력하는 코드와 값을 변경하는 코드가 구분되어 있어 코드를 읽거나 해석하기에 용이 할 것 같습니다.
더 나아가 출력문을 하나의 메서드로 추출해볼 수 있을 것 같아요 😀
void printMessage() {
System.out.println("wow");
System.out.println("hello");
}
// 호출하는 코드
printMessage();
holy = true;
감사합니다.
static void kim()
{
System.out.println("wow");
holy = true;
System.out.println("hello");
}
매개변수 받는 방법 말고는
한번은holy =true를 실행하고
다른 한번은 실행 안되게 할수있 방법은없나요?
말씀하신 상황에선 kim() 내부에서 분기가 발생해야 할 것 같네요
두 가지 코드로 리팩토링 할 수 있을 것 같습니다.
(1) kim() 안에서 분기
void kim() {
if (holy가 true인 조건)
holy = true;
} else {
holy = false;
}
(2) true / false 를 반환하는 메서드를 생성하여 해당 메서드 내에서 분기하여 처리
void kim() {
holy = getHolyValue();
}
boolean getHolyValue() {
// 분기 로직
return true or false;
}
글을 보고 있다가 생각이 나서 적어봅니다. 이렇게 하면 안되냐요?
boolean holy = true;
void kim() {
System.out.println("wow");
holy = !holy;
System.out.println("hello");
}
수정 했습니다.(수정했다가 오류가 나서 원래대로 다시 합니다..)
답변 드리는 사이에 질문이 수정되었네요 ^^
이렇게 되어야 한다면
위에 메서드 구현 코드를 기준으로 호출을 변경하면 됩니다.
인자로 전달하는 값을 호출할 시점에 true와 true가 아닌 값을 전달하면 메서드를 하나만 만들어도 됩니다.