본문 바로가기

전체 글

(183)
좋은 객체란 무엇일까 클래스와 메소드를 최소한의 역할로 구분해야 한다 -> 적절한 책임과 역할의 분배가 필요하다 -> 객체지향적인 설계란 뭘까? -> 좋은 객체를 구성하려면 어떻게 해야할까? 라는 생각에 도달했다. 그래서 좋은 객체가 뭔지 찾아보았다. 이 또한 정답이 있지않은 논쟁이 될 만한 부분들이 많지만, 확실한 건 고민없이 그냥 쓰는 사람보단 이 글을 읽은 내가 낫다는 것이다. 출처 : https://codingnuri.com/seven-virtues-of-good-object/ 출처의 출처 : https://www.yegor256.com/2014/11/20/seven-virtues-of-good-object.html 1. 객체는 생명체이다. 객체는 생명체이다. 객체는 속성(상태, 특징)과 행위(행동, 동작, 기능)을 ..
객체 지향 도메인모델링 우아한 테크코스 프리코스 미션의 요구사항 중 1. 들여쓰기 depth는 2까지 허용 2. 메소드가 한가지의 일만 하도록 설계 3. 클래스를 분리하는 연습 의 조건이 있었다. 이 세가지의 조건을 보고 이건 하나의 조건이라 생각하였다. (뇌피셜임) 이전에 포스팅을 하면서 공부했던 타이트한 객체지향적인 설계를 하라는 뜻이 아닐까. 각 객체가 하나의 책임을 가지고, 그 책임을 지는 과정의 행동마다 모두 메소드로 정의하라는 것 아닐까. 앞의 글에서 우아한 형제들의 글을 읽고 나름 정리를 해 보았지만 Okky에서 fender님의 글을 읽고 객체지향 도메인을 구상하는 방법을 공부해봤다. 물론 이번 글도 Okky에서 객체지향에 대한 글을 뒤지다 발견한 글을 읽고 생각하고 정리한 글이다. 작성자님의 의도를 100%이해한..
안티 패턴 (내 생각 포함) 프로그래밍 안티패턴이란 문제에 대해 자주 사용되는 프로그래밍 패턴이지만, 잘 모르고 무작정 쓰면 안좋은 결과를 가져오는 것을 말한다. http://en.wikipedia.org/wiki/Anti-pattern#Programming_anti-patterns 위키백과에서 안티패턴의 여러가지 종류를 볼 수 있고 이 중 내가 범하고 있던 몇가지를 기억하여 다음부터는 내 코딩을 개선하려 한다. 나처럼 어디서 본 건 있어서 무작정 장단점을 알지 못하고 쓰거나, 패턴을 알맞지 않은 곳에서 써서 발생할 수 있는 문제이다. 우테코 미션에서 내가 범했다고 생각하는 안티 패턴들을 적어보겠다... (ㅠ) 화물숭배 프로그래밍 (Cargo cult Programming) 프로그래밍 패턴에는 여러가지가 있다. 디자인 패턴에는 팩토..
객체 지향적으로 설계하고 구현하는 것이란 woowabros.github.io/study/2016/07/07/think_object_oriented.html 생각하라, 객체지향처럼 - 우아한형제들 기술 블로그 2년차 쪼랩이가 객체지향을 처음으로 접하고 공부를 하면서 나름대로 정리해보았습니다. woowabros.github.io 이글은 위의 우아한 형제들 기술 블로그의 김승영님의 글을 읽고 공부한 글입니다. 저만을 위해 쓴 글이기 때문에 객체지향에 대해 알고 싶어서 오신 분이라면 위의 블로그를 들어가서 정독하시는 것을 추천드립니다. 1. 도메인 구상하기 도메인은 본래 범위, 영토 라는 뜻을 가진다. 사용자들이 관심을 가지고 있는 특정 분야나 주제를 말하며 소프트웨어는 도메인에 존재하는 문제를 해결하기 위해 개발된다. 1-1. 객체 생각하기 도메인에..
Commit Convention 1. new features, bug fixes, breaking changes의 세가지 changelog를 사용한다. 재량으로 바꿀 수 있지만 기본적인 골격인 이 세가지로 정한다. 2. 커밋의 변화를 찾고 있을 때 포멧의 변경(공백줄의 추가/제거, 들여쓰기), 세미콜론을 빼먹은 경우, 주석 같은 경우는 아래의 명령어를 통해 무시 가능하다. git bisect skip $(git rev-list --grep irrelevant HEAD) 3. 히스토리를 검색할 때 커밋 메세지로 정보를 더 명확하게 전달하여야 한다. 사전에 정한 컨벤션을 따르고, 어디가 바뀌었는지 무엇을 바꾸었는지 명시해야 한다. 4. 컨벤션 (): 모든 커밋 줄은 100줄을 넘어가면 안된다. 각각의 자리에 들어갈 내용은 아래에서 설명한다..
Google Java Style Guide(번역) 이 글은 Google Java Style Guide을 번역하고 공부하기 위해 작성되었습니다. 원본을 읽으며 이해하고 이해한 대로 번역했습니다. (잘 모르는 부분은 직역하기도 했습니다.) 틀린 부분이나 번역에 대한 의견이 다르다면 댓글로 말씀 부탁드리겠습니다. 원본은 google.github.io/styleguide/javaguide.html#s1-introduction Google Java Style Guide 1 Introduction This document serves as the complete definition of Google's coding standards for source code in the Java™ Programming Language. A Java source file is d..
TDD_9 14장 바꾸기. $5 + 10CHF = $10 (1:2의 환율일 경우) $5 + $5 = $10 $5 + $5에서 Money반환하기 //해결//Bank.reduce(Money) //수행예정//Money에 대한 통화 변환을 수행하는 Reduce Reduce(Bank, String) 이젠 달러 뿐만아니라 프랑을 달러로 바꾸는 과정을 진행한다. 은행에 환율을 지정하고, 프랑을 달러로 변환하고 알맞게 환전되었는지 확인하면 되겠다. 우리는 2프랑을 1달러로 바꿀 수 있는 2:1비율로 환율을 설정할 것이다. 컴파일 에러를 잡기위해 Bank에 addRate() 추가하고 테스트를 완료시키기 위해현재 bank의 reduce가 Money를 부르고 있으므로 Money의 reduce를 수정해본다. 음.. 테스트는 초록막대를..
Git .gitignore 이용하기 로그파일, 빌드파일, 암호 같은 경우 원격저장소에 올리기 민감한 정보들이다. 이들을 올리지 않는 방법은 .gitignore을 이용하는 것이다. github에서 repository를 생성할 때 생성할 수도 있지만, 그냥 .gitignore이라는 파일을 만들고 그 안에 무시하고싶은 파일을 지정해주면 된다. .gitignore 는 표준 Glob를 사용하고 몇가지 패턴이 있다. # : 주석 * : 와일드 카드 *.log : 확장자가 log파일은 모두 무시 ! : 무시하게 한 파일을 다시 추적 !go.log : *.log로 log 파일은 무시하기로 했지만, 이 규칙을 무시하고 go.log는 staged에 올린다. / : path 표시 /module : 루트 디렉터리 아래 /module 파일을 무시. 그러나, us..