코딩하는 대학생의 책 추천

코딩하는 대학생에서 개발자까지
디자인 패턴 #3 데코레이터 패턴(Decorator Pattern)
이 글을 읽고 계시는 여러분을 유명한 햄버거 체인의 백엔드 직원으로 상상해 봅시다. 문제 상황 맥도날드, 롯데리아, 버거킹만 해도 햄버거의 다양성이 상상을 초월합니다. 그리고 햄버거에는 패티 추가, 양상추 추가, 양파 빼기 등 수많은 옵션들이 있습니다. 어느 날 여러분에게 온라인 햄버거 주문 시스템을 개발하라는 지시가 내려졌습니다. 이런 상황에서 여러분은 어떻게 이러한 다양한 햄버거를 구현할 것인가요? 아마 데코레이터 패턴을 알지 못하시는 분들은 "공통 인터페이스를 만든 뒤, 구현하면 되죠!!"라고 말씀을 하실 것이라고 생각됩니다. 밑의 그림은 책에 나온 예시입니다. 비록 햄버거는 아니었지만 커피를 예시로 다이어그램을 그린 그림입니다. 정말 수많은 클래스들이 하나의 인터페이스를 구현하는 모습을 볼 수 있..
디자인 패턴 #2 옵저버 패턴(Observer pattern)
옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 갱신되는 방식으로 일대다(one to many) 의존성을 정의합니다. 옵저버 패턴이란? 이 글을 보시는 독자 여러분의 이해를 돕기 위해 신문과 구독자라는 예시를 들어 설명하겠습니다. 신문을 Subject로 생각하고 구독자를 Observer로 생각하시면 편합니다. 신문은 매일 정보가 바뀌며 구독자들은 바뀐 정보를 자동적으로 받습니다. 이처럼 옵저버 패턴은 Subject(신문)이라는 객체의 정보가 바뀌면 Observer(구독자)에게 연락이 가고 자동적으로 정보가 갱신되는 패턴입니다. 옵저버 패턴을 사용하는 경우 / 사용해야 하는 경우 책에서는 기상 모니터링 애플리케이션 도메인을 설명하면서 옵저버 패턴을 설명하였습니..
디자인패턴 #1 전략 패턴 (Strategy Pattern)
전략 패턴은 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해 줍니다. 전략 패턴을 사용하는 경우 / 사용해야 하는 이유 abstract class Duck { // 일반 메서드 quack public void quack() { System.out.println("Quack! Quack!"); } // 일반 메서드 swim public void swim() { System.out.println("Swimming gracefully."); } // 추상 메서드 display public abstract void display(); } 클래스 설명을 하자면, Duck이라는 슈퍼 클래스에서 quack 및 swim 메서드가 정의되어 있고, display 메서드는 추상 메서드로 정의되어..
클린코드 #6 객체와 자료구조
1. 자료 추상화 public class Point { public double x; public double y; } public interface Point { double getX(); double getY(); void setCartesian(double x, double y); } 위의 Point 클래스는 구현을 노출한다. x, y의 값을 변경하기 위해서는 직접 변경 해야하기 때문에 구현이 노출되었다. 그에 비해 밑의 Point 추상 클래스는 setCartesian으로 구현을 숨겼다. 이처럼 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 한다. //구체적인 Vehicle 클래스 public interface Vehicle{ double getFuelTankCapacityInGallon..
클린코드 #5 형식 맞추기
위 사진은 배선정리가 끝난 뒤, 모습이다. 여러분의 코드는 배선 정리가 필요하다. 배선 정리가 안 되어있어도 잘 작동하지만 코드의 내용을 파악하기 위해 선들을 하나하나 볼 때면 왜 배선 정리를 하지 않았는지 후회할 것이다. “코드 형식은 매우 중요하다” 오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다. 그러나 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 1. 적절한 행 길이를 유지하라 다음의 그림은 파일의 길이 분포, 로그 배율을 표로 나타낸 그림이다. JUnit, fitnese와 같은 파일을 보면 대부분의 파일 크기가 200줄 미만이다. 200줄 미만의 길이의 코드 파일로도 커다란 시스템을 구축 할 수 있다. 📢 파일의 길이는 200~300줄을 넘지 않도록 한..
클린코드 #3 함수
함수는 작게 만들어라. 🧐 책에서는 함수의 길이를 3~4 줄로 권장하고 있다. 함수는 한 가지만 해라 public static String renderPageWithSetupsAndTeardowns( PageData pageData, boolean isSuite) throws Exception { if( isTestPage(pageData)) includeSetupAndTeardownPages(pageData, isSuite); return pageData.getHtml(); } 페이지가 테스트 페이지인지 판단한다. 조건문을 통해 설정 페이지와 해제 페이지를 넣는다. 페이지를 HTML로 렌더링 한다. 함수는 한 가지 해야 한다고 했는데 위의 함수는 3가지 기능을 하고 있다. 🧐 함수의 추상화 수준이 하나..
코딩하는_대학생
'코딩하는 대학생의 책 추천' 카테고리의 글 목록