728x90

분류 전체보기 85

[Clean Code] 15장 JUnit 들여다보기

15장 JUnit 들여다보기 Junit을 작성하고 테스트 코드를 통해 리펙토링하는 과정을 보여주는 챕터 Junit 프레임워크에서 코드를 가져와 리뷰하며 바람직한 코드 작성방법을 보여준다. 목차 JUnit 프레임워크 15-1. JUnit 프레임워크 JUnit은 저자가 많지만 켄트 백, 에릭 감마가 기초를 구현하였다. 공통된 접두어를 제거하자 캡슐화 되지 않은 조건문이 존재한다면 조건문을 캡슐화해서 메서드로 뽑아내 적절한 이름을 붙이자. 이름은 명확하게 붙이자 부정문이 긍정문보다 이해하기 약간 어렵다. 부정문을 긍정문으로 표현하자. 함수의 이름으로 효과를 명확하게 설명하자 함수는 한 가지 일만 해야 한다 함수는 일관적으로 사용하자 정확한 이름을 사용하라 숨겨진 시각적인 결합 일관성을 유지하자 경계 조건을 캡..

[Clean Code] 14장 점진적인 개선

14장 점진적인 개선 점진적인 개선에 대한 사례를 보여주는 챕터. 시작은 좋지만 확장성이 부족한 모듈을 개선하고 정리 했던 과거 일로, Args 클래스를 작성한 저자의 코드를 예를 들어 하고싶은 말이 무엇인지 알아야 한다. 목차 Args 구현 어떻게 짰느냐고? Args: 1차 초안 그래서 멈췄다 점직적으로 개선하다 String 인수 14-1. Args 구현 public static void main(String[] args) { try { Args arg = new Args("l,p#,d*", args); boolean logging = arg.getBoolean('l'); int port = arg.getInt('p'); String directory = arg.getString('d'); execut..

[Clean Code] 13장 동시성

13장 동시성 객체는 처리의 추상화다. 스레드는 일정의 추상화다. 동시성과 깔끔한 코드는 양립하기 어렵다. 여러 스레드를 동시에 돌리는 이유와 여러 스레드를 동시에 돌리는 어려움에 대한 대처 방법과 깨끗한 코드를 작성하는 방법을 알려주는 챕터. 동시성을 테스트하는 방법과 동시성의 문제점을 이야기한다. 깨끗한 동시성은 복잡한 주제로 이 챕터에서는 간략히 소개만 하는 것이다. 목차 동시성이 필요한 이유? 미신과 오해 난관 동시성 방어 원칙 단일 책임 원칙 따름 정리: 자료 범위를 제한하라 따름 정리: 자료 사본을 사용하라 따름 정리: 스레드는 가능한 독립적으로 구현하라 라이브러리를 이해하라 스레드 환경에 안전한 컬렉션 실행 모델을 이해하라 생산자-소비자 읽기-쓰기 식사하는 철학자들 동기화하는 메서드 사이에 ..

[Clean Code] 12장 창발성

12장 창발성 착실하게 따르기만 하면 우수한 설계가 나오는 간단한 규칙을 소개하는 챕터. 창발성을 이용해 SRP와 DIP 같은 원칙을 쉽게 적용하자. 본 포스팅은 https://dev-juwon.netlify.app/blog/cc_chapter12/ 에서도 보실 수 있습니다. 목차 창발적 설계로 깔끔한 코드를 구현하자 단순한 설계 규칙 1: 모든 테스트를 실행하라 단순한 설계 규칙 2~4: 리펙터링 중복을 없애라 표현하라 클래스와 메서드 수를 최소로 줄여라 12-1. 창발적 설계로 깔끔한 코드를 구현하자 켄트 백이 제시한 단순한 설계 규칙 네 가지. 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현하라. 클래스와 메서드 수를 최소로 줄여라. 1번 부터 4번까지는 중요도 순서이다. 12-2...

[Dart] Dart 언어를 알아보자! ( Flutter ? )

이번 포스팅에서 다룰 내용은 Flutter와 Dart입니다. 🎯 Dart? 다트는 2011년 10월 GOTO 콘퍼런스에서 구글이 공개한 객체지향 프로그래밍 언어입니다. 구글이 멀티 플랫폼 상에서 동작되도록 하는 앱을 위해 디자인되었습니다. 기본적으로 C언어의 문법과 거의 유사하며 간결하고 강력한 기능을 지원합니다. Dart의 용도는 모바일, 데스크톱, 서버, 웹 앱 용도로 사용됩니다. Dart는 DVM( Dart VM )상에서 동작하거나 네이티브 컴파일링을 통해 모바일, 데스크톱, 브라우저, 서버 플랫폼 상에서 애플리케이션을 실행하고 지원합니다. Dart의 유연한 컴파일링 덕에 대상 플랫폼 및 목적에 따라 다양한 방식으로 실행할 수 있습니다. Dart Native 모바일, 데스크톱, 서버, 임베디드를 대..

[React] NextJs를 알아보자!

NextJs는 왜 사용할까? NextJs는 React로 만드는 SSR(Server Side Rendering) 프레임워크 입니다. ( Create React App과는 다른 Create Next App 명령어를 사용합니다.) npx create-next-app@latest --typescript 클라이언트 사이드 렌더링이 특징인 SPA를 서버 사이드 렌더링을 함으로 다음과 같은 이점이 있습니다. 1. 클라이언트 사이드 렌더링의 경우에는 모든 javascript 코드를 로드하고 난 이후에 사용자는 웹을 보게됩니다. 모든 javascript 코드를 읽을 때 까지 사용자는 많은 시간을 대기해야합니다. 2. SEO(Search Engine Optimization) 문제 해결 SEO는 검색 엔진 최적화를 말합니다..

Frontend/React.Js 2022.04.24

[Clean Code] 11장 시스템

11장 시스템 복잡성은 죽음이다. 개발자에게서 생기를 앗아가며, 제품을 계획하고 제작하고 테스트하기 어렵게 만든다. 소프트웨어 시스템은 준비 과정과 준비 이후 런타임 로직을 분리해야 한다. 시스템 수준에 있어서 여러가지 깨끗함을 유지하는 방법, 기법을 알려주는 챕터. 목차 도시를 세운다면? 시스템 제작과 시스템 사용을 분리하라 Main 분리 팩토리 의존성 주입 확장 횡단(cross-cutting)관심사 자바 프록시 순수 자바 AOP 프레임워크 AspectJ 관점 테스트 주도 시스템 아키텍처 구축 의사 결정을 최적화하라 명백한 가치가 있을 때 표준을 현명하게 사용하라 시스템은 도메인 특화 언어가 필요하다 11-1. 도시를 세운다면? 도시를 건설하고 관리하는 것에 한 사람 만으로는 충분하지 않지만 그래도 도..

[Clean Code] 10장 클래스

10장 클래스 지금까지는 코드 행과 코드 블록 그리고 함수를 올바르게 작성하는 방법과 구현하는 방법에 초점을 맞춘 챕터였다. 이번 챕터에서는 코드의 표현력과 구성하고 있는 함수에서 좀 더 차원 높은 단계까지의 깨끗한 클래스를 작성하는 방법을 다룬다. 목차 클래스 체계 캡슐화 클래스는 작아야 한다! 단일 책임 원칙 응집도 응집도를 유지하면 작은 클래스 여럿이 나온다 변경하기 쉬운 클래스 변경으로부터 격리 10-1. 클래스 체계 클래스를 정의하는 표준 자바 관례를 보았을 때 순서이다. 먼저 변수 목록이 나온다. 정적 공개 상수 ( static public 상수 ) 정적 비공개 변수 ( static private 변수 ) 비공개 인스턴스 변수 ( private instance 변수 ) 공개 변수( public..

[Clean Code] 9장 단위 테스트

9장 단위 테스트 제대로 된 테스트 케이스를 작성하는 방법과 작성 방법을 알려주는 챕터. 대다수의 프로그래머에게 단위 테스트란 자기 프로그램이 ‘작동한다'는 사실만 확인하는 일회성 코드에 불과했다. 애자일과 TDD 덕택에 단위 테스트를 자동화하는 프로그래머들이 많아지며 늘어나는 추세이다. 제대로 되어진 좋은 테스트 케이스를 작성하는 것이 중요하다. 목차 TDD 법칙 세가지 깨끗한 테스트 코드 유지하기 테스트는 유연성, 유지보수성, 재사용성을 제공한다 깨끗한 테스트 코드 도메인에 특화된 테스트 언어 이중 표준 테스트 당 assert 하나 테스트 당 개념 하나 F.I.R.S.T 9-1. TDD 법칙 세가지 TDD의 세가지 법칙을 지키면 개발과 테스트를 30초 주기로 묶을 수 있다. 실패하는 단위 테스트 를 ..

728x90