상세 컨텐츠

본문 제목

[Flutter] 고급 문법 (stream, iterable, lamda, SOLID, singleton - 디자인패턴)

notes

by 서울의볼 2024. 4. 30. 13:39

본문

- 앱 배포 전 Firebase crashlytics 사용해라.

- abstract class

- 클래스에 특정 함수를 추가할 땐 extension 파일을 별도로 만들어.

- 향후 익스텐션이 상당히 많아질 수 있기에 룰을 잘 만들어둬야함.

- 제네릭을 이용하면 타입을 추후 정할 수 있게됨. (타입지정은 반환시가 아닌 변수 선언시 추천)

- 그리고 그 제네릭은 메소드에도 적용 가능.

- 제네릭은 많이는 안쓰이는데 똑같은 로직이 타입을 달리하여 자주 사용될 때 쓰인대.

 

- 보통 서버에서 데이터를 불러올 때 비동기 문법 사용함.

- FutureOr는 future이거나 아니거나. (실무에선 잘 안쓰인대)

 

- Stream은 여러번의 데이터를 받을 수 있음 지속적으로 (Future는 한 번인데) async*

이런식

- iterator는 순서대로 뭔가를 진행시켜주는 것.

- 대표적으로 리스트가 바로 iterable인 것.

- sync*로도 함수로 이터러블 만들 수 있음.

- 어떤 데이터를 생성하는 걸 generator라 함 (eg. yield*)

 

- Lamda : (int 파라미터1, String 파라미터2) => 반환값;

- 중괄호는 안에 다양하게 쓸 수 있지만 화살표를 쓰면 세미콜론으로 바로 마무리할 수 있어야 함.

 

- 함수형 프로그래밍은 선언형 프로그래밍 vs 절차적 프로그래밍은 명령형 프로그래밍 (boiling plate code, 불필요한 코드들이 많이 발생함)

 

- 코드를 헤비하게 돌릴 일이 보통 없음. eg) 동영상 인코딩이나, 몇십mb짜리 파일을 압축한다거나, 복잡한 이미지를 프로세싱 처리하거나, 머신러닝하는 경우 등의 동작을 수행하는 것.

- isolate은 그래서 쓸 일이 거의 없을 것임.

 

- scheme은 https 같은 것. host는 첫번째 슬래시까지, path는 물음표까지 (슬래시마다 pathSegments라 부름), 파라미터는 key value 값으로 물음표 뒤에 나옴.

 

 

 

 

--- 전반적으로 어렵기에 여러번 봐야함. 주니어 개발자도 어려울 수 있다함.

3.4.1) Generic을 주로 설명함. extension, list, set, map 등

3.4.2) Future 기본 개념, 생성과 수행, timeout, error handling, FutureOr

3.4.3) Stream 기본개념, map과 같은 반복문이랑 같이 씀, StreamBuilder, BroadCastStream 쓰면 여러 위젯에서 한 번에 스트림 사용 가능, yield*

3.4.4) iterable, sync, async

3.4.5) Lamda, List Sort

3.4.6) Functional Programming (FP), runEach, (fxDart 강사 개발) 등

3.4.7) isolate

3.4.8) core libraries, 정규식(RegExp), 해시태그

3.4.9~10) programming 이론 (CS) : SOLID, DRY, KISS, OOP

3.4.11) 디자인패턴 : Singleton, Factory, Command, Builder --- 어려움. 근데 흥미로운 개념들.

 

여기 정리 엄청 잘함: 

https://velog.io/@cyb9701/Dart-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC

 

[Dart] 문법 정리

const, final 둘 다 데이터 변경을 원하지 않는다.저장되는 시점이 다르다.const 에 지정되는게 final 에 지정되는 것보다 리소스와 메소리를 조금이라도 적게 사용하는 장점이 있다.Compile: const 타입은

velog.io

 

디버그 모드 사용법

chapter 4는 오만번 들어야 할 듯.

 

관련글 더보기