[프로그래밍 언어론] 켄트벡(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가 시스템에 대한 기능을 정리한 것으로써, 이를 기반으로 개발자는 사용자가 원하는 동작에 대한 정의를 할 수가 있습니다. 유스케이스의 실질..
[프로그래밍 방법론] 객체와 자료구조 – Clean Code 이 글은 Clean Code 책의 내용을 정리한 것입니다. 오류 처리는 반드시 프로그램에 필요한 요소중 하나입니다. 입력이 이상하거나 디바이스가 실패할지도 모르기 때문입니다. 간단히 말해 무엇인가가 잘못될 가능성은 언제든지 존재합니다. 1. 오류코드 보다는 예외를 사용하라. 과거에는 예외를 지원하지 않는 언어들이 많았지만, 현재는 C#, Java와 같은 언어들이 모두 예외를 지원하고 있습니다. 예외를 지원하지 않으면 오류처리를 하는데 많은 한계가 있고, 호출자 코드가 복잡해지는 문제를 가지지만 예외를 사용하면 이러한 문제를 해결 할 수 있습니다. 2. Try-Catch-Finally 코드부터 구현하라. 예외에서 프로그램 안에다 범위를 정의한다는..