💡 가장 자주 접했던 객체 지향 설계에 대하여 학습하였습니다. 객체 지향 프로그래밍(OOP)프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 기법입니다.명령형 프로그래밍인 절차지향 프로그래밍의 단점을 보완하기 위하여 등장하였습니다.절차지향 프로그래밍무엇을 어떤 절차로 할 것인가를 중점으로 두고 있으며, 순차적인 처리를 중요시 하는 프로그래밍 기법입니다.프로그램 전체가 유기적으로 연결되도록 하며, 대표적으로 C언어가 있습니다.실행속도가 빠르지만, 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다는 단점이 있습니다.절차지향 프로그래밍에서 개선점절차지향 프로그래밍은 모듈을 재활용하기 어렵기 때문에 대규모 프로젝트..
💡 함수형 프로그래밍의 개념과 장점을 이해하고 다른 프로그래밍 방식과 차이를 이해하였습니다 ! 함수형 프로그래밍함수형 프로그래밍은 대부분의 문제를 순수 함수로 나누어 해결하는 기법입니다.작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해줍니다.클린 코드의 저자 Robert C.Martin은 함수형 프로그래밍을 대입문이 없는 프로그래밍으로 정의하였습니다.명령형 프로그래밍 기반으로 개발할 때 소프트웨어의 크기가 커짐에 따라 발생하는 스파게티 코드의 유지보수 어려움을 해결하기 위해 사용되었습니다.선언형 프로그래밍의 방식입니다.명령형 프로그래밍무엇(What)을 할 것인지 나타내기보다 어떻게(How)를 할 것인지 설명하는 방식입니다.아래 두 가지로 구분 됩니다.절차지향 프로그래밍:..
💡 우아한테크코스 활동 중에 사용한 SQLite에 대하여 학습하였습니다 ! SQLiteSQLite는 데이터베이스 관리 시스템으로 서버가 아닌 응용 프로그램에 넣어 사용하는 가벼운 데이터베이스입니다.로컬 데이터를 관리해야 하는 다양한 애플리케이션에서 사용되며, 아래와 같은 예시에 주로 활용됩니다 !사용자 설정 정보즐겨찾기캐시 데이터사용자의 오프라인 생성 데이터안드로이드에 내장되어 있으며, 어플이 종료되거나 디바이스 전원이 꺼지더라도 삭제되지 않습니다.DBConstantSQLite 데이터베이스를 사용할 때, 데이터베이스 관련 상수들을 정의하는 역할을 하는 Constant입니다.주요 코드의 가독성을 높이고, 실수를 방지하면서 쉽게 참조할 수 있도록 하기 위해 사용합니다.아래는 우아한테크코스 활동 중에 선언한..
💡 우아한테크코스 과정에서 학습했던 점진적 리팩터링에 대해 복습하였습니다! 레거시 코드 리팩토링레거시 코드 리팩토링은 기존의 코드베이스를 개선하는 과정입니다.주된 목적은 코드의 기능을 변경하지 않으면서 코드의 구조를 더 깔끔하게하고 유지보수가 용이하게 만드는 것입니다.보통 오래된 시스템에서 작성된 코드에 필요합니다.레거시 코드읽기 어려움코드가 복잡하거나 문서화가 부족하여 이해하기 어렵다유지보수 어려움코드의 수정이나 기능 추가가 힘들고 버그가 발생하기 쉽다테스트 부족충분한 테스트가 없어서 코드 변경 시 예상치 못한 문제를 일으킬 수 있다점진적인 리팩터링한 번에 많은 코드를 바꾸는 것이 아닌, 여러 작은 단계로 나누어 변경하는 방법입니다.기존의 테스트 코드가 깨지지 않는 상태로 리팩터링을 실행합니다.컴파일..
💡 테스트 환경에서 private 메소드를 검증해야 하는 경우가 발생하였고, 이를 해결하기 위한 방법을 학습하였습니다. private 함수 테스트 문제점MonthPicker 클래스는 유효한 달을 검사하고, 모든 달의 일을 30일로 가정하여 합을 구하는 클래스입니다.makeDays를 통해서 내부의 가변인자로 들어온 값이 모두 정확한 달인지 isValid를 통해 검사하고 있습니다.class MonthPicker() { fun makeDays(vararg months: Int): Int { if (isValid(*months)) throw IllegalArgumentException(ERROR_MONTH) return months.reduce { acc, month -> ..
💡 테스트 프레임 워크인 JUnit5를 활용해서 단위 테스트와 통합 테스트를 작성하고 실행하는 방법을 활용하였습니다.Junit5자바 애플리케이션을 위한 최신 테스트 프레임워크로, 단위 테스트 및 통합 테스트를 작성하고 실행하는 데 사용됩니다.Java 8에서 도입된 기능을 특별히 타겟으로 하는 여러 기능이 포함되어 있으며, 주로 람다 표현실을 사용하여 구축되었습니다.구성 요소Junit Platform테스트를 실행하기 위한 기반을 제공합니다.IDE나 빌드 도구(Maven, Gradle 등)와의 통합을 지원하며, 다양한 테스트 엔진을 실행할 수 있는 공통 실행 환경을 제공합니다.Junit JupiterJUnit 5에서 새롭게 도입된 프로그래밍 및 확장 모델을 제공합니다.@Tset, @BeforEath, @A..