*야금야금 모으는 햠이 자기개발*
article thumbnail

[Conflict]

중첩구조를 사용하는 것과 모든 요소를 한 코드에 집어넣는 것 간의 성능 차이는 있을까요? 또한 중첩구조를 사용하여 코드를 구성하는 것이 디버깅에 어떤 장점을 제공하나요?

 

[Merge]

플러터는 자바나 c++과 같이 일반적인 객체지향 언어의 상속보다는 조합을 우선시하는 프레임워크라 이를 이용해서 위젯을 만들고, 이 위젯을 중첩해서 stack처럼 쌓아 하나의 화면을 만드는 구조입니다.

예시로 제 졸업작품중 일부를 보여드리자면,

이런 메인화면을 만들기 위해서는

 

이런 dart 파일이 중첩되게 됩니다.

 

물론 저 각 코드 파일에 있는 요소들을 한 코드에 다 때려박을수도 있습니다!

처음에 프로젝트 진행 시 모든 요소를 한 코드에 넣은 코드의 일부입니다

작은 규모의 앱에서는 이렇게 진행하는게 오히려 편리할 수도 있습니다. 위젯을 구성하는 과정이 간소화되니까요. 다만 코드가 커지고 복잡성이 증가할 수록 유지보수가 어려워지고, 가독성도 저하될 수 있습니다.

 

성능적인 면에서는 일반적으로는 큰 성능상 차이가 없습니다. 중첩구조를 사용하면 각 위젯이 필요한 경우에만 렌더링 되니 성능상으로 약간의 이점이 생길수 있지만 이정도의 이점은 플러터 자체 엔진인 Skia 라는 렌더링 엔진이 내부적으로 최적화를 진행해 성능상의 큰 차이가 나지 않습니다.

 

디버깅 부분에서는, 다 때려박고 수정을 영원히 안한다면 문제될게 없지만 수정사항이 생겨서 수정을 하는 순간부터 그 코드 안에 있는 모든 요소들이 영향을 받아서 오류가 생기기 쉽습니다.(간단하게는 색을 바꾼다던가, 모서리를 좀 더 둥글게 하고싶다던가,,) 이 부분이 중첩구조로 코드를 분리하는것이 디버깅에 더 유리하다고 생각합니다. 각각의 부분을 독립적으로 관리하고 테스트할 수 있기 때문에 수정할 부분만 수정하고, 문제가 생기면 그 부분만 디버깅하면 되니까요.

 

 

저도 아직 플러터를 다뤄본지 얼마 되지 않아서 충분한 답변이 되었는지 모르겠네요ㅜ

답변하면서 많이 공부했습니다..!◡̈

 

profile

*야금야금 모으는 햠이 자기개발*

@햠이

느리지만 꾸준히 굴러서 큰 바다가 되고싶은 개발 어린이