기술독서

    [자바의 정석] 8장 예외처리(Exception handling)

    [자바의 정석] 8장 예외처리(Exception handling)

    예외처리(Exception handling) 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 컴파일 에러(compile-time error) 컴파일 시에 발생하는 에러 런타임 에러(runtime error) 실행 시에 발생하는 에러 논리적 에러(logical error) 실행은 되지만, 의도와 다르게 동작하는 것 런타임 에러를 방지하기 위해서는 프로그램의 실행 도중 발생할 수 있는 모든 경우의 수를 고려하여 이에 대한 대비를 하는 것이 필요하다. 자바에서는 runtime 시 발생할 수 있는 프로그램 오류를 'error'와 'exception', 두 가지로 구분하였다. error 메모리 부족(Out..

    [자바의 정석] 7장 - 객체지향 프로그래밍 Ⅱ

    [자바의 정석] 7장 - 객체지향 프로그래밍 Ⅱ

    상속 (Inheritance) 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속의 장점 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 extends 키워드와 함께 써준다. class Child extends Parent { ... } 조상 클래스 부모(parent) 클래스, 상위(super) 클래스, 기반(base) 클래스 자손 클래스 자식(child) 클래스, 하위(sub) 클래스, 파생된(derived) 클래스 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다. 자손 클래스의 멤버 개수는 조상 클래스..

    [Clean Code] 11장 시스템

    [Clean Code] 11장 시스템

    Clean Code 11장 시스템 "복잡성은 죽음이다. 개발자에게서 생기를 앗아가며, 제품을 계획하고 제작하고 테스트하기 어렵게 만든다." - 레이 오지(Ray Ozzie), 마이크로소프트 CTO 도시를 세운다면? 도시는 수도 관리 팀, 전력 관리 팀, 교통 관리 팀, 치안 관리 팀, 건축물 관리 팀 등 각 분야를 관리하는 팀이 있고, 적절한 추상화와 모듈화 때문에 잘 돌아 간다. 소프트웨어 팀도 도시처럼 구성한다. 깨끗한 코드를 구현하면 낮은 추상화 수준에서 관심사를 분리하기 쉬워진다. 이 장에서는 높은 추상화 수준, 즉 시스템 수준에서도 깨끗함을 유지하는 방법을 살펴본다. 시스템 제작과 시스템 사용을 분리하라 제작construction은 사용use 아주 다르다. 소프트웨어 시스템은(애플리케이션 객체를..

    [자바의 정석] 6장 - 객체지향 프로그래밍 Ⅰ

    [자바의 정석] 6장 - 객체지향 프로그래밍 Ⅰ

    객체지향 프로그래밍 Ⅰ 객체지향 이론의 기본 개념은 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들을 사물 간의 상호작용이다.'라는 것이다. 객체지향 언어 객체지향 언어의 주요 특징 코드의 재사용성이 높다. 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 코드의 관리가 용이하다. 코드 간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 신뢰성이 높은 프로그래밍을 가능하게 한다. 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. 너무 객체지향 개념에 얽매여서 고민하기보다는 일단 프로그램을 기능적으로 완성한 다음 어떻게 하면 보다 객체지향적으로 코드를 개선..

    [Clean Code] 10장 클래스

    [Clean Code] 10장 클래스

    Clean Code 10장 클래스 코드의 표현력과 그 코드로 이루어진 함수에 아무리 신경 쓸지라도 좀 더 높은 차원 높은 단계까지 신경 쓰지 않으면 깨끗한 코드를 얻기는 어렵다 클래스 체계 클래스를 정의하는 표준 자바 관례에 따른 순서 정적 공개 상수 정적 비공개 변수 비공개 인스턴스 변수 공개 변수 (필요한 경우는 거의 없음) 공개 함수 비공개 함수 (자신을 호출하는 공개 함수 직후) 추상화 단계가 순차적으로 내려간다. 캡슐화 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 반드시 숨겨야 한다는 법칙도 없다. 때때로 변수나 유틸리티 함수를 protected로 선언해 테스트 코드에 접근을 허용하기도 한다. 하지만 그전에 비공개 상태를 유지할 온갖 방법을 강구해야 한다. 캡슐화를 풀어주는 결정은 ..

    [Clean Code] 9장 단위 테스트

    [Clean Code] 9장 단위 테스트

    애자일과 TDD 덕택에 단위 테스트를 자동화하는 프로그래머들이 점점 더 늘어나는 추세다. 하지만 우리 분야에 테스트를 추가하려고 서두르는 와중에 많은 프로그래머들이 제대로 된 테스트 케이스를 작성해야 한다는 좀 더 미묘한 사실을 놓쳐버렸다. TDD 법칙 세가지 첫째 법칙 : 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 법칙 : 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 셋째 법칙 : 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 깨끗한 테스트 코드 유지하기 테스트 코드는 실제 코드와 못지 않게 중요하다. 테스트 코드는 사고와 설계와 주의가 필요하다. 실제 코드 못지 않게 깨끗하게 짜야 한다. 테스트는 유연성, 유지보수성, 재사..