자바로 프로그램을 개발하다 public과 private 메서드를 어떻게 배치해야 좋은 구조인지 궁금해졌다. 구글 자바스타일 가이드에는 클래스 메서드 배치에 대해 다음과 같이 조언한다 The order you choose for the members and initializers of your class can have a great effect on learnability. However, there's no single correct recipe for how to do it; different classes may order their contents in different ways. What is important is that each class uses some logical order, whi..
분류 전체보기
StringBuilder에는 clear()메서드가 없다. List, Set, Queue와 같이 무언가를 담는 클래스에는 clear()가 있는데, 문자열을 담는 StringBuilder 에는 clear가 없어서 비우는 방법에 대해 찾아봤다. 1. sb = new StringBuilder() StringBuilder sb = new StringBuilder(); sb.append("a"); sb.append("b"); sb.append("c"); sb = new StringBuilder(); 비울 수 없다면 그냥 버리고 새로만들자! 하는 방법이다. 글쓴이는 항상 이 방법으로 StringBuilder를 초기화해줬다. 2. sb.setLength(0) - 가장 빠름 StringBuilder sb = new St..
자바에서 문자열을 나눌 때 사용할 수 있는 도구는 split과 StringTokenizer가 있다. 둘의 동작을 살펴보면서 사용할 때 유의점을 정리해보려고 한다. 동시에 둘의 차이점에 대해서도 알아보겠다! String.Split() String str = "123,45,234,456"; String[] splitArray = str.split(","); for (String s: splitArray) { System.out.println(s); } split은 특정문자를 기준으로 문자열을 나눠 String[] 배열을 반환합니다. 저는 이런식으로 구분자를 넣어서 사용해왔습니다. 메서드를 타고 들어가서 자세한 설명을 읽어봅시다 주어진 정규식(regex)과 일치하는 문자열을 기준으로 이 문자열을 분할합니다. ..
보호되어 있는 글입니다.
저는 우테코를 시작하기 전 매일 알고리즘문제를 풀고 있었습니다. 덕분에 우테코 1주차 과제를 받고, 기능 요구사항을 읽었을 때 제가 이전에 풀던 알고리즘문제와 다를 게 거의 없다는 걸 느꼈습니다. 오히려 조금 쉬운 편에 속했고, 어떤 식으로 풀어야할 지 바로 머릿속에 그려졌습니다. 어렵지 않게 미션을 수행할 수 있을 것 같다는 희망을 가지고 readme에 기능리스트를 완성한 후, 커밋하기 직전 멈칫했습니다. 커밋메시지를 이렇게 작성하는 게 맞는지 의문이 들었습니다. 자바컨벤션과 마찬가지로 커밋에도 컨벤션이 있다는 것을 들은 적이 있었기 때문에 커밋메시지를 찾아보았고, 제가 컨벤션을 지키지 않았다는 걸 알게되었습니다. 공부한 김에 제대로 공부하자는 생각에 블로그에 Angular commit메시지를 정리했습..
이전 글: 단위테스트란? https://fladi.tistory.com/361 단위테스트란? fladi.tistory.com 단위테스트를 해보기 위해 JUnit을 사용하려고 했는데, 이미 있는 테스트가 extends한 NsTest가 뭔지 궁금했다. JUnit과 비슷한 테스트 라이브러리인 것 같았다. 그래서 NsTest코드를 분석하고 테스트에 사용해보고자 하였다. import camp.nextstep.edu.missionutils.test.NsTest; 임포트문을 보니 nextstep에서 미션을 위한 테스트 유틸인 것 같다. https://edu.nextstep.camp/ 라는 곳에 들어가보니 다음과 같은 사이트가 나왔다 nextstep은 우테코와 비슷한 교육기관이었다. 이를 통해 우테코에서만 사용하는 테..
이번에 우테코 과제를 하면서 단위테스트라는 것을 해보고싶어 정리하게 되었다. 단위테스트 vs 통합테스트 단위테스트는 프로그램의 기본 단위인 모듈을 테스트하는 방법이다 (=모듈 테스트) 각 모듈이 제대로 구현되어있고, 정해진 기능을 정확히 수행하는지를 테스트한다. 함수단위로 기능을 테스트한다고 볼 수 있다 통합테스트는 프로그램 내의 구성요소들이 함께 작동하는 방식을 다룬다 구성요소들을 모았을 때 발생할 수 있는 문제를 식별한다 데이터베이스에 연결한다면, 컨트롤러부터 데이터베이스까지 다녀오는 통합적인 기능자체를 테스트한다 이전에 단위테스트를 바라보던 시각 글쓴이는 이전에 JUnit을 이용하여 스프링부트 테스트코드를 작성한 적이 있다. 그래서 mock, Assertion 등 단위테스트와 관련한 용어를 접했고,..
책 읽기 전 적는 글 이번에 친구가 "객체지향의 사실과 오해"라는 책을 같이 읽어보자고 했다.(친구야 고마워🐶🐶🐶) 지금까지 자바나 스프링으로 개발을 몇 번 해봤는데, 중복코드를 줄이거나 캡슐화하는 것 외에는 객체지향 설계를 해본 기억이 없었다. 소프트웨어 설계과목을 들을 때도 다형성이 가장 중요하다고 했지만, 다형성이 중요한 코드를 본 적이 없어서 그런지 와닿지 않았다. 이 도서가 유명하다는 건 알았지만 읽어볼 시도를 하지 않은 건 객체지향이 왜 중요한지 느끼지 못해서였던 것 같다. 이번 기회에 책을 읽으면서 객체지향이 왜 중요한지 알게되었으면 좋겠다. 01. 협력하는 객체들의 공동체 시너지를 생각하라. 전체는 부분의 합보다 크다 -스티븐 코드 이 장에서는 객체지향의 핵심개념인 역할, 책임, 협력을 강..
백준 2565 전깃줄 문제가 너무 안풀려 구글링을 하다 LIS 알고리즘을 접하게 되었다. 브루트포스든 datastructure든 dp든 계속 파고들면 새로 배워야할 알고리즘이 보이는 것 같다. (브루트포스->백트래킹, datastructure->union-find, dp->LIS...) 공부가 끝이없다! ㅎㅎ 최장 증가 부분 수열(LIS: Longest Increasing Subsequence) 알고리즘이란? 원소가 n개인 배열의 일부 원소를 골라내서 만든 부분 수열 중, 각 원소가 이전 원소보다 크다는 조건을 만족하는 최대길이의 부분수열을 구하는 문제다. 예를 들면 다음과 같은 수열이 있다 6 2 5 1 7 4 8 3 이 수열에서 최장증가 부분수열은 2578 이다. LIS 풀이법 LIS 문제를 푸는 방..
https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md 커밋 메시지를 잘 적는건 중요하다. 형식을 정해두고 커밋을 할 경우 더 읽기 쉽고 한 눈에 들어오게 된다. 위의 문서를 참고하여 커밋메시지 가이드라인에 대해 간단하게 정리해보려고 한다! 위에서는 개념을 정리하고, 밑에서는 다양한 예제를 보며 커밋메시지에 익숙해지려고 한다. 커밋메시지 구성요소 (): header는 필수이며, 헤더 내부의 scope는 선택사항 body가 있고 footer에는 issue에 대한 closing reference가 포함되어야 한다 간단한 예시 docs(changelog): update changelog to beta.5 fix(release): need to depe..