티스토리

재 현
검색하기

블로그 홈

재 현

trashyou.tistory.com/m

기록과 공유

구독자
0
방명록 방문하기
공지 기록과 소통을 목적으로 합니다. 모두보기

주요 글 목록

  • TDD 학습과 후기 일단 개인적인 후기 먼저 요구사항을 분석하고 기능 목록과 예외 사항을 작성했다. 이를 통해 예외 사항을 처리하면서 기능 목록을 잡으려고 했다. 그랬더니 자연스럽게 역할 설계로 이어졌다. 내가 만들어낸 코드를 빠르게 피드백받고 리팩터링 할 수 있다는 점이 TDD의 장점인 것 같다. 테스트가 개발을 주도한다. 그리고 지속적으로 코드 정리하면서 너무 지저분해지는 걸 막는다. 빠른 피드백을 받을 수 있어서, 바로 내가 완성된 코드가 올바른지 알 수 있다. 중요한 점은 테스트를 통과할 만큼만 코드 작성하는 거다. 처음 하면 어렵다. 단위 테스트 작성하는 것도 어색하고 어려운 내게, 테스트로 개발을 시작하는 건 어려웠다. 하지만 TDD의 장점을 알게 되고 연습하고자 마음먹었던 것 같다. 테스트 테스트란 무엇일까? .. 공감수 0 댓글수 0 2023. 11. 8.
  • getter 사용 getter 쓰지 말라고요? 이유 1: 객체의 내부 구조를 외부에서 직접 조작하게 되면 캡슐화, 모듈화가 깨지면서 코드의 안정성이 심각하게 무너진다. 이유 2: 객체의 필드가 public이라면, 필드를 private로 하고 getter 메서드를 사용하더라도, 필드를 public으로 공개하는 것과 다를 바가 없는 구조라면 결국 똑같은 문제가 일어난다. getter가 그냥 머릿속에서 지우면 되나요? 사실상, getter가 문제인 게 아니라, 객체의 구성 요소를 외부에서 조작하게 만드는 설계 구조가 문제를 일으키는 것이다. 우리는 왜 getter가 필요한지 알아야 한다. 우리는 보통 클래스 안에 있는 필드 값을 사용하기 위해 getter를 찾는다. 그럼 왜 그 값이 필요한지 의문을 던져야 한다. 가져온 값을 .. 공감수 0 댓글수 0 2023. 11. 8.
  • 의존성, 의존성 주입, 제어의 역전 의존성이란? 소프트웨어 개발에서 한 요소나 컴포넌트가 다른 요소나 컴포넌트에 의존하는 관계를 가리킨다. 어떤 요소나 모듈이 다른 요소의 기능, 데이터, 또는 서비스를 필요로 하는 경우 그것을 "의존성"이라고 한다. 쉽게 말해서 그냥 "나, 너 알고 있어"다. 의존성의 핵심은 '변경'이다. 같이 변경되는 코드를 같은 곳에 넣어야 한다. 그게 의존성이라고 할 수 있다. 의존성은 다양한 관계를 이루고 있다. 클래스 간의 관계: 클래스 A가 클래스 B를 사용하면 클래스 A는 클래스 B에 의존성을 가진다. 이것은 클래스 A가 클래스 B의 메서드나 속성을 호출하거나 클래스 B의 객체를 생성하거나 사용할 때 발생한다. 모듈 간의 의존성: 소프트웨어 시스템이 여러 모듈로 구성되어 있을 때, 모듈 X가 모듈 Y의 기능을.. 공감수 1 댓글수 1 2023. 11. 4.
  • 원시값 포장이란? 미션을 진행하면서 원시값 포장을 고려한다면?이라는 리뷰를 받았다. 그럼 원시값 포장이란 무엇일까? 원시값이란 우리가 잘알고 있는 것처럼, 기본 데이터 타입의 값을 가리키는 용어이다. 예를 들면 int, double, float, boolean 값이다. 그렇다면 이걸 포장하는 건 무슨 의미일까? 포장(Wrapping)이란 말그래도 감싸는 것이다. 그래서 기존의 함수나 모듈을 수정하지 않고 새로운 동작을 추가하거나 변경할 수 있다. 도대체 무슨 말일까? 코드를 예시로 들어보자. int number = 0; Number number = new Number(0); 우리는 두 방법을 사용해 생성할 수 있다. 1번은 단순히 int값에 넣는 것이고, 2번은 Number란 클래스로 값을 포장한 것이다. 그렇다면 2번 .. 공감수 0 댓글수 1 2023. 11. 2.
  • 정적 팩토리 메서드 정적 팩토리 메서드란, 객체 생성의 역할을 하는 클래스 메서드다. // LocalTime.class ... public static LocalTime of(int hour, int minute) { ChronoField.HOUR_OF_DAY.checkValidValue((long)hour); if (minute == 0) { return HOURS[hour]; } else { ChronoField.MINUTE_OF_HOUR.checkValidValue((long)minute); return new LocalTime(hour, minute, 0, 0); } } ... // hour, minutes을 인자로 받아서 9시 30분을 의미하는 LocalTime 객체를 반환한다. LocalTime openTime .. 공감수 0 댓글수 0 2023. 11. 2.
  • JUnit 4와 JUnit 5에서 제공하는 Assertions(번역) https://www.baeldung.com/junit-assertions (번역) 모아보기) assertEquals(Object expected, Object actual) : expected 의 값이 actual 일 때 성공합니다. assertNotEquals(Object unexpected, Object actual) : unpxpected 의 값이 actual 이 아닐 때 성공합니다. assertTrue(boolean condition) : condition 값이 True 값일 때 성공합니다. assertFalse(boolean condition) : condition 값이 False 값일 때 성공합니다. assertNull(Object actual) : actual 의 값이 Null 일 때 성공.. 공감수 0 댓글수 1 2023. 11. 1.
  • 객체지향 생활체조 9가지 원칙 소프트웨어 개발은 빠르게 진화하고, 복잡성이 증가함에 따라 좋은 코드를 작성하는 것이 더 중요해졌다. 객체지향 생활체조는 이러한 도전에 대한 해법 중 하나로, 더 나은 코드 작성을 돕는 9가지 원칙을 제시한다. 이 글에서는 객체지향 생활체조의 각 원칙을 살펴보고, 어떻게 이를 실제 코드 작성에 적용할 수 있는지 작성한다. 1. 한 메서드에 오직 한 단계의 들여 쓰기만 한다 코드를 읽기 쉽게 만들기 위해 메서드 내에서는 들여 쓰기를 최소화하고, 메서드가 한 가지 일만 수행하도록 유지해야 한다. 이렇게 하면 코드가 단순해지고 이해하기 쉬워진다. // 수정 전 public static int operate(int[] numArray, String op) { int result = 0; if(op.equuals.. 공감수 0 댓글수 1 2023. 11. 1.
  • 파이브 라인스 오브 코드 읽기(1) 우선, 책의 제목처럼 "다섯 줄로 만들기 위한 기본 패턴"을 예로 들기 전에, 리팩토링이란 뭔지부터 보자. 리팩토링이란? "그거 머 코드 재사용하게 하는 거 아냐?" "좀 빠르게 만드는 거 아냐?" 이것도 맞는 말이다. 하지만 가장 핵심적인 이유가 있다. 좋은 코드란, "사람이 읽기 쉽고, 유지보수가 용이하며, 의도한 대로 잘 동작한 코드이다." 그런 의미에서 리팩토링이란 " 기능을 변경하지 않고, 코드의 가독성과 유지보수가 쉽도록 코드를 변경하는 것"이라고 할 수 있겠다. 코드를 읽는 시간이 작성하는 시간보다 많다. 대부분의 프로그래머들은 코드를 읽고 이해하는데 많은 시간을 할애한다. 이해하지 못하고 변경하면 치명적인 장애를 발생시킬 수 있기 때문이다. 그리고 우리 프로그래머들의 시간은 비싸다. 코드베.. 공감수 0 댓글수 0 2023. 10. 30.
  • 주식 자동 매수/매도 프로그램 만들기 후기 유투버 '조코딩'의 누구나 쉽게 주식 투자 자동화 - 배경지식 없이 20분 만에 똑똑한 국내, 해외 자동매매 시스템 완성 동영상을 보고 따라 하고 변형해 본 후기 프로그램은 주어진 매수 목록에 따라 자동으로 매수 및 매도를 수행한다. RSI 기반 매수/매도: RSI (Relative Strength Index)를 사용하여 과매수 및 과매도 상태를 판단하여 매수 또는 매도를 실행한다. 사전 작업 1. 한국투자증권 비대면 계좌 개설 가입을 하게 되면 이렇게 APP Key,와 APP Secret을 받을 수 있다. 이걸 사용하여 API 사용하면 된다! 디스코드 준비 디스코드를 통해 실시간으로 받아 볼 수 있다. 웹 후크를 생성한다 파이썬(https://www.python.org/)을 다운로드하고, visual .. 공감수 1 댓글수 0 2023. 8. 2.
  • 우아한 객체 지향 - 의존성 의존성을 이용해 설계 진화시키기 의존성(Dependency) 설계 - 어디에 어떤 코드를 넣을지 핵심은 '변경'이다. 같이 변경되는 코드를 같은 곳에 넣어야 한다. 그게 의존성 연관관계: 타입을 알고 있음 의존관계: 파라미터 혹은 리턴타입 혹은 메서드 안에서 그 타입을 생성 상속관계: 타입을 상속 아래 5가지를 지켜주자. 양방향 의존성을 피하라 다중성이 적은 방향을 선택해라 One-To-Many 보단 Many-To-One 의존성이 필요 없다면 제거해라 패키지 사이의 의존성 사이클(양방향 의존성)을 제거한다. 설계 원칙은 변경이다. 관계에는 방향성이 필요 관계의 방향 = 협력의 방향 = 의존성의 방향 관계의 종류 연관관계: 협력을 위해 필요한 영구적인 탐색 구조 의존관계: 협력을 위해 일시적으로(파라미터,.. 공감수 0 댓글수 0 2023. 8. 2.
  • const의 위력 전 회사에서 1년동안 회사 다니면서 가장 많이 보고 들었던 건 뭐였을까 생각해보았다. 하나가 떠올랐다. 바로 'const'다. 현업에서 일해보기 전에 혼자 프로젝트 한다고 개발할 때는 'const'의 중요성을 몰랐다. 물론 입사 초기에도.. 쓰나 안 쓰나 프로그램은 잘 돌아가는데, 왜 여기 사람들은 'const'에 광적인 집착을 보일까 궁금했다. 그래서 알아보았던 const의 중요성 'const' 왜 중요한가? 같이 알아보자. 1. 'const'의 기본 개념 'const'는 변수를 상수로 선언하는 데 사용되며, 한 번 할당된 값이 변경되지 않도록 보장한다. 이를 통해 코드의 안정성과 가독성을 높일 수 있다. const int age = 30; // age = 31; // 오류 발생: 상수에 새로운 값 할.. 공감수 0 댓글수 0 2023. 7. 31.
  • 이슈 받았을 때 처음 이슈를 받았을 때 어디서부터 어떻게 해야 할 지 몰랐었다. 일단, 코딩 전에 완료 조건 체크를 한다. 이슈가 원하는 것이 뭔지, 어떤 식으로 예외 처리를 해야 하는 지, 작업 체크 리스트 만들기 그 후 이슈가 크다고 생각되면 쪼갠다. QA Guide Line을 먼저 작성하는 것을 추천한다. 핵심은 혼자서 고민하는 시간을 줄이고 적극적으로 질문하는 것 공감수 0 댓글수 0 2023. 7. 27.
  • 아마존의 글쓰기 https://channy.creation.net/blog/1620 아마존(Amazon)에서 배운 5가지 글쓰기와 소통 방식 :: Channy's Blog 차니 블로그(Channy Blog)는 웹기술, 오픈소스, 클라우드 컴퓨팅 등 다양한 IT 기술 주제에 대해 다루고 있습니다. channy.creation.net 1. 데이터를 기반으로 하는 명확한 문장 2. 구조화된 문단 구성 3. 똑같은 정보를 한 팀 미팅 4. 성과가 아닌 고객 중심 2x2 보고서 5. 예의바른 태도와 정중한 표현 공감수 0 댓글수 0 2023. 7. 23.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.