inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

11강. 코틀린에서 접근 제어를 다루는 방법

유틸성코드

1906

아요

작성한 질문수 24

1

안녕하세요!!

강의를듣다가 "유틸성 코드" 라는 말이나와서 좀 이해가 안가 질문드립니다!

유틸성 뜻을 잘 몰라서 검색을 해보니 [Utile은 '유용한, 도움이 되는, 쓸모 있는'을 뜻] 라는 뜻이더라구요.

그럼 유틸성 코드는 유용한 코드??? 라는 생각이들면서 무슨말이지...? 라는 생각이 들더라구요 ㅠㅠ

  1. 유틸성 코드란?

  2. 유틸성 코드의 쓰는 이유

  3. 가시성을 부여한다, 설정한다가 무슨말인지

(가시성 : 보이는게 확실하게 구별되는 개념으로 알고있습니다)

감사합니다 ㅠㅠ!

oop java kotlin

답변 1

2

최태현

안녕하세요 민코님!!! 😊 크으~ 좋은 질문이십니다!!

질문 주신 내용 하나하나 답변 드려 볼게요!!

 

[1. 유틸성 코드란]

유틸성 코드의 명확한 정의가 존재하지는 않습니다! 약간 어떤 느낌으로 이해해 주시면 되나면요! 코드의 크기가 작고, 애플리케이션 비즈니스와는 관련이 적으며, 굉장히 일반적인 기능을 담당하는 코드 라고 생각해주시면 되어요!

저도 그나마 구글링을 잠깐 해보니 "A piece of code can be called a utility if it seems too small to be considered as a separate application, and too general-purpose to be considered as part of a particular program. A database program would not be a utility, for example, but a function which performed a single operation on a list could be." 라는 문구를 발견할 수 있었습니다 ㅎㅎㅎ...

 

[2. 유틸성 코드를 쓰는 이유]

예를 들어, 2의 배수이거나 5의 배수인 수를 확인하는 코드로 표현해보면 num % 2 == 0 && num % 5 == 0 이 될겁니다!

그런데 이 코드가 여기저기 굉장히 많이 쓰이고 있다고 해볼게요~ if (num % 2 == 0 && num % 5 == 0) 가 여기저기 널려 있는거죠! 그렇다면 이 경우에 코드를 함수화 할 수 있습니다!

fun canBeDividedByTwoOrFive(num: Int): Boolean {
  return num % 2 == 0 && num % 5 == 0
}

 

자 그런데~ 2의 배수이거나 5의 배수인지 확인하던 작업들은 여전히 많은 상태로, 3의 배수이거나 7의배수인지 / 2의 배수이거나 5의 배수이거나 11의 배수인지와 같은 작업들이 늘어났다고 생각해볼게요! 그러면 아예 함수를 다음과 같이 작성할 수 있을거에요!

fun canBeDividedByAnyNumber(targetNum: Int, dividedNums: List<Int>): Boolean {
  return dividedNums.any { num -> num % targetNum == 0 }
}
// 이름은 급하게 지었어요!
// Int에 대한 확장함수로 만들어 targetNum을 파라미터에서 제거할 수도 있습니다 ㅎㅎㅎ

이렇게 되면 모든 곳에서 이 함수를 활용할 수 있겠죠

이러한 코드를 유틸성 코드라고 합니다!!

 

[3. 가시성을 부여하다가 무슨 의미인가]

가시성을 부여한다는 것은 11강에서 설명드렸던 '접근 지시어'를 제어한다는 의미랑 동일합니다!

함수에 대해서 private / internal / public 등을 결정하는 것이지요~

 

제 답변이 도움이 될 수 있으면 좋겠네요 ㅎㅎㅎㅎ

혹시 또 궁금한 점 있으시면 편하게 말씀해주세요~!! 감사합니다!!! 🙏

수업노트

0

76

1

싱글톤과 스프링

0

87

2

get() = 3

0

62

2

강사님

0

84

1

강의 복습하면서 생긴 질문

1

108

1

Kotlin과 Java의 현업에서의 활용

0

144

2

data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문

0

85

1

코틀린에서 상속 시, 주의점에 대한 질문

1

116

3

내용 이해 질문

0

68

1

자바와 코틀린의 함수형 프로그래밍,

1

96

1

플랫폼 타입 설명 문의

2

90

2

널 아님 단언 관련 질문

0

93

1

강의 중 질문

0

89

2

범위 비교 질문

1

102

2

타입캐스팅 궁금한점 질문드립니다.

1

250

2

코틀린 val 질문

0

175

2

완강 후 Kotlin 이런저런 질문 드려봅니다!

3

426

2

확장함수 스타일 질문

0

147

2

확장 프로퍼티 질문

1

168

1

update 함수를 만든다는게 어떤 의미인지 예시가 궁금합니다!

1

289

1

java class의 NotNull 어노테이션 인식

1

271

1

[16강] 확장함수 관련 질문입니다!

1

137

2

리턴타입 사용시 any를 사용해도 괜찮은가요?

1

147

1

안녕하세요 scope function 에 receiver 가 없는 경우

1

177

1