본문 바로가기

LANGUAGES, METHODLOGY/STUDY

(7)
터지지 않는 앱의 역설(논리 에러) 최근 개발을 하다 리포트받은 버그가 있었는데, 이는 컴파일 과정이나 런타임중에 확인 할 수 없었던 부분이었다. 디버깅을 하고 나니 이는 소켓통신 결과에 따라 신규 데이터를 처리할 때 필수적인 변수에 default argument가 설정되어 있기 때문이었다. 여기서 해당 변수에 대한 mapping이 일부 누락이 되었고 이로 인해 오동작을 하게 된 소위 논리 에러가 발생하게 된 것이었다. 이번 버그를 통해 얻은 교훈이 있다면 필요에 따라 중요한 요소에 대해서는 의도적으로 개발자를 불편하게 할 필요가 있다는 것이었다. 가장 좋은 에러는 릴리즈 이전에 맛보는 에러이기 때문에, 중요한 기능들에 대해서 올바르게 구현되지 않았다면 개발자가 최소 런타임 중에, 나아가서 컴파일 중에 에러를 경험하도록 의도하는 것이 결국..
[STUDY] 깨끗한 코드란 무엇일까? 로버트 C.마틴의 클린 코드 보통 개발자 커리어를 시작하게 되면 여러 종류의 코드를 경험하게 되는데, 저마다 가진 '더럽다, 지저분하다' 느끼는 코드들을 머릿속에 가지고 있을 것이다. 그렇다면 '더러운 코드'란 소위 어떤 코드일까? 반대로 깨끗한 코드, '클린코드'란 무엇일까. 그리고 클린 코드가 가져다줄 수 있는 이점들은 무엇이 있을까? 로버트 C.마틴의 클린 코드를 완독하고 핵심 내용들에 대해 되새겨보고자 포스트를 쓰기로 했다. 책 전반에 있어 좋은 내용들이 참 많지만, 핵심적으로 간추려보고자 직관적인 개념인 '더러움' 과 '깨끗함'으로 나누어 정리해본다. Dirty code - 함수의 역할을 곧바로 읽을 수 없어 추측과 내비게이션을 반복해야 한다. - 유사한 내용이 군데군데 반복되고 있다. - 과한 주석이 코드를 읽기도 전에 ..
[객체지향] 최소 지식의 원칙 퍼사드 패턴 리뷰에 앞서 책에서 객체지향의 최소 지식의 원칙에 대해 짚고 넘어가는 곳이 있어 리뷰 후에 넘어가고자 한다. 우선 최소 지식의 원칙은 드미트리의 원칙이라고도 불리며, 아래의 네 가지 규칙을 준수하는 것이 포인트이다. 자기 자신만의 객체 사용 메서드에 전달된 매개변수 사용 메서드에서 생성된 객체 사용 객체에 속하는 메서드 사용 적어두고 생각해보면 알겠지만, 네 가지 원칙을 준수하게 될 경우에 가질 수 있는 장점은 결합도를 낮추는 것이 될 것이다. 우선적으로 자기 자신만의 객체를 사용하고, 필요한 외부 데이터가 있는 경우 이를 매개변수로써 전달받기 때문에, 특정한 다른 클래스를 사용하게 되는 경우에 사용하는 클래스가 변경됨으로써 가질 수 있는 불이익으로부터 자유로운 것이다. (이는 메서드에 전달..
[안드로이드] MVC, MVP, MVVM에 대해 알아보자 안드로이드 앱을 구성하는데 있어 베스트 프랙티스 패턴을 크게 고려하지 않는 편이었는데, (아마 전통적인 형태의 MVC에 가깝게 짜여지지 않았을까) 중장기간 개발과 유지보수, 업그레이드 및 테스트에 관련해 세가지 패턴을 알고 그에있는 장단을 알아두는 것은 분명하게 필요해보인다. Realm 아카데미에 세가지 패턴에 대해 아주 잘 설명해 둔 자료가 있어 이를 참조해 간단히 정리하며 익혀본다. 시작하기에 앞서 Best practice 접근법에 대해 보자면 What is Best practice? - Best practice 접근법이란 안드로이드 앱을 논리적 구성요소로 체계화하기 위해 생겨남. - MVC 패턴을 초석으로 모듈화되고 테스트 가능한 패턴으로 발전해 왔다. - MVP와 MVVM 패턴은 MVC를 대체하기..
[Q&A] Question of myself - 무엇을 하고 싶은가? 면접을 하면서 받는 질문들 중에 '무엇을 하고 싶은가?' 류의 질문을 쉽게 접하고는 하는데, 이에 대해 손쉽게 답변할 수 있는지는 물론 평소에 이 '무엇을 하고 싶은가? 무엇을 이루고 싶은가? 당신이 하고자 하는 바가 무엇인가? 무엇을 만들고 싶은가?' 등에 대해 얼마나 고민해보고 생각해보았는지에 따라 달라질 수 있다. 이전에 이력서를 쓰면서 몸에 체화된 질문인 탓에 생각난거 같기는 하지만, 어찌되었든 내가 궁극적으로 성취하고 싶은 것은 무엇인가? 그리고 그것을 어떻게 성취하려 하는가? 정도의 질문을 짧게 생각할 수 있었고, 차례대로 생각해보며 정리해보고자 한다. 1 . 내가 궁극적으로 성취하고 싶은 것은 무엇인가? 먼저 거창하게 말하자면, 사람과 사회에 실질적인 도움을 줄 수 있는, 사회 구성원들의 삶..
[RxJava] RxJava란 무엇인가? 요약왕 워너비로써 다시 RxJava가 무엇이냐, 빠르게 이해하기 위해 기존 자바와의 차이점으로 시작한다면 - Java는 객체지향 언어이고 RxJava는 반응형 언어이다. - RxJava가 등장한 이유는 Main Thread가 하는 일과, Thread간의 data flow를 개선 > 앱의 반응성, 효율성을 늘리는데 있다 - 또다른 등장 이유는 객체지향형 Thread 형태로는 Thread간에 경쟁구도에 빠지기 때문에 '나쁜일들' 이 벌어질 수 있다. - RxJava를 구성하는 큰 세가지 요소를 꼽자면 Observable, Scheduler, Observer 가 있다. - Observable 아이템에 수행할 수 있는 다양한 요소들은 Marble diagram으로 이해하자 https://rxmarbles.com..
[Unity] 유니티란 무엇인가? (나무위키 요약) 유니티에 대해 알아보고자 간단히 나무위키 문서를 보며 요약해 본 내용이다. 정리하고 나서 느끼는 바로는 일단 개발자에게 쉽고오픈되어 있고, 개발자 커뮤니티나 오픈 리소스가 많은 장점이 있으나 보안에 취약 및 멀티코어 쓰레딩 취약, 제한된 라이센스 비용등이 단점으로 부각된다? 정도 - 2010년부터 iOS, Android 등의 모바일 플랫폼으로 확장, 콘솔 게임기 시장으로도 확장 - 2012년 Unity 4 발표 > 2015년 unreal engine 4 완전 무료화와 함께 Unity 5 개인용 무료화 선언(완전무료 아님) - 비주얼 스튜디오, Rider와의 연동 가능 - Window 10 지원 > DirectX 12를 실험적으로 지원 - 최신버전 > 2018.2 (18년 12월 기준) - Unity 5 ..