일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- vscode
- 가상환경
- flutter
- 책
- linux
- 코딩
- ListTile
- 리눅스
- 도서
- 프로그래밍
- copyWIth
- 리버팟
- 유데미
- 플러터
- riverpod
- 다트
- 파이썬
- 개발자
- 명령어
- ExpansionTile
- dart
- 맥
- command
- freezeD
- 디자인패턴
- Code Generation
- python
- 개발
- 유데미 코리아
- 유데미 러닝크루
- Today
- Total
목록전체 글 (82)
승상의 코딩 블로그
extension 을 활용하면 기존 클래스나 타입에 새로운 기능을 추가할 수 있다.기존의 클래스를 수정하지 않아도 된다. int.parse("3") 은 flutter(dart) 에서 문자열을 정수에서 변경하는 방법이다.하지만 문자열에서 숫자로 더 간결하게 변경할 순 없을까?예를 들어, "3".toInt() 와 같이 말이다. 하지만 "3" 은 String 타입이고, String 클래스에는 정수로 변경하는 함수가 없다.이렇게, 기존 클래스에다가 기능이 추가되었으면 할 때 extension 을 활용하면 좋다. 사용예시 extension 의 이름(위에서 StringExtension)은 생략해도 된다.그러나 extension 에 이름이 있어야 라이브러리나 API 를 사용시 생기는 충돌을 해결할 수 있다.(다른 e..
왜 불변 객체을 써라고 하는 것일까?* 불변 객체만 쓰라는 것은 아니다. 대부분의 경우에 장점이 많기 때문이다* 대부분의 경우에서 불변 객체의 단점을 장점이 상쇄시킨다.불변 객체를 사용하면 외부에서 의도하지 않은 수정으로부터 객체를 보호할 수 있다.코드는 한 사람만이 개발하는 것이 아니다.즉, 내가 구현한 객체가 의도치 않게 외부에서 수정될 수 있다.데이터와 로직의 흐름을 파악하기 쉽다.데이터가 변경이 일어날 경우, 이를 추적하면 코드를 파악하는 것은 쉽지 않다.데이터가 불변이 아니라면, 데이터가 변경이 되지 않았음을 계속해서 파악해야한다.자신이 코드를 작성할 경우에는 로직을 정확히 파악하고 모든것을 컨트롤 할 수 있다고 생각할 수 있다.(내가 처음에 이랬다)그러나 개발하는 시스템이 복잡해지고 시간이 지..
복사에는 얕은 복사(shallow copy)와 깊은 복사(deep copy)가 있다.얕은 복사얕은 복사는 객체의 참조값만 복사한다.(원본 객체와 동일한 메모리 주소값을 참조하는것이다.)즉, 데이터를 "공유"하는 것이다. 위 코드는 얕은 복사에 대한 예시이다.데이터를 공유하기 떄문에 x 객체의 값을 변경하였는데, y 객체의 값도 변경되었다. 얕은 복사는 메모리 데이터가 공유되기 때문에 메모리를 절약할 수 있다.하지만, 일반적인 프로그램에서는 메모리 부족에 대한 문제를 겪기 힘들것이다.복잡한 프로그램이라면 데이터의 독립성을 보장하여 사이드 이펙트(버그)가 생기지 않도록 하는것이 더 효과적이다.깊은 복사깊은 복사를 사용하면 객체의 값 자체를 복사하여 독립적인 객체를 만들 수 있다.깊은 복사는 객체를 다시 ..