brunch

You can make anything
by writing

C.S.Lewis

by GMIND May 15. 2022

Flutter와 SwiftUi 2

Dart와 Swift

 개발자의 시선에서 Flutter와 SwiftUi를 사용하면서 느낀 가장 큰 차이점은, Dart 기반의 Flutter 레이아웃 객체들은 Parameter 지향적이고, SwiftUi는 Builder 지향적이라는 것이다. Parameter는 함수의 인자*를 뜻한다. Flutter의 레이아웃은 하나의 클래스** 생성자에 여러 인자들을 넣어서 속성을 부여한다. 이렇게 되면 여러 가지 속성을 짧은 줄에 부여할 수 있다는 장점이 있다. 


*) 클래스 : 객체지향 프로그래밍에서 코드 덩어리를 만드는 규칙

**) 인자 : 함수의 시작에 외부에서 전달하는 변수


 이와 반대로 Builder는 객체지향 프로그래밍*에서 객체를 생성하는 프로그래밍 스타일로, 객체의 하위 함수를 계속 열거하여 인자의 값을 전달해준다. 넣어주려는 인자만큼의 괄호가 존재하기 때문에, 길어진 코드에 대비해서 확실히 뚜렷하게 인자들을 구분할 수 있다.


*) 객체지향 프로그래밍 : 클래스라는 문법을 통해, 동일한 기능을 하는 코드들을 쉽게 선언할 수 있는 기능을 지원하는 프로그래밍 언어의 갈래


 Flutter의 UI 객체들은 생성자 함수에 최소 두세 가지, 많게는 열 가지 이상의 속성을 한 줄에 열거하여 대입해야 한다. 풀어서 서술하자면 다음과 같이 코드를 작성한다고 볼 수 있다.

; parameter :   function(int a, int b, int c, int d).

 SwiftUI의 UI 객체는 선언 이후 자식 함수를 계속 호출하여 UI의 추가 속성을 부여해줄 수 있다. 마찬가지로 이도 풀어서 서술하자면 다음과 같이 코드를 작성한다고 볼 수 있다.

; builder : class.seta(a).setb(b).setc(c).setd(d).


 그렇다면 과연 Flutter와 SwiftUi가 각각 Dart, Swift라는 언어의 스타일에 따라서 이렇게 발전한 걸까? 하지만 그것은 아니다. Dart도 Builder 타입으로 객체를 만들 수 있으며, Flutter에서 UI를 만드는 Builder class를 작성할 수 있다. 반대로 Swift도 생성자 인자 열거형으로 객체를 만들 수 있으며, SwiftUI에서 UI를 만드는 생성자 함수를 만들 수 있다.


 이는 Dart와 Swift 두 언어 모두, 넓은 범용성을 목표로 두고 만들어졌기에 가능하다고 볼 수 있다. 프로젝트마다, 참여하는 개발자마다 각각의 코딩 스타일이 존재하기에, 최대한 코드를 자유롭게 짤 수 있는 환경이 마련되어 있는 것이다. 그저 Flutter를 만든 개발진들은 함수 파라미터 열거형으로 코드를 짜는 것을 선호하는 스타일이고, SwiftUi를 만든 개발진들은 객체를 Builder 타입으로 만드는 것을 스타일을 선호하는 것이라고 볼 수 있다.


 프론트엔드 프레임워크들은 개발자 편의를 위해서 최대한 쉬운 언어가 되고자 설계되어왔다. 이는 개발의 진입 장벽을 낮추려는 수단일 뿐, 개발자의 스타일을 고착화하라는 의미는 아니다. 진정 유능한 개발자라면, 프레임워크가 제시하는 방향을 가만히 따르는 것이 아니라, 그들의 의도를 이해하고 분석할 줄 알아야 한다. 그런 면에서, 위 글에 나온 것처럼 한 번쯤은 프레임워크가 지향하는 코딩 스타일을 벗어나 자신만의 스타일을 한번 적용해보는 게 어떨까 싶다.



Artist 'KimJinNyeong' with Gallery MIND

작가의 이전글 Flutter와 SwiftUi 1
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari