분류 전체보기 (132) 썸네일형 리스트형 [클린 코드] 7장. 오류처리 1. 오류 코드보다 예외를 사용하라 오류가 발생하면 예외를 던지는 것이 코드를 깔끔하게 해준다. (비즈니스 로직이 오류 처리 코드와 뒤섞이지 않는다.) 2. try-catch-finally 문부터 작성하라 예외에서 범위를 정의함으로써 try 블록에 들어가는 코드의 본질을 유지하기가 쉽다. 3. 미확인 (unchecked) 예외를 사용하라 확인된 (checked) 예외는 OCP(Open Closed Principle)을 위반한다. 하위 메소드에서 checked 예외를 던진다면, 상위 메소드들이 그 예외를 처리하기 위해 1) catch 블록을 추가하거나 2) 선언부에 throw 절을 추가해야 한다. 즉, 모든 함수가 최하위 함수에서 던지는 예외를 알아야 하므로 캡슐화가 깨진다. 4. 예외에 의미를 제공하라 .. [클린 코드] 5장. 형식 맞추기 1. 적절한 행 길이를 유지하라 일반적으로 작은 파일이 큰 파일보다 이해하기 쉽다. 신문 기사처럼 작성하라 이름은 간단하면서도 설명이 가능하도록 짓자. 소스 파일 첫 부분은 고차원 개념과 알고리즘을, 아래로 내려갈수록 의도를 세세하게 묘사하자. (저차원 함수와 세부 내역) 개념은 빈 행으로 분리하라 생각 사이는 빈 행을 넣어 분리해라 일련의 행 묶음은 완결된 생각 하나를 표현하라 세로 밀집도 연관성: 서로 밀접한 코드 행은 세로로 가까이 놓여야 한다. 수직 거리 서로 밀접한 개념은 세로로 가까이 둬야 한다. 변수 선언: 변수는 사용하는 위치에 최대한 가까이 선언한다. 인스턴스 변수: 인스턴스 변수는 클래스 맨 처음에 선언한다. 종속 함수: 한 함수가 다른 함수를 호출한다면, 두 함수는 세로로 가까이 배치.. [클린 코드] 3장. 함수 1. 작게 만들어라! 블록과 들여쓰기 if문, else문, while 문 등에 들어가는 블록은 한 줄이어야 한다! 2. 한 가지만 해라! 함수 당 추상화 수준은 하나로 하자: 함수 내 모든 문장의 추상화 수준이 동일해야 한다. 예를 들어 아래 코드에서 함수 내 추상화 수준이 다르다. public String method(Page page){ String testPage = page.getContent("content"); // 추상화 수준 높다. ... if(testPage) { String pagePathName = PathParser.render("path"); } // 추상화 수준 낮다. ... return page.getHtml(); // 추상화 수준 높다. } 추상화 수준이 다르면 코드를 읽는 .. [Multi-Thread] execute() vs submit() execute()와 submit()은 모두 ExecutorService 인터페이스에서 제공되는 메서드로, 작업을 쓰레드 풀에 제출하여 실행하는 데 사용됩니다. 하지만 두 메서드 간에는 몇 가지 차이점이 있습니다. execute(Runnable command) 해당 메소드는 Executor 인터페이스 내부에 아래와 같이 정의되어 있습니다. void execute(Runnable command); execute 메서드의 특징은 아래와 같습니다. Runnable 타입의 작업만 처리 가능합니다. 반환 값이 없습니다. execute() 메서드는 작업이 완료되면 어떠한 결과값도 반환하지 않습니다. 따라서 Future 객체를 통해 작업의 상태를 추적하거나 결과를 얻을 수 없습니다. 작업 실패 시 예외 처리 만약 작업.. [Multi-Thread] ThreadPoolExecutor 사용법 및 주의사항 아래 포스팅에서 멀티 쓰레드 환경에서의 작업을 위한 쓰레드 풀을 생성하기 위한 다양한 인터페이스에 대해서 작성하였습니다. https://silver-programmer.tistory.com/entry/Executor-ExecutorService%EC%99%80-ThreadPoolExecutor [Multi-Thread] Executor, ExecutorService와 ThreadPoolExecutor 자바에서는 다중 쓰레드 환경에서 작업을 비동기적으로 실행하기 위한 다양한 인터페이스와 클래스를 제공하고 있습니다. 대표적으로 Executor 인터페이스가 있고, Executor를 확장한 인터페이스인 silver-programmer.tistory.com 여기에서 ThreadPoolExecutor에 대해서도 간.. [Multi-Thread] Executor, ExecutorService와 ThreadPoolExecutor 자바에서는 다중 쓰레드 환경에서 작업을 비동기적으로 실행하기 위한 다양한 인터페이스와 클래스를 제공하고 있습니다. 대표적으로 Executor 인터페이스가 있고, Executor를 확장한 인터페이스인 ExecutorService 인터페이스, 그리고 ExecutorService 인터페이스를 구현한 클래스 중 하나인 ThreadPoolExecutor 가 있습니다. 이번 포스팅은 각각의 인터페이스 및 클래스에 대해서 작성해 보았습니다. Executor 인터페이스 Executor 인터페이스는 java.util.concurrent 패키지에서 제공하는 인터페이스로, 아래와 같이 단일 추상 메서드 'execute(Runnable command)'를 가지고 있습니다. 이 메서드는 Runnable 객체를 매개변수로 받아서.. [Multi-Thread] 쓰레드 결과 기다리기 (Future, submit(), get()) 최근에 회사에서 멀티 쓰레드로 병렬 처리를 하는 코드를 구현해야 했습니다. Java에서 제공하는 ExecutorService를 이용하여 Thread Pool (쓰레드 풀)을 생성하고, 각 쓰레드들에게 작업을 던진 후, 각 쓰레드의 작업 결과값을 받아서 후처리를 해주어야 하는 코드를 작성해야 했습니다. 그 과정에서 여러 가지 배운 점이 있어 정리하고자 포스팅을 작성하였습니다. 처음에는 아래와 같이 Runnable과 Executor 클래스의 execute()을 이용해 코드를 작성하였습니다. (참고로, ExecutorService는 Executor를 상속하기 때문에 타입이 ExecutorService여도 execute() 메서드 사용이 가능합니다.) public class ThreadTest { void ru.. MVC 패턴 MVC 패턴이란? Model View Controller의 약자로, 디자인 패턴 중 하나입니다. MVC 패턴이 있기 전에는 하나의 서블릿이나 JSP에서 어떤 애플리케이션의 모든 기능들을 구현하고 처리하였습니다. 이렇게 분리할 수 있는 기능들도 다 같은 곳에서 처리하다 보니, 유지보수 하기에 어려움이 있었습니다. 이렇게 서블릿이나 JSP로 처리하던 것을 모델(Model), 뷰(View), 컨트롤러(Controller)라는 영역으로 서로 역할을 나눈 것이 MVC 패턴입니다. 웹 애플리케이션은 보통 이 MVC 패턴을 주로 사용합니다. Controller : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행 혹은 호출합ㄴ다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담습니다. Model.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 17 다음