본문 바로가기

강의내용 정리

(5)
5. Function Structure Part2 https://www.youtube.com/watch?v=cgiDv1XFWsk&list=PLagTY0ogyVkIl2kTr08w-4MLGYWJz7lNK&index=5 🧐 CQS Command 와 Query는 구별되어야 한다!! Command ( 상태를 변경 ) 시스템의 상태 변경 가능 Side Effect를 갖는다. 아무것도 반환하지 않는다. void형이다. Exception은 반환하더라도 어떤 값을 반환하면 안된다! Query ( 값을 반환 ) Side Effect가 없다. 계산값이나 시스템의 상태를 반환한다. 예시 1 // CQS가 적용안된 상황 User u = authorizer.login(userName, password); // CQS 적용 authorizer.login(userName, pass..
4. Function Part2 https://www.youtube.com/watch?v=yd2xcVn_pAc&list=PLagTY0ogyVkIl2kTr08w-4MLGYWJz7lNK&index=4&t=4s 🙋‍♂️ Reader를 위해서 원칙을 지켜 코딩하자 원칙을 잘지키다보면, 디자인이 예뻐진다. 큰 함수를 여러 개의 클래스로 쪼갤 수 있다. 함수는 한가지만 해야되고, 그 한 가지를 잘해야 한다. 코드에서 젤 중요한 사람은 Reader다. 한 번 코딩해서 그 코드가 살아 있는 코드가 되면 그 코드는 다른 사람들이 내 코드를 계속 읽어야 된다. 이를 위해서 계속해서 Reader을 위하는 마음으로 코드를 작성해야 한다. 하지만, 추상화 레벨은 불분명하다. 🙋‍♂️ 추출은 지독하게 하자 "Extract Till you Drop" 포기할 때까..
3. Function https://www.youtube.com/watch?v=GYNT7O3rLhU&list=PLagTY0ogyVkIl2kTr08w-4MLGYWJz7lNK&index=3 함수는 한가지 일만 해야 한다. indentation , while, nested if 등은 없어야 잘 지어진 서술적인 긴 이름을 갖는 많은/작은 함수들로 유지해야 한다. The First Rule of Functions 더 이상 작아질 수 없을 만큼 작아야 한다. 큰 함수를 보면 클래스로 추출할 생각을 해야한다. 클래스는 일련의 변수들에 동작하는 기능의 집합 함수는 최소한의 parameter를 가지는 것이 좋다. 인텔리제이의 introduce variable, method등등의 기능을 활용하여서, 동일한 부분을 추출하고 Inline 처리할 ..
2. OOP Part2 https://www.youtube.com/watch?v=D8_mbdoGPrg&list=PLagTY0ogyVkIl2kTr08w-4MLGYWJz7lNK&index=2 절차지향의 한계 요구사항 변경이 데이터 구조 변경 유발 Spring 테스트시에, 드러남. 데이터를 사용하는 모든 코드(Client,Test)의 수정 유발 이때, 객체 지향을 쓰면, 예를들어 Time인터페이스로 StopWatch 를 구현한다면 클라이언트 코드에서 , getNanoTime을 getMilliTime으로 변경해준다던지 하는 등의 매우 간단하게 수정이 가능해진다. 측, 추상화를 잘하면 코드를 변경해야하는 정도가 줄어들 수 있게 된다.
1. 소개 및 OOP https://www.youtube.com/watch?v=60lLSe1phks&list=PLagTY0ogyVkIl2kTr08w-4MLGYWJz7lNK&index=1 소개 내용 사람이 잘 이해할 수 있는 코드인지 잘 생각해보아라. 기계가 이해할 수 있는 코드는 아무나 짤 수 있다. 버그는 버그를 수정하다가 나온게 많다. 앞부분에 시간을 들이는 것은 뒷부분으로 갈수록 시간을 아껴준다. 내가 개발하려는 것을 간략적으로라도 그리고 시작하는 게 중요하다. 나중에 고칠게라는 것은 불가능한 말이다. 돌아가는 코드 NO! 읽을 수 있는 코드 YES! Why OOP? 데이터와 코드가 캡슐화된다. 데이터와 그 데이터를 조작하는 코드의 변경은 외부에 영향을 안 미친다. 외부에 노출된 인터페이스만 변경되지 않는다면, 프로시저..