전체 글333 Go - Return 과 handle an error 참조: https://go.dev/doc/tutorial/handle-errors 개요 error 를 다루는것은 견고한 코드를 작성하는데 있어 필수요소라고 할 수 있다. 이번에는 greetings 모듈에서 error 를 반환해보고 caller 에서 이를 다루어보도록 한다. - error 반환 인사할 사람이 없다면 답장을 보내도 의미가 없다. 호출자가 이름을 빈값으로 호출했다면 caller 에게 error 를 반환해보도록 하자. greetings.go 파일을 아래와 같이 수정한다. package greetings import ( "errors" "fmt" ) // Hello returns a greeting for the named person. func Hello(name string) (string, .. 2021. 11. 28. Go - called module 과 caller module 참조: https://go.dev/doc/tutorial/call-module-code 개요 이번에는 2 개의 Go 모듈을 만들어 본다. 처음에는 다른 라이브러리나 어플리케이션에서 import 되도록 하는 모듈을 만들고, 그 다음에 이를 호출하는 호출 어플리케이션 모듈을 만든다. 호출되는 모듈 만들기 Go 코드는 package 로 그룹화되고, package 는 module 로 그룹화 된다. 모듈은 코드를 실행하는데 필요한 종속성과 Go 버전, 해당 코드가 필요한 모듈의 집합을 정의한다. 일반적으로 모듈에 기능을 추가하거나 개선하면 모듈의 새로운 버전을 배포한다. 만약 내가 작성한 모듈의 기능을 호출한 사용자가 있다면 해당 사용자는 갱신된 package 를 import 하고 운영에 배포하기 전에 새로운 버.. 2021. 11. 28. Go - hello world 와 external package 참조: Get started with go - https://go.dev/doc/tutorial/getting-started - 기본환경 Go 를 설치했다고 가정하고 글을 작성한다. 설치는 https://go.dev/doc/install 에서 진행한다. IDE 는 GoLand 를 이용하였다. - Hello world 내가 작성한 코드가 다른 모듈에 포함된 package 들을 import 해야할 때, 내가 작성한 코드의 자체 모듈을 통해 의존성 관리를 한다. 자체 모듈은 go.mod 파일에서 정의하며 import 해야하는 package 들을 제공하는 모듈을 추적한다. go.mod 파일을 생성하여 내 코드가 의존성을 추적할 수 있게 하려면 go mod init 명령어를 수행해야 하는데, 내 코드가 위치할 모.. 2021. 11. 28. 이펙티브 자바 - 계승을 위한 설계, 문서화 - 이 글은 Effective Java 를 기반으로 작성되었습니다. - 개요 이전의 '계승대신 구성하라'는 규칙에서는 계승을 고려한 설계나 문서화가 되지 않은 클래스에 대해 하위 클래스 생성시 문제점을 살펴보았다. 그렇다면 '계승을 고려한 설계나 문서화'의 의미란 무엇인가? - 재정의 가능 메서드 문서 작성 재정의 가능 메서드는 non-final 인 public 이나 protected 접근제어자를 가진 메서드나 생성자를 말한다. 이들에 대해 재정의 가능 메서드의 호출 순서나 호출 결과를 문서로 남겨야 한다. 관습적으로 주석 맨 마지막 부분에 작성하며 '이 구현은~'으로 시작한다. /** * {@inheritDoc} * * This implementation iterates over the collecti.. 2021. 11. 21. DDIA - 그래프형 데이터 모델 - 이 글은 마틴 클레프만의 데이터 중심 애플리케이션 설계를 기반으로 작성되었습니다. - 개요 다대다 관계가 데이터 모델을 구별하는 중요한 기능임을 살펴봤다. 앞서 애플리케이션이 1:N 관계이거나 관계가 없다면 문서 모델이 적합하다고 하였다. 반면 관계형 모델은 M:N 을 다루기 수월하지만 데이터간 연결이 복잡해지면 그래프형 데이터 모델을 사용하는편이 자연스럽다. 그래프의 구성요소에는 정점(노드, 엔티티)과 간선(엣지, 관계, 호)이 있다. 예를 들어 소셜그래프에서 정점은 사람이며 간선은 사람간의 관계라고 할 수 있다. 웹 그래프에서는 정점은 웹이며 간선은 다른 페이지의 HTML 링크라고 할 수 있다. 위의 예제에서는 정점이 모두 같은 유형(type)을 예로 들었지만 그래프는 같은 유형의 데이터만 정점으.. 2021. 11. 21. 이펙티브 자바 - 계승대신 구성 - 이 글은 Effective Java 를 기반으로 작성되었습니다. - 개요 계승(extends)은 코드 재사용을 돕는 강력한 도구이지만 잘못 사용하면 S/W 가 깨지기 쉽다. 계승을 사용하기전에는 아래와 같은 사항들을 고려해보는것이 좋다. 단일 패키지내에서 상위 클래스와 하위 클래스 구현자가 같은 경우 계승을 고려해 설계되었으며 문서를 갖춘 클래스인 경우 만약 객체 생성 가능 클래스라면 해당 클래스가 속한 패키지밖에서 계승을 시도하는것은 위험하다. - 계승의 문제점 메소드 호출과 달리 계승은 캡슐화 원칙을 위반한다. 상위 클래스 A 와 이를 extends 한 하위 클래스 B가 있다고 가정해보자. 하위 클래스 B를 변경하지 않아도 release 가 거듭되면서 상위 클래스 A 의 동작이 변경되면 하위 클래.. 2021. 11. 6. 이전 1 ··· 19 20 21 22 23 24 25 ··· 56 다음