Args Args 클래스를 통해 시작은 좋았으나 확정성이 부족했던 모듈을 소개하고, 개선하여 정리하는 단계를 살펴본다. Args의 사용법은 생성자에 인수 문자열과 형식 문자열을 넘기고, Args에 값을 질의하여 인수를 얻는다. package com.objectmentor.utilities.args; import static com.objectmentor.utilities.args.ArgsException.ErrorCode.*; import java.util.*; public class Args { private Map marshalers; private Set argsFound; private ListIterator currentArgument; public Args(String schema, Strin..
창발적 설계로 깔끔한 코드를 구현하자 우리들 대다수는 켄트 벡이 제시한 단순한 설계 규칙 네 가지가 소프트웨어 설계 품질을 크게 높여준다고 믿는다. 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. 위 목록은 중요도 순이다. 단순한 설계 규칙 1: 모든 테스트를 실행하라 문서로는 시스템을 완벽하게 설계했지만, 시스템이 의도한 대로 돌아가는지 검증할 간단한 방법이 없다면, 문서 작성을 위해 투자한 노력에 대한 가치는 인정받기 힘들다. 놀랍게도 "테스트 케이스를 만들고 계속 돌려라"라는 간단하고 단순한 규칙을 따르면 낮은 결합도, 높은 응집력, 객체 지향 방법론이 지향하는 목표를 저절히 달성하게 된다. 즉, 테스트 케이스를 작성하면 설계 품질이 높아진..

도시를 세운다면? 도시가 잘 돌아가는 이유. 수도 관리 팀, 전려 관리 팀, 교통 관리 팀 등 각 분야를 관리하는 팀이 있기 때문이다. 도시가 돌아가는 이유는 적절한 추상화와 모듈화 때문이다. 큰 그림을 이해하지 못할지라도 개인과 개인이 관리하는 구성요소는 효율적으로 돌아간다. 소프트웨어 팀도 도시처럼 구성한다. 깨끗한 코드를 구현하면 낮은 추상화 수준에서 관심사를 분리하기 쉬워진다. 이 장에서는 높은 추상화 수준, 즉 시스템 수준에서도 깨끗함을 유지하는 방법을 살펴본다. 시스템 제작과 시스템 사용을 분리하라 우선 제작은 사용과 아주 다르다는 사실을 명심하라. 소프트웨어 시스템은 준비 과정(애플리케이션 객체를 제작하고 의존성을 서로 연결하는) 런타임 로직(준비 과정 이후에 이어지는)을 분리해야 한다. 시..
뭔가 잘못될 가능성은 늘 존재한다. 뭔가 잘못되면 바로 잡을 책임은 우리 프로그래머에게 있다. 깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 상당수 코드 기반은 전적으로 오류 처리 코드에 좌우된다. 여기저기 흩어진 코드 때문에 실제 코드가 하는 일을 파악하기가 어려워지게 된다. 오류 처리는 중요하다. 하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라 부르기 어렵다. 이 장에서는 우아하고 고상하게 오류를 처리하는 기법과 고려 사항 몇 가지를 소개한다. 오류 코드보다 예외를 사용하라 예전에는 예외를 지원하지 않는 프로그래밍 언어가 많았다. 그렇기 때문에 오류 플래그를 설정하거나, 오류 코드를 반환하는 방법이 전부였다. 예외를 사용하는 대신 오류 코드를 사용하면 코드가 훨씬..
자료 추상화 public class Point { public double x; public double y; } 확실히 직교좌표계를 사용한다. 개별적으로 좌표값을 읽고 설정하게 강제한다. public interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double getTheta(); void setPolar(double r, double theta); } 직교좌표계를 사용하는지 극좌표계를 사용하는지 알 길이 없다. 좌표를 읽을 때 각 값을 개별적으로 읽어야 한다. 좌표를 설정할 때는 두 값을 한꺼번에 설정해야 한다. 그저 조회 함수와 설정 함수로 변수를 다룬다고 클래스가 ..
- Total
- Today
- Yesterday
- Widget
- 클린코드
- ViewModelProvider
- Coroutine
- CancellationException
- 코루틴
- 함수
- Android
- clean code
- observable
- DSL
- ViewModelStoreOwner
- null
- 보이스카우트 규칙
- rxjava
- Flutter
- Kotlin
- 클린 코드
- 연산자
- gradle
- git
- ConcatAdapter
- Exception
- commit
- isActive
- ConcatAdapter.Config
- Flowable
- viewmodel
- DART
- TDD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |