반응형

전체 글 102

[디자인패턴의 아름다움] ch 4, ch 5

4장주제 : 코딩 컨벤션, 코딩 원칙5장주제 : 단위 테스트, 리팩토링  찾아본 내용1. The Technical Debt Trap • Doc Norton • YOW! 2017https://www.youtube.com/watch?v=u6s8S63OOIE 이 컨텐츠는 기술 부채의 개념과 그 위험성을 다루고 있습니다. 발표자는 기술 부채가 단순한 코드의 문제를 넘어 전략적 설계 결정으로 이해되어야 하며, 이를 관리하기 위해서는 청결한 코드와 비즈니스의 이해가 필수적이라고 강조합니다. 기술 부채를 잘못 이해하면 비효율적인 코드와 혼란을 초래할 수 있으므로, 항상 코드를 정리하고 관리하는 것이 중요하다는 메시지를 전달합니다. 기술 부채는 잘못된 코드와는 다르며, 위험이 존재하지만 지금 당장 테스트나 리팩토링을 ..

독서 2025.03.30

[디자인패턴의 아름다움] ch 3

3장주제 : 설계 원칙  단일 책임 원칙p. 118주의할 점은 단일 책임 원칙이 설명하는 대상에는 클래스와 모듈이라는 두 가지 종류가 있다는 점이다. p. 120클래스에 private 메서드가 너무 많은 경우 이 private 메서드를 새로운 클래스로 분리하고 더 많은 클래스에서 사용할 수 있도록 public 메서드로 설정하여 코드의 재사용성을 향상시켜야 한다.클래스의 이름을 정의하기 어려울 경우, 클래스 책임 정의가 충분히 명확하지 않음을 의미할 수 있다.  개방 폐쇄 원칙p. 130속성과 메서드가 추가되었기 때문에 분명히 클래스가 수정되었다고 할 수 있다. (중략) 하지만 이 변경 사항이 기존의 속성을 변경하거나 메서드를 수정하지 않았기 때문에 속성이나 메서드 입장에서 보면 확장으로 간주될 수 있다...

독서 2025.03.23

[디자인 패턴의 아름다움] ch 2.4 ~ 2.9

2.4 ~ 2.9장주제 : 객체지향 프로그래밍의 특징 추상화 관련p. 61함수를 사용할 때 우리는 함수가 어떻게 구현되는지가 아니라 어떤 함수가 있는지를 이해하면 충분하다. p. 63함수형 프로그래밍의 함수는 프로그래밍 언어에서 말하는 함수가 아니라 y = f(x) 같은 수학의 함수 또는 표현식을 의미한다. Java 의 함수 인터페이스 p. 65Java는 함수형 프로그래밍을 위해 세 가지 새로운 문법 개념인 Stream 클래스, 람다 표현식, 함수형 인터페이스를 도입했다. p. 68C 언어의 경우 함수를 변수로서 사용할 수 있는 함수 포인터를 지원하지만, Java는 함수 포인터를 지원하지 않기 때문에 대신 함수형 인터페이스를 통해 함수를 감싼 것을 변수로 사용한다.  파싱 메서드의 최적 위치1. 엔티티 ..

독서 2025.03.16

[디자인 패턴의 아름다움] ch 1, ch 2.1 ~ 2.3

1장주제 : 고품질의 코드란 무엇인가 디자인 패턴은 언제 적용해야 할까?p. 2속도와 확장성을 맹목적으로 추구하는 현재의 개발 환경에서 안타깝게도 대다수의 소프트웨어 엔지니어는 고품질의 코드를 작성하는 방법에 대해 생각할 시간이 많지 않은 것도 사실이다. p. 16개발 초기 단계에서 필요한 경우를 제외하고는 복잡한 디자인 패턴을 과도하게 설계하여 적용하면 안 되지만, ... p. 20따라서 잘못된 요구 사항 예측으로 인한 과도한 설계를 피하기 위해 지속적인 리팩터링 개발 방법을 권장한다. 항상 고민되는 부분이다. 좋은 코드를 작성하기 위해 설계에 신경 쓰고 싶지만, 현실적으로는 단순한 코드로도 충분히 해결할 수 있는 비즈니스 문제를 다루는 경우가 많다. 따라서 무조건 복잡한 설계를 적용하는 것은 오히려 ..

독서 2025.03.09

[이펙티브 코틀린] 8장. 효율적인 컬렉션 처리

아이템 49. 하나 이상의 처리 단계를 가진 경우에는 시퀀스를 사용하라 p. 361 Q. 자바 8의 스트림을 사용하면 코틀린의 시퀀스와 마찬가지로 지연 처리되는가?  코틀린의 시퀀스와 자바 8의 스트림은 둘 다 지연 연산을 통해 요소를 처리한다는 점에서 비슷합니다.지연 연산을 사용하면 필요할 때마다 요소를 계산하며, 불필요한 계산이나 메모리 사용을 줄일 수 있습니다    p. 362  Think Twice Before Using Java 8 Parallel Streams - DZoneParallelization was the main driving force behind lambdas, stream API, and others. Let's take a look at why you should think ..

독서 2024.08.11

[이펙티브 코틀린] 7장. 비용 줄이기

아이템 45. 불필요한 객체 생성을 피하라 p. 311SoftReference  jvm, java --> java There are plenty of good and popular caching libraries on the JVM, including ehcache, guava and many others. However in some situations it’s worth exploring other options. Maybe you need better perf" data-og-host="www.michaelpollmeier.com" data-og-source-url="https://www.michaelpollmeier.com/2019/04/09/understanding-jvm-soft-referen..

독서 2024.08.04

[이펙티브 코틀린] 6장. 클래스 설계

아이템 36. 상속보다는 컴포지션을 사용하라 생략  아이템 37. 데이터 집합 표현에 data 한정자를 사용하라. 생략  아이템 38. 연산 또는 액션을 전달할 때는 인터페이스 대신 함수 타입을 사용하라 결론 : 자바 등에 제공하는 api가 아니라면 SAM(Single-Abstract Method), 즉 @FunctionalInterface 정의할 필요가 없다.   아이템 39. 태그 클래스보다는 클래스 계층을 사용하라 p. 266 태그 클래스와 상태 패턴의 차이  태그 클래스 태그 클래스는 객체의 상태나 동작을 구분하기 위해 사용되는 빈 클래스를 의미한다.주로 다형성을 이용하여 코드를 보다 명확하고 유지보수하기 쉽게 만드는 데 사용된다.태그 클래스 자체에는 데이터나 로직이 포함되지 않으며, 단순히 상태..

독서 2024.07.28

[이펙티브 코틀린] 5장. 객체 생성

아이템 33. 생성자 대신 팩토리 함수를 사용하라  p. 213예를 들어 코틀린 코루틴 라이브러리를 살펴보면, 거의 모든 코루틴 컨텍스트의 companion 객체가 컨텍스트를 구별할 목적으로 CoroutineContext.Key 인터페이스를 구현하고 있습니다.  코틀린 코루틴 라이브러리에서 코루틴 컨텍스트는 코루틴의 동작을 제어하는 데 중요한 역할을 합니다. 각 코루틴 컨텍스트 요소는 CoroutineContext 인터페이스를 구현하며, 각 요소는 키-값 쌍으로 저장됩니다. 여기서 CoroutineContext.Key 인터페이스가 중요한 역할을 합니다.  CoroutineContext와 Key CoroutineContext는 여러 컨텍스트 요소를 포함할 수 있는 인터페이스입니다. 각 요소는 키-값 쌍으로..

독서 2024.07.21

[이펙티브 코틀린] 4장. 추상화 설계

아이템 26. 함수 내부의 추상화 레벨을 통일하라  p. 160 추상화 레벨 통일 원칙 (Single Level of Abstraction, SLA) SLA 원칙 : 함수나 메소드가 동일한 수준의 추상화를 유지해야 한다는 원칙  SLA 원칙 위반 코드 예시fun processData() { val data = fetchDataFromApi() // 추상화된 단계 val results = data["results"] as List> // 추상화된 단계 val connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "user", "password") // 세부 사항 val statement = connecti..

독서 2024.07.15

[이펙티브 코틀린] 3장. 재사용성

아이템 19. knowledge를 반복하여 사용하지 말라 생략     아이템 20. 일반적인 알고리즘을 반복해서 구현하지 말라 p. 123 STDLIB 살펴보기https://github.com/JetBrains/kotlin/blob/master/libraries/stdlib/src/Module.md kotlin/libraries/stdlib/src/Module.md at master · JetBrains/kotlinThe Kotlin Programming Language. . Contribute to JetBrains/kotlin development by creating an account on GitHub.github.com      아이템 21. 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라 ..

독서 2024.07.08
반응형