What is Architecture? * 전체적인 시스템 개발에 기반을 제공하는 변경 불가능한 초기 결정사항의 집합 Java, Spring, MySQL, MVC 같은 것이 아닌, 사용법(설계)에 대한 것 What is UseCase ? * 일련의 단계의 집합 * Actor(목적이 같은 클라이언트 집단) 와 시스템의 상호작용을 정의해둔 것들 * Architecture exposes usage (MVVM 을 사용했고, Repository 패턴을 적용했고, 디비는 Room 을 적용했고 같은 것들로 일부가 표현될 수는 있지만 정확하게는 아님 - 전자는 Application 이 어떤 목적으로 만들어졌고 어떤 기능을 하는지에 대해 알려주지 못한다) 클린 코더스 강의에서는 위의 사진 같은 것이 좀더 아키텍쳐에 가깝..
주석 1. 의미 없는 주석은 되도록 작성하지말자 (형식적인 주석) // 의미 없는 주석의 예 /** * Set a configuration property * @param key the property key * @param value th property value */ public void setConfigProperty(final String key, final String value) { // ... } 2. 주석을 읽는 모든 사람들이 감사한 마음을 가질 수 있어야 한다 3. 주석을 함수의 이름에 잘 녹여낼 수 있도록 하자(물론 Assembly 언어는 불가능) 4. 보통의 개발자들이 작성하는 주석은 함수명으로 녹여낼 수 있고, 주석은 작성자의 코드의 표현력이 충분하지 못하다는 반증이 되기도 한다...
이번 시간에는 함수는 어떤식으로 만들어야할까? 에 대한 이야기 입니다 - Arguments - The Stepdown Rule(어떤 순서로 작성할 것인지) - Remove Switch and case - Temporal Coupling (시간, 순서상의 결합도를 어떤식으로 해결할 것인가) - CQS - Tell Don't Ask - Law of Demeter - Early Return - Error handling - Special Case (Null object 패턴 - 수많은 if-else 분기 보다는 특정 문제해결을 위한 클래스를 만들자) - Null is not an error - Null is value - Try 도 하나의 역할/기능이다. 위의 주제들에 대해 이야기를 나눠보겠습니다. * Arg..
* Function 원칙 - 가장 중요한 원칙은 한가지 일만 해야한다! - 극단적으로 4줄 짜리 함수여야 한다! 라는 말이 존재 (이를 가능하게 하려면 Indentation, while, nested if 등이 없어야 함, if 같은 경우는 결국 내부에 if-else 문으로 나눠지기 때문에 더욱 함수를 크고 복잡하게 만듬 그리고 사용한다면 코틀린에서 추천하는 것처럼 제어문이 아닌 값으로 평가해야함) - 잘 지어진 서술적인 긴 이름을 갖는 많은/작은 함수들로 유지되어야 함(Small many functions, Nice descriptive long name) The First Rule of Functions - 더 이상 작아질 수 없을 만큼 작아야한다. - 마틴 파울러가 쓴 CleanCode 에서는 큰 ..
이 글은 재사용가능한 코드를 작성하는 방법을 요약한 글로 대부분의 내용은 아래의 링크에서 가져왔습니다. https://www.youtube.com/watch?v=60lLSe1phks&t=657s 더 디테일한 설명은 위의 영상을 통해 습득할 수 있고, 아래 설명에는 중간중간 저의 생각이나 의견이 추가되어있습니다. 두서 없이, 작성하는 글로 이해하는데 어려움이 있을 수 있습니다. * 왜 클린코드여야 하는가? - 동작하는 코드는 한번 작성되면, 최소 10번 이상 읽히기 때문에, 대충 돌아가게만 작성하면 안되고 읽기 편하도록 작성해야한다. (보통의 개발자들은 새로 시작하는 프로젝트를 경험하기 보다는, 유지보수를 경험하게 될 확률이 높다) - 인간이 이해할 수 있는 코드는 잘 훈련된 소프트웨어 엔지니어만이 작성할..
해당 글은 토비의 봄 TV를 보고 정리한 것입니다. 먼저 더블 디스패치를 알기전에 디스패치에 대해 간략하게 알아보면, "어플리케이션이 어떤 메소드를 호출할 것인지 결정하고 실행하는 과정"을 의미한다 그리고 디스패치에는 크게 두가지로 나눠집니다 정적인 디스패치(Static Dispatch) 와 동적인 디스패치(Dynamic Dispatch) 정적인 디스패치는 컴파일타임에 어떤 메소드가 호출될지 이미 정해지고, 동적인 디스패치는 런타임에서 어떤 메소드가 호출될지 결정된다. 정적인 디스패치 e.g) 아래 코드는 반환 타입(Unit)도 같고, 함수명(run)도 같지만, 파라미터가 달라 이미 컴파일 시점에서 다른 함수 취급을 받게된다. 즉 실행되기전에 이미 어떤 함수가 호출될지 결정이 되어 있는 상황이다. cla..