[Conflict]
중첩구조를 사용하는 것과 모든 요소를 한 코드에 집어넣는 것 간의 성능 차이는 있을까요? 또한 중첩구조를 사용하여 코드를 구성하는 것이 디버깅에 어떤 장점을 제공하나요?
[Merge]
플러터는 자바나 c++과 같이 일반적인 객체지향 언어의 상속보다는 조합을 우선시하는 프레임워크라 이를 이용해서 위젯을 만들고, 이 위젯을 중첩해서 stack처럼 쌓아 하나의 화면을 만드는 구조입니다.
예시로 제 졸업작품중 일부를 보여드리자면,
이런 메인화면을 만들기 위해서는
이런 dart 파일이 중첩되게 됩니다.
물론 저 각 코드 파일에 있는 요소들을 한 코드에 다 때려박을수도 있습니다!
처음에 프로젝트 진행 시 모든 요소를 한 코드에 넣은 코드의 일부입니다
작은 규모의 앱에서는 이렇게 진행하는게 오히려 편리할 수도 있습니다. 위젯을 구성하는 과정이 간소화되니까요. 다만 코드가 커지고 복잡성이 증가할 수록 유지보수가 어려워지고, 가독성도 저하될 수 있습니다.
성능적인 면에서는 일반적으로는 큰 성능상 차이가 없습니다. 중첩구조를 사용하면 각 위젯이 필요한 경우에만 렌더링 되니 성능상으로 약간의 이점이 생길수 있지만 이정도의 이점은 플러터 자체 엔진인 Skia 라는 렌더링 엔진이 내부적으로 최적화를 진행해 성능상의 큰 차이가 나지 않습니다.
디버깅 부분에서는, 다 때려박고 수정을 영원히 안한다면 문제될게 없지만 수정사항이 생겨서 수정을 하는 순간부터 그 코드 안에 있는 모든 요소들이 영향을 받아서 오류가 생기기 쉽습니다.(간단하게는 색을 바꾼다던가, 모서리를 좀 더 둥글게 하고싶다던가,,) 이 부분이 중첩구조로 코드를 분리하는것이 디버깅에 더 유리하다고 생각합니다. 각각의 부분을 독립적으로 관리하고 테스트할 수 있기 때문에 수정할 부분만 수정하고, 문제가 생기면 그 부분만 디버깅하면 되니까요.
저도 아직 플러터를 다뤄본지 얼마 되지 않아서 충분한 답변이 되었는지 모르겠네요ㅜ
답변하면서 많이 공부했습니다..!◡̈
'구름 풀스택 1기 9oormthon training' 카테고리의 다른 글
[Conflict - Merge] Firebase의 장단점과 다른 DB와의 비교 (0) | 2023.08.23 |
---|---|
[Conflict - Merge] 어플리케이션의 보안 요구 사항과 와이어프레임 작성법 (0) | 2023.08.23 |
[Conflict - Merge] box-sizing value (0) | 2023.08.23 |
[Conflict - Merge] 운영체제의 Mutex, 우선순위 스케줄링과 Busy Waiting의 상관관계 (0) | 2023.08.22 |
[Conflict - Merge] java Scanner와 BufferedReader (0) | 2023.08.22 |