4/27 - 5/2
리팩터링
- 리팩터링 2판이 새로 나와서 서점에서 찾아 읽었다
레거시 코드를 단계를 거쳐 리팩터링 하는 과정
리팩터링 - 테스트 - 커밋
- 한번에 모든것을 처리하려고 하지 말고 변수명을 바꾸고 함수를 나누고
하나씩
테스트를 거쳐서 완성
- 가장 궁금했던 점은 하나의 값을 리턴하는 함수를 또 다른 변수에 설정하지 않고 필요한 부분에서 매번 함수를 호출하여 값을 가져오는 점이였다
- 매번 호출하는 것보다 변수로 지정해서 사용하는게 낫지 않을까 생각했는데
- 어제 읽었던
Objective C
에서 메모리를 관리하는걸 생각해보면 하나의 변수에 저장하면서 메모리를 점유하는 것보다 필요할때마다 만들어서 사용하고 끝내는게 더 좋은 방법!?
Objective C
- 자바랑 비슷한데 하나도 안똑같네
interface
로 선언하고 implementation
으로 구현
- 포인터랑 메모리 정리를 이해할 수 없었다...
Job Scheduler
- 노드 서버에서 스케줄러를 등록해서 알림을 받고 싶었다
- 근데 왠지 서버가 재시작되는 일이 있고 그런 경우 등록되어있던 스케줄이 사라져버린다
- 그래서 디비에 저장시켜두고 서버가 시작될때면 그 정보를 가져와서 다시 스케줄에 등록하도록 변경하였다
- 문제는 디비에 저장되는 스케줄러 콜백 형태
- 콜백함수를 문자열로 디비에 저장해두고 이를 꺼내와서 호출하려는데 단순하게
func[param]
으로 될 줄 알았는데 안된다
- 찾아보니
eval
로 문자로된 함수를 실행 할 수 있었다
논리연산자
- 디폴트값을 지정할때
||
를 사용하고 있다
A || B
-> A 또는 B가 출력된다
- 이때 망각하고 있던 사실
- 리턴되는 값은 Boolean이 아니라 숫자, 문자가 될 수 있다...
- 잠재되어있던 버그:
A && <코드~~~ />
- A가 true이면 코드가 출력되도록 하고 싶었다 -> 그러나 A가 출력되면서 에러를 뱉어내고 있었다! 아니 왜?
||
에서는 A가 true이면 A, B가 true이면 B가 출력된다 -> OR 조건이니깐 둘중 true인거 아무거나
&&
에서는 A가 true이면 B, A가 false이면 A를 출력한다 -> AND이니깐 둘다 true를 가져야 하는데, 그렇지 않은 경우에는 false가 리턴되며 그 false를 갖고 있는 A가 리턴되는 것이다
- 당연한 연산이라고 생각하고 있었는데 그 당연함에 잊고 있는 사실
4/19 - 4/26
bugsnag
sourcemap
등록하고 오류 발생한 위치를 알아보기 편하도록 개선
biometrics
- 지문, 얼굴인식이 필요해서
- iOS는 디바이스 자체에서 둘 중 한가지만 지원하므로 간단하게 해결
- 그러나 안드로이드는 디바이스에 등록된 생체인식을 전부 사용할 수 있다
FingerprintManager
가 deprecated 되고 BiometricManager
가 새로 나왔는데... -> 지문인식만 사용하려 입장에서 오히려 난감한 상황
- 필요한 내용만 골라쓰고자
react-native-biometrics
라이브러리를 수정하기로 하였다 -> 하다보니 과연 이게 맞는걸까 또 다시 의문에 빠졌다
- 업데이트된 내용을 사용하지 않고 deprecated된 API를 사용하며 누군가가 사용하기 편하라고 개발해둔 라이브러리를 펼쳐놓고 입맛대로 수정하는건 과연 효율적인 걸까
- 내 입맛대로 수정하고 다시 오픈하면 이게 또 새로운 라이브러리가 되는거잖아 좋아
- 라이브러리 수정하다보니 iOS objective-c를 알아둬야겠다고 생각
4/12 - 4/18
- 코드만을 생각하는게 맞는걸까? 전체를 보지 못하고 있는건 아닐까?
- 지금 진행 중인 프로젝트를 어떻게 하면 좋을지 고민하고 공부하는게 좋을까 아니면 하고 싶은 공부를 하는게 좋을까 -> 둘 다 하면 좋겠지만 아무것도 하지 않는 방법을 선택하지 않으려 노력중이다
- 컴포넌트를 조건에 따라 다르게 구성하여 화면을 그린다 -> 더 좋은 방법이 없을까?
- 이런 저런 고민이 많아지는데 뻥 뚫리는 무언가를 찾지 못했다
4/5 - 4/11
why did you render
- rerender마다 콘솔 로그 찍어주는데...
- Memoization 적용이 얼마나 안되어있는지 키자마자 맥북 비행중
- 컴포넌트에는 적용했지만 textinput 같은 이벤트에서 엄청난 렌더링 발생 이걸 어쩌지
- 갑자기 든 생각 react-navigation으로 화면을 스택 쌓아뒀는대 아래 스택에서 바라보고 있던 redux 또는 navigate에 따라 리렌더되는 컴포넌트가 있었다면?
- 그럼 상위 스택에서 변경되는 리덕스로 인해 하위 스택이 불필요하게 렌더링을 하고 있을 수 있겠다는 생각이 들었다 -> 화면을 쌓아놓고 사용하려면 그럼 계속 현재 화면인지 확인하는 조건을 갖고 있어야하는건가?
- 대체 어디까지 최적화를 해야하는건가
stylelint
bugsnag
- 에러 트래킹하고 코드 리뷰하고
- 업무 외적으로 무언가 이슈를 분석하는게 이렇게 재밋는 일이였다
- 간단한 일이라도 이유를 찾아보고 생각해보는게 보람차네