Curt Poem

프론트 엔드 공부와 지식 나눔을 위한 블로그

개발/다른 언어들 5

개인적으로 느낀 Kotlin의 좋은 점과 애매한 점과 별로인 점(부제: 내가 느낀 최신 프로그래밍 언어의 경향들)

최근 취업을 하면서 안드로이드 개발자로 경력을 시작하게 되었습니다. 기존에는 자바스크립트(타입스크립트)와 리액트를 통한 웹 프론트엔드 개발을 공부해 왔었는데요. 코틀린은 2011년에 공개된 프로그래밍 언어로 최신 프로그래밍 언어라고 볼 수 있습니다. 최근에 만들어진 언어를 사용해 보면서 자바스크립트의 최신 라이브러리나 프레임 워크를 사용할 때와 비슷한 느낌을 받기도 하였고 특히 안드로이드 컴포즈를 사용하면서 더 많이 느껴진 점이 있습니다. 이런 점이 최근 개발 업계에서 전반적으로 추구하는 개발 방향이라고 느껴졌고 이 점을 한 번 정리해보고 싶어 글을 작성하게 되었습니다.요즘 언어들더 쉽게, 더 편하게최근 개발 경향성은 "더 쉽게, 더 편하게"라는 말로 요약할 수도 있겠다 싶을 정도로 간단하고 쉬워지는 것..

Dart의 Mixin, 상속과는 무엇이 다른가?

MixinMixin은 Dart에서 다른 클래스의 기능을 재사용하는 방법을 제공하는 도구입니다. Mixin은 클래스 자체가 되지는 않지만, 다른 클래스에 포함되어 해당 클레스에 기능을 추가할 수 있습니다. Mixin은 다중 상속과 유사한 기능을 제공하지만, 엄밀히 말하면 다중 상속과는 다르게 작동합니다. 다중 상속은 하나의 클래스가 여러 부모 클래스로부터 직접 상속하는 것인 반면, Mixin은 다른 클래스의 기능을 포함하는 방식으로 작동합니다. Mixin을 사용하면, 깊은 클래스 계층 구조를 만들지 않고도 여러 클래스에 기능을 추가할 수 있습니다.상속과의 차이점?상속은 클래스가 다른 클래스의 기능을 그대로 가지도록 하는 메커니즘입니다. 상속받은 클래스는 기본 클래스의 모든 속성과 메서드에 액세스할 수 있습..

Flutter와 MVVM(Model-View-ViewModel) 패턴(with. riverPod)

Flutter에서 MVVM (Model-View-ViewModel) 패턴을 사용하는 것은 앱의 구조를 더 잘 조직하고, 유지보수성을 향상시킬 수 있습니다. MVVM 패턴MVVM 패턴에서는 서버 등 비즈니스 로직과 관련된 데이터를 포함한 비즈니스 로직은 Model이, UI는 View가 담당합니다. 그리고 둘 사이에 ViewModel이 존재합니다. ViewModel은 UI 로직을 가지며, Model의 데이터를 가공하여 View에 제공하는 역할을 합니다. ViewModel의 상태 변화가 View에 즉시 반영되고 View의 상호작용이 ViewModel에 반영되는 양방향 상호작용을 가집니다. View는 Model에 직접 접근하지 않고 ViewModel을 통해 가공된 형태로 접근할 수 있습니다. 이를 통해 View..

Dart(와 Flutter)에서 interface와 abstract 키워드는 각각 어떤 상황에 사용하는 게 좋을까?

Dart에서 추상 클래스와 인터페이스 클래스는 모두 코드를 구성하고 객체 간의 상호 작용을 정의하는 데 사용되는 중요한 개념입니다.둘 모두 객체를 생성할 수 없고 대신 클래스를 제작하기 위한 설계가 됩니다. 객체를 설계하고, 객체 간의 상호 작용을 정의하며, 코드 재사용성을 높이는 데 중요한 역할을 하는 것이죠.abstract class추상 클래스(abstract class)는 추상 메서드(구현되지 않은 메서드)와 구체적인 메서드(구현된 메서드) 모두(속성까지!)를 포함할 수 있는 클래스입니다. 완성이 되지 않은 클래스이며 클래스를 만들기 위한 설계도와 같습니다. 추상 클래스로는 인스턴스를 직접 생성할 수 없고 상속을 통해 자식 클래스에서 인스턴스를 생성하여야 합니다. 상속을 받은 클래스는 추상 클래스의..

복잡한 데이터 흐름을 더 쉽게 관리할 수 있는 Stream(feat. Flutter)

최근 SSAFY(Samsung Software Academy For Youth)에서 3번째 프로젝트를 시작하였습니다. 이번 프로젝트에서는 실시간으로 여러 데이터를 주고 받아야하는데요. 내용물만 다른 여러 개의 지속적으로 보내야 하고 하나의 요청에서 오류가 나더라도 다음 요청이 계속 진행되어야 합니다. 동시에 이런 작업을 진행하는 중에 유저와의 상호작용이 멈추면 안되죠. 이런 이유로 기존에 사용하던 데이터 처리 방식과는 다른 더 효율적인 방법이 없을까하는 고민에 빠졌습니다. 그러다가 예전에 인터넷에서 보았었던 스트림(Stream)이라는 개념이 떠올랐습니다.스트림(Stream)스트림은 대용량 데이터 처리나 비동기 I/O(Input/ Output) 작업을 효율적으로 다루기 위한 수단입니다. 말 그대로 모든 형..