프로젝트/MERY 업무일지

2024-03-19

roder 2024. 3. 20. 15:57

오늘 배운 것

 

1. Constraintlayout

https://developer.android.com/develop/ui/views/layout/constraint-layout?hl=ko

 

ConstraintLayout으로 반응형 UI 빌드  |  Views  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. ConstraintLayout으로 반응형 UI 빌드 Android Jetpack의 구성요

developer.android.com

 

안드로이드의 레이아웃은 LinearLayout , RelativeLayout,

Constraintlayout, Framelayout 등등 다양한 레이아웃을 가지고 있다.

 

보통 내가 주로 쓰는 레이아웃은 LinearLayout인데 팀원분들과 협업하면서

Constraintlayout을 쓰게 되었다. 

 

ConstraintLayout은 많은 레이아웃 중에 하나인줄 알았는데 공부해보니

다른 레이아웃보다 정말 많은 장점을 가지고 있는 레이아웃이다.

 

1. 다양한 모바일 디바이스 크기 대응

 

이전에 앱을 만들고 배포할때 Linearlayout으로 작업하였으므로,

앱 크기마다 View가 잘리는 등 많은 문제가 발생하였다.

그때마다 margin 값을 조정해가며 배포하였지만

진작에 constraintlayout을 사용하여 다양한 모바일 디바이스 크기에

대응하였다면 수고를 덜지 않았을까 싶다. 

 

2. 성능 최적화

 

Linearlayout으로 레이아웃을 구현할때는 2,3중으로 layout을 생성하여 구현하였는데

Constraintlayout 같은 경우 각 요소를 서로 상대적으로 배치함으로써,

뷰 간의 위치 관계를 유연하게 설정 가능하다.

 

따라서 Linearlayout를 중첩하는 방식보다 렌더링 시간과 메모리 사용량을 줄일 수 있다.

 

2. Constraintlayout Chain 기능

 

 

 

카카오톡 버튼을 xml로 구현하면서 카카오 로고와 카카오 로그인 텍스트가 자꾸 멀어지는 문제가

발생하였다. 이 2개의 요소를 서로 묶어 가운데에 두고 싶은데 이 방법을 고민하는 와중에

같은 팀원인 토마스가 chain 기능을 가르쳐주셨다.

 

https://android-dev.tistory.com/56

 

[Android/Kotlin] 안드로이드 ConstraintLayout(1) Chain

안녕하세요. 오늘은 ConstraintLayout의 기능중에 Chain에 대해서 알아보겠습니다. Chain은 사용 가능한 공간 내 뷰들간의 분할되는 방식을 제어할 수 있는 제약조건입니다 그리고 기존 레이아웃 중에 L

android-dev.tistory.com

 

spread , spread inside , packed 이렇게 3가지 기능이 있는데

그림과 같이 구현하기 위해  packed을 사용하여 로고와 Text를 묶었다.

 

packed는 2개의 View를 서로 간격없이 묶어주는 기능이다.

하지만 위 그림에서는 로고와 Text가 서로 간격이 있으므로

marginstart를 사용하여 간격을 두어 구현하였다.

 

3.  코드 응집도 

PR 도중 응집도라는 단어가 나왔다.

어디서 많이 들어는 봤는데 뭐였더라?? 하고 구글에 검색하니 

 

https://medium.com/@jang.wangsu/%EC%84%A4%EA%B3%84-%EC%9A%A9%EC%96%B4-%EC%9D%91%EC%A7%91%EB%8F%84%EC%99%80-%EA%B2%B0%ED%95%A9%EB%8F%84-b5e2b7b210ff

 

[설계 용어] 응집도와 결합도

High Cohesion, Low Coupling, 응집도와 결합도 라는 설계관련 용어는 프로그래밍에 익숙하지 않은 사람들에게는 쉽게 익숙해지기가 처음에는 어려울 것 같아요.

medium.com

 

코드 응집도란 소프트웨어 엔지니어링에서 모듈 내부의 요소들이

얼마나 잘 연결되어 있는지를 나타내는 척도를 말한다.

 

보통 앱을 만들때 공통적으로 사용하는 상수들이 있는데

이를 Object 클래스를 따로 만들어 관리하면

유지보수가 용이하지 않을까?라는 착각을 했다...

 

하지만 PR 리뷰를 보고 블로그를 보며 코드의 응집도와 결합도에 대해 공부하니

Object 클래스에 모든 상수를 관리하게 된다면

변경하지 않아도 되는 요소까지 건드리는 이슈가 생겨버린다.

 

또한 각 모듈이나 클래스를 설계할 때 관련된 요소들을 함께 묶어야 관리가 더 용이 할 것 같다.

'프로젝트 > MERY 업무일지' 카테고리의 다른 글

MERY PR 되돌아보기 [1]  (0) 2024.05.01
데이터 바인딩을 통한 코드 양 감소  (0) 2024.04.30
2024-03-13  (2) 2024.03.14