분류 전체보기156 3. 코드에서 나는 악취 3.코드에서 나는 악취 리팩터링을 언제 시작하고 언제 그만할지를 판단하는 일은 리팩터링 작동 원리를 아는 것 못지않게 중요하다 종료 기준보다는 리팩터링하면 해결할 수 있는 문제의 징후를 제시하겠다. 3.1 기이한 이름 코드는 단순하고 명료하게 작성해야 한다. 이름만 잘 지어도 나중에 문맥을 파악하느라 헤매는 시간을 크게 절약할 수 있다. 3.2 중복 코드 똑같은 코드 구조가 여러 곳에서 반복된다면 하나로 통합하여 더 나은 프로그램을 만들 수 있다. 3.3 긴 함수 오랜 기간 잘 활용되는 프로그램들은 짧은 함수로 구성됐다. 간접 호출, 코드를 이해하고, 공유하고, 선택하기 쉬워진다는 장점은 함수를 짧게 구성할 때 나오는 것이다. 그러기 위해서는 훨씬 적극적으로 함수를 쪼개야한다. 3.4 긴 매개변수 목록 .. 2022. 2. 28. 9. 제네릭스 9.1 제네릭 타입 파라미터 제네릭스를 사용하면 타입 파라미터를 받는 타입을 정의할 수 있다. 컴파일러는 타입 인자도 추론할 수 있다. val authors = listOf("Dmitry", "Svetlana") // 안붙이고 타입 추론을 했다 반면에 빈 리스트를 만들어야 한다면 타입 인자를 추론할 근거가 없기 때문에 직접 타입 인자를 명시해야한다. val readers: MutableList = mutableListOf() val readers = mutableListOf() 9.1.1 제네릭 함수와 프로퍼티 제네릭 함수를 호출할 때는 반드시 구체적 타입으로 타입 인자를 넘겨야한다. 실제로는 대부분 컴파일러가 타입 인자를 추론할 수 있으므로 그럴 필요가 없다. public fun List.slice(i.. 2022. 2. 28. [컴주개] CSE Junior Developer Meetup 10회 비대면 모임 팀 전배후에 하는 첫 네트워킹 모임이었다 오랜만에 근황 공유하니 좋았다. 투자 관련해서는 요즘 장이 워낙 파멸적인 장인지라... 다들 비슷했다...^^;; 대수형의 HLS 웨비나를 되게 흥미롭게 들었다. 맨날 이커머스 플랫폼만 개발해봤지 스트리밍 관련해서는 개발해본적이 없어서 아예 무지한 분야라 흥미롭게 봤던 것 같다. 나도 이런 양질의 웨비나를 해보고 싶다. 열일해야겠다 2022. 2. 27. 8. 고차 함수: 파라미터와 반환 값으로 람다 사용 8.1 고차 함수란? 다른 함수를 인자로 받거나 함수를 반환하는 함수 해당 언어에서 함수가 일급 객체여야한다. 일급객체 변수에 할당할 수 있다. 다른 함수를 인자로 전달 받는다. 다른 함수의 결과로서 리턴될 수 있다. 예를 들어서 filter 함수도 고차함수다 public inline fun Iterable.filter(**predicate: (T) -> Boolean**): List { return filterTo(ArrayList(), predicate) } 8.1.1 함수 타입 람다를 인자를 받는 함수를 정의하려면, 먼저 람다 인자의 타입을 어떻게 선언할 수 있는지 알아야한다. 변수 타입을 함수 타입으로 지정하면 함수 타입에 있는 파라미터로부터 람다의 파라미터 타입을 유추할 수 있다. 그러므로 람다.. 2022. 2. 13. 이전 1 ··· 3 4 5 6 7 8 9 ··· 39 다음