Book Review

Book Review/Effective Java

[Effective Java] Item 15-17 : 클래스의 접근 권한 설정과 불변 클래스

Item 15 : 클래스와 멤버의 접근 권한을 최소화하라 잘 설계된 컴포넌트는 내부 구현을 완벽히 숨겨서, 구현과 API를 깔끔히 분리한다. 오직 API를 통해서만 다른 컴포넌트와 소통하며 서로의 내부 동작 방식에는 전혀 개의치 않는다. 여기서 말하는 것은 정보 은닉, 캡슐화이다. 정보 은닉의 장점은 컴포넌트들을 서로 독립시켜서 개발, 테스트, 최적화, 적용, 분석, 수정을 개별적으로 할 수 있게 해 준다. 정보 은닉, 캡슐화의 장점 개발 속도 향상 : 여러 컴포넌트를 병렬로 개발하는 것이 가능하다. 관리 비용 절감 : 각 컴포넌트를 더 빨리 파악할 수 있고, 다른 컴포넌트로 교체하는 부담도 적다. 성능 최적화에 기여 : 시스템 전체에서 최적화할 컴포넌트를 정해서, 특정 컴포넌트만 최적화할 수 있다. 재..

Book Review/Effective Java

[Effective Java] Item1 : 생성자 vs 정적 팩터리 메서드

Item1 : 생성자 대신 정적 팩토리 메서드를 고려하라 클래스의 인스턴스를 얻는 가장 기본적이고 전통적인 방법은 public 생성자이다. new 키워드를 이용하여 인스턴스를 생성할 수 있다. Item item = new Item(); 이 방법과는 별도로 정적 팩토리 메서드(static factory method)를 제공하는 방법을 꼭 알아두면 좋다. 해당 클래스의 인스턴스를 반환하는 단순한 정적 메서드이다. 예를 들면 아래와 같이 primary type인 boolean의 boxing class Boolean에서 정적 팩토리 메서드를 이용해서 boolean을 Boolean으로 변환하는 메서드가 있다. public static Boolean valueOf(boolean b) { return (b ? TRU..

Book Review/Clean Code

[CleanCode] 클린코드 리뷰_7장 : 오류처리

우아하게 예외 처리하기 클린코드를 다루는 책에서 오류처리를 왜 논하는가? 오류처리는 프로그램에 반드시 필요한 요소 중 하나일 뿐이다. 클린코드와 오류처리는 확실히 연관성이 있다. 7장에서는 깨끗하고 튼튼한 코드에 한걸음 더 다가가는 단계로 우아하고 고상하게 오류를 처리하는 방법을 다룬다. 예외 처리 오류 코드보다 예외(Exception)를 사용하라 요즘은 예외를 던지는 것이 당연한 시대이지만, 과거에는 오류코드를 만들어서 던지는 방법을 사용했었다. 예외를 던지는 방법이 훨씬 명확하고, 처리 흐름이 깔끔해진다 예외를 던지고, 처리하는 방식 public class DeviceController { public void sendShutDown(){ try{ tryToShutDown(); }catch(Devic..

Book Review/Clean Code

[CleanCode] 클린코드 리뷰_6장 : 객체와 자료구조

자료구조와 객체 자료구조(Data Structure) 데이터 그 자체를 말함 자료를 공개 변수 사이에 Getter, Setter로 변수를 다룬다고 자료구조가 객체가 되는게 아니다. 객체(Object) 비즈니스 로직과 관련이 있다. 자료를 숨기고, 추상화한다. 자료를 다룰 수 있는 함수만 제공한다. 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있다. 구체적인 것과 추상적인 것? 추상화라는것은 최소한의 정보를 제공하는 것이다. 우리는 100 x (가솔린 양) / (연료탱크 용량)은 몰라도 된다. 몰라야만 할 수도 있다. 우리가 가솔린이 몇 퍼센트 차있는지, 그 퍼센트가 필요하다. 따라서 두번째, 추상적인 클래스가 더 낫다. 구체적인 Vehicle 클래스 public interf..

Book Review/Clean Code

[Clean Code] 클린코드 리뷰_ 5장 : 형식 맞추기

이번 장의 내용은 이 책을 보지 않았어도 여러분이 이미 대충은 알고 있었을 것이고, 이미 잘 지키고 있는 분들도 많을 것이다. 코드를 짤때 일정한 형식을 맞추는 것에대한 내용이다. 코드 글자를 구성하는 세세한 부분부터, 필드, 메서드의 배치까지 더 나은 방법을 제시한다. 형식(포맷팅)을 맞추는 목적 한가지를 분명히 짚고 넘어가자. 코드 형식은 중요하다! 너무 중요해서 무시하기 어렵다. 처음으로 코드를 짜고, 오랜 시간이 지나 원래 코드의 흔적을 더이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수의 용이성과, 확장성에 계속 영향을 미치게 된다. 즉, 오늘 처음구현한 코드의 가독성은 앞으로 바뀔 코드의 퀄리티에 지대한 영향을 미친다. 쉬운 예제를 하나 가져왔..

Book Review/Clean Code

[CleanCode] 클린코드 리뷰_ 4장 : 주석

주석을 최대한 쓰지 말자 잘 달린 주석은 그 어떤 정보보다 유용하다. 그러나 경솔하고 근거 없는 주석은 코드를 이해하기 더 어렵게 만든다. 프로그래밍 언어 자체가 표현력이 풍부하다면, 우리에게 프로그래밍 언어를 치밀하게 사용해 의도를 표현할 능력이 있다면, 우리에겐 주석이 필요 없을 것이다. 즉, 코드에 주석이 달려있다면 코드 품질이 나쁘기 때문일 확률이 높다. (물론 아닌 경우도 있다. [주석은 이럴때만 쓰자] 에서 알아보자.) 주석은 나쁜 코드를 보완하지 못한다. //직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if( employee.flags && HOURLY_FLAG && employee.age > 65 ){} employee.flags , HOURLY_FLAG , employee.age>..

Book Review/Clean Code

[Clean Code] 클린코드 리뷰_ 3장 : 함수

객체지향 5대 원칙 SOLID SRP : 단일 책임 원칙 OCP : 개방-폐쇄 원칙 LSP : 리스코프 치환 원칙 ISP : 인터페이스 분리 원칙 DIP : 의존성 역전 원칙 이 책을 읽다 보면 위의 객체지향 5대 원칙이 많이 등장한다. 3장 함수를 포함하여 객체지향 프로그래밍을 할 때 위의 원칙을 항상 상기하며 개발을 한다면 클린코드에 한걸음 가까워지게 될 것이다. SOLID의 자세한 내용은 아래 링크를 확인해 주세요. 2023.04.20 - [JAVA/JAVA 이론] - [JAVA] 객체지향 4대 특성(캡슐화, 상속, 다형성, 추상화), 5 원칙(SOLID) [JAVA] 객체지향 4대 특성(캡슐화, 상속, 다형성, 추상화), 5 원칙(SOLID) 객체지향의 4대 특성 : 캡슐화, 상속, 다형성, 추상..

Book Review/Clean Code

[Clean Code] 클린코드 리뷰_ 2장 : 의미있는 이름

의미가 분명한 이름 짓기 2장에서 다룰 내용은 이름짓기이다. 클래스명, 메서드명, 변수명을 봤을때 의미가 분명해야한다. 모호하면 안된다. 첫번째 예시로 든 코드이다. public List getThem(){ List list1 = new ArrayList(); for(int[] x : theList){ if(x[0] == 4){ list1.add(x); } } return list1; } 위의 코드를 보고 뭐하는 코드인지 알 수 있는가? 모른다. 위의 코드에 부가정보를 제공해보겠다. 위의 코드는 지뢰찾기에서 칸 상태를 뜻한다. theList는 보드판이다. x[0] == 4이면, 깃발이 꽂힌 상태이다. 깃발이 꽂힌 상태인 칸들을 list1에 담아 반환해야한다. 위의 정보들 없이 코드만 봐서는 아무것도 알수..

HSRyuuu
'Book Review' 카테고리의 글 목록