10장 클래스 1. 클래스는 작아야 한다 - 173p- 176p 예제 확인 2. 단일 책임 원칙(Single Responsibility Principle) : 클래스나 모듈을 변경할 이유가 하나뿐이어야 한다 - 큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다. - 작은 클래스는 각자 맡은 책임이 하나, 변경할 이유도 하나이며 다른 작은 클래스와 협력해 시스템에 필요한 동작을 수행한다 3. 응집도 -179p-184p 예제확인 4. 변경하기 쉬운 클래스 -186p-188p 예제확인 11장 시스템 전에 스프링 강을 들을 때, 관심사 분리에 대한 내용을 배웠던거랑 비슷한 내용 같다. 근데 책으로 보려니까 이해안가는 부분들이 좀 많아서 몇 번 더 읽어 봐야 될듯 1. 시스템 제작과 ..
7장 - 오류처리 1. 오류보다 예외를 사용하라 - 오류가 발생하면 예외를 던지는 편이 낫다. 호출자 코드가 더 깔끔해지기때문 2. ry-catch-finally문 부터 작성하라 3. 미확인 예외를 사용하라(내용이해안감) 4. 예외에 의미를 제공하라 5. 호출자를 고려해 예외 클래스를 정의하라 6. 정상 흐름을 정의하라 7. null을 반환하지마라 - null을 반환하는 코드는 일거리를 늘리고 호출자에게 문제를 떠넘기는 격 스쳐지나가는 null 반환하던 코드들,,,ㅠ 8. null을 전달하지 마라 - null을 반환하는거보다 더 나쁜 코드 8장. 경계 시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다. 패키지를 사고, 오픈소스를 이용하고, 때로는 다른 팀이 제공하는 컴포넌트를 사용함 이러한..
Callable - Runnable과 유사하지만 작업의 결과를 받을 수 있다 (값을 return 할 수 있다) Future - 비동기적인 작업의 현재 상태를 조회하거나 결과를 가져올 수 있다 결과값 가져오기 get() import java.util.concurrent.*; public class App { public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); Callable hello = () -> { Thread.sleep(2000L); return "Hel..
Executors - 고수준 Concurrency 프로그래밍 - 그런 기능을 Executors에게 위임 - Executors가 스레드를 만들고 우리는 Runnalbe를 제공해주면 된다 (Runnalbe에 우리가 할 일만 정의하면 됨) Executors가 하는 일 - 스레드 만들기 : 어플리케이션이 사용할 스레드 풀을 만들어 관리한다 - 스레드 관리 : 스레드 생명 주기를 관리한다 - 작업 처리 및 실행 : 스레드로 실행할 작업을 제공할 수 있는 API를 제공한다 주요 인터페이스 - Executors: excute(Runnalble) 많이 안씀 - ExecutorsService : Executors를 상속받은 인테페이스로 Callalbe도 실행할 수 있으며, Executors를 종료시키거나 여러 Calla..
Concurrent 소프트웨어 - 동시에 여러 작업을 할 수 있는 소프트웨어 ex) 웹 브라우저로 유튜브 보며 키보드로 문서에 타이핑, 녹화를 하면서 코딩을 하고 적어둔 문서를 보거나 수정 자바에서 지원하는 Concurrent 프로그래밍 - 멀티프로세싱 - 멀티스레드 자바 멀티스레드 프로그래밍 - Thread / Runable Thread 만드는 방법 1. - 상속(매우 불편) public class App { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); System.out.println("Hello Thread" ); } static class MyThread extends Th..
나쁜 코드에 주석을 다지 마라. 새로 짜라 1. 주석은 나쁜 코드를 보완하지 못한다 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 자신이 저지른 난장판을 주석으로 설명하려 애쓰는 대신에 그 난장판을 깨끗이 치우는 데 시간을 보내라 2. 코드로 의도를 표현하라 //예제1. 직원에게 복지 혜택을 받을 자격이 있는지 검사 if((employee.flags & HOURLY_FLAG) && (EMPLOYEE.age>65)) //예제2. if(employee.isEligibleForFullBenefits()) 주석으로 달려는 설명을 함수로 만들어 표현해도 충분 3. 좋은 주석 - 법적인 주석(ex.저작권 정보, 소유권 정보...) - 정보를 제공하는..
Optional : 오직 값 한 개가 들어 있을수도, 없을 수도 있는 컨테이너 ex ) 자바 프로그래밍에서 NulllPointException을 보게 될 때가 있다 package java8study; import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; public class App3 { public static void main(String[] args) { List springClasses = new ArrayList(); spri..
1. 작게 만들어라 책에 나온 예제 코드 보고 이해 2. 한 가지만 해라 함수는 한 가지를 해야 한다. 그 한가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈이다 3.함수 당 추상화 수준은 하나로 4. Switch문 책에 나온 예제 코드 보고 이해 5. 서술적인 이름을 사용하라 길고 서술적인 이름이 길고 서술적인 주석보다 좋다. 길고 서술적인 이름이 길고 서술적인 주석보다 좋다 6. 함수 인수 함수에서 이상적인 인수 개수는 0개 코드를 읽는 사람에게는 includeSetupPageInto(new PageContent) 보다 includeSetupPage()가 이해하기 쉽다. includeSetu..
OnlineClass.java package java8study; public class OnlineClass { private Integer id; private String title; private boolean closed; public OnlineClass(Integer id, String title, boolean closed) { this.id = id; this.title = title; this.closed = closed; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTit..
Stream sequence of elements supporting sequential and parallel aggregate operations 연속적이고 병렬적인 집계 연산을 지원하는 순서가 있는 요소 1. 쉽게말해 콜렉션이나 연속된 데이터를 처리하는 오퍼레이션 모음 2. 데이터를 담고 있는 저장소(컬렉션)이 아니다 3. 스트림이 처리하는 데이터 소스를 변경하지 않는다(Functionl in nature) ex) package java8study; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Spliterator; import java.util.stream.Collect..
- Total
- Today
- Yesterday