[프로그래밍 방법론] 동시성(여러개의 쓰레드)에 대한 코드 - Clean Code 이 글은 Clean Code 책의 내용을 정리한 것입니다. 동시성과 깔끔한 코드는 양립하기 어렵습니다. 쓰레드를 하나만 실행하는 코드를 짜기는 쉽습니다. 문제가 있는 다중 스레드 코드도 짜기 쉽습니다. 이 글에서는 여러 스레드를 동시에 돌리는 이유에 대해서 이야기하겠습니다. 동시성이 필요한 이유는? 동시성은 결합을 없애는 전략입니다. 무엇(What)과 언제(When)을 분리하는 전략입니다. 쓰레드가 하나인 프로그램은 무엇과 언제가 서로 밀접합니다. 이는 호출스택을 통해서 바로 확인이 가능한데 단일 스레드 프로그램을 디버깅하는 프로그래머는 일련의 정지점을 정한 후 어느 정지점에 걸렸는지 살펴보면서 시스템 상태를 파악하게 됩니..
[프로그래밍 언어론] 켄트벡(Kent beck)이 제시한 단순한 소프트웨어 설계 규칙 이 글은 Clean Code 책의 내용을 정리한 것입니다. 착실하게 따르기만 한다면 우수한 설계가 나오는 간단한 규칙 4가지가 있다면? 이 규칙을 통해서 코드 구조와 설계가 파악하기 쉬워지고, SRP, DIP와 같은 원칙 적용이 쉬워진다면 어떻게 하시겠습니까? 켄트 벡(Kent Beck)은 다음 규칙을 따르면 설계는 '단순해진다'라고 말하고 있습니다. 그럼 이러한 규칙은 무엇이 있을까요? 켄트벡이 제시한 규칙은 아래와 같습니다. 1) 모든 테스트를 실행한다.2) 중복을 없앤다.3) 프로그래머의 의도를 표현한다.4) 클래스와 메소드 수를 최소로 줄인다. 위의 목록은 중요도 순이며, 이에 대한 상세내역을 살펴볼 까 합니다...
[프로그래밍 방법론] 효율적 클래스 설계 방법 - Clean Code 이 글은 Clean Code 책의 내용을 정리한 것입니다. 코드의 표현력과 코드로 이루어진 함수에 아무리 신경을 쓸지라도 좀 더 차원 높은 단계까지 신경 쓰지 않으면 깨끗한 코드를 얻기는 어렵습니다. 이 글에서는 깨끗한 클래스에 대해서 정리하겠습니다. 1. 클래스 체계와 캡슐화 표준 자바 관례에 따르면 변수 목록, 함수 목록순으로 나옵니다. 변수는 정적 공개 상수, 정적 비공개 상수, 비공개 인스턴스가 나오고 공개변수가 필요한 경우는 거의 없습니다. 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 반드시 숨겨야 한다는 법칙도 없습니다. 하지만 비공개 상태를 유지할 온갖 방법을 강구해야 하며, 캡슐화를 풀어주는 결정은 언제나 최..
[프로그래밍 방법론] 효율적인 외부 코드 및 오픈 소스 이용법 (8장. 경계) - Clean Code 이 글은 Clean Code 책의 내용을 정리한 것입니다. 시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드뭅니다. 때로는 패키지를 사고, 오픈소스를 이용하기도 합니다. 어떤 식으로든 외부 코드를 자신의 코드에 깔끔하게 통합을 해야 합니다. 이 글에서는 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교를 살펴보도록 하겠습니다. 1. 외부 코드 사용하기 프레임워크 제공자는 적용성을 넓히려는 반면 사용자는 자신의 요구에 집중하는 인터페이스를 바라기 때문에 둘 사이에는 특유의 문제가 발생을 합니다. java.util.Map을 살펴보면, Map은 다양한 인터페이스로 수많은 기능을 제공하고 있습니다. M..
[프로그래밍 방법론] 객체 지향 프로그래밍 - 유스케이스 다이어그램(Use Case Diagram) 이 글에서는 유스케이스(혹은 유즈케이스, Use Case Diagram)에 대해서 알아보도록 하겠습니다.유스케이스의 정의는 UML 스펙에 잘 정의되어 있지만, 실질적으로 유즈케이스를 작성하는 방법은 정해진 기준이 없습니다. 1. 유스케이스란? 유스케이스는 시스템의 기능적인 요구사항을 정리하기 위한 방법입니다. 이는 시스템을 개발하기에 앞서 청사진을 그리는데 많은 도움을 줄 수 있습니다. 그리고 시스템의 요구사항을 명확히 파악할 수 있는 방법이기도 합니다. 외부 Actor가 시스템에 대한 기능을 정리한 것으로써, 이를 기반으로 개발자는 사용자가 원하는 동작에 대한 정의를 할 수가 있습니다. 유스케이스의 실질..