1. Unit testing의 장점 Unit test의 필요성은 의심의 여지가 없다. 장점이 너무 많기 때문이다. (1)간결하게 말하자면, 유닛 테스트는 빠르게 문제가 발생한 것을 확인할 수 있고, 빠르게 고칠수 있다. 버그를 찾는데 더 적은 자원이 소비되기 때문에, 팀은 프로젝트의 다음 단계로 옮겨갈 수 있다. 유닛 테스트를 작성하면, 소프트웨어 건설 단계에서 많은 버그가 발견되기 때문에 다음 단계로 버그가 이동하는 것을 막아준다. 결과적으로 많은 시간과 자원을 아낄 수 있는 것이다. (2) 또한, 유닛 테스트는 프로덕트의 살아있는 documentation이다. 유닛 테스트는 적절/부적절한 소프트웨어 컴포넌트의 사용 정보를 가지고 있는 지표이기 때문에, 이려한 지표를 통해 완벽한 documentatio..
1. Upstream과 Downstream 이때까지 모호하게만 알고 있던 개념을 확실하게 짚고 가고 싶었다. upstream, origin에 대한 정확한 것이 무엇일까? 아래 그림을 참고하자. upstream이 있으면 downstream이 있다. 영어로 상류, 하류라는 뜻이다. git에서 이러한 용어들을 이용하는 이유는 관계를 잘 표현해 주기 위한 것이다. 이것은 흐름을 나타내기 위한 상대적인 개념이다. git에서도 remote upstream, remote origin, local 로 점점 내려온다. fork한 저장소에서 나의 remote 저장소에서 나의 local 저장소인 컴퓨터로 내려온다. 이 관계를 표현해 주기 위해서 강의 상류와 하류를 표현하는 upstream과 downstream의 개념을 도입..
G1:한 소스파일에 여러 언어를 사용한다 이상적으로는 소스 파일 하나에 언어 하나만 사용하는 방식이 가장 좋다. 현실적으로는 여러 언어가 불가피하지만 각별한 노력을 기울여 소스파일에서 언어 수와 범위를 최대한 줄이도록 애써야 한다. G2: 당연한 동작을 구현하지 않는다 최소 놀람의 원칙에 의거해 함수나 클래스는 다른 프로그래머가 당연하게 여길 만한 동작과 기능을 제공해야 한다. 당연한 동작을 구현하지 않으면 코드를 읽거나 사용하는 사람이 더 이상 함수 이름만으로 함수 기능을 직관적으로 예상하기 어렵다. G3: 경계를 올바로 처리하지 않는다 코드는 올바로 동작해야 한다. 스스로의 직관에 의존하지 마라. 모든 경계 조건을 찾아내고, 모든 경계 조건을 테스트하는 테스트 케이스를 작성하라. G4: 안전 절차 무..
아래 글은 로버트 C. 마틴의 Clean Code라는 책을 읽고 스스로 정리하며 학습한 목록입니다. 특히 우아한 테크코스 - 프리코스 1 주차를 진행하며 학습이 필요하다 스스로 판단한 부분을 집중적으로 다루었습니다. 1. 깨끗한 코드 나쁘 코드로 치르는 대가 나쁜 코드는 개발 속도를 크게 떨어뜨린다. 나쁜 코드가 쌓일수록 팀 생산성은 떨어진다. 기한을 맞추려면 나쁜 코드를 양산할 수밖에 없다고 느끼지만 실제로는 나쁜 코드를 양산하면 기한을 맞추지 못한다. 오히려 엉망진창인 상태로 인해 속도가 곧바로 늦어지고 결국 기한을 놓친다. 기한을 맞추는 유일한 방법은, 빨리 가는 유일한 방법은 언제나 코드를 최대한 깨끗하게 유지하는 습관이다. 비야네: 깨끗한 코드 == 보기에 즐거운 코드. == 세세한 사항까지 꼼..
1. 질문하기 전에 해야 할 것들 5 why 원칙에 따라 생각해보기. 더보기 5 why란 말그대로 5번의 왜 그랬는지 이유를 생각해 보는 것이다. 도대체 왜 이런 문제가 생겨났는지 곰곰이 세 번 정도 생각해보고 시도를 해보기 (50 퍼 정도 해결이 된다.) 질문에 시도를 포함시키기. 2. 그래도 해결이 안되면 충분한 구글링을 해보자 내가 모르는 것은 남들도 모르고 내가 실수하는 것은 남도 한다. 원하는 답이 없다고 여러 페이지를 뒤지지 않는다. 거기 답이 없으면 키워드를 바꾸자. 대부분 답은 stackoverflow가 알려준다. 3. 그래도 해결이 안되면 질문을 하자 (1) 제목을 잘 짓기 [질문 -미해결] or [질문 - 해결됨] 같이 질문의 status를 추가하자. 제목이 잘 떠오르지 않을 때는 본문..
Git 커밋 메시지 컨벤션을 찾아보면서 다양한 커밋 메시지 컨벤션이 존재하는 것을 알았다. 그래서 검증되지 않은 블로그나 사이트를 참고 하지 않으려 했다. 특히 어디에서는 제목 첫 글자는 대문자 사용하지 말라하며 어느 곳에서는 대문자를 사용하라고 한다. 그러니 그냥 속한 팀의 convention을 따르는 것이 1순위인 것 같다. 나는 ConventionalCommits.org라는 152명의 contributer로 이루어진 곳을 참고했으며, NHN Meetup!에 있는 글을 참고하였다. 1. git 커밋 메시지를 잘 쓰려고 노력해야 하는 이유 - 커밋 로그 가독성을 높인다. - 더 나은 협업과 리뷰 프로세스 - 더 쉬운 코드 유지보수 git log을 통해 여러 커밋 메시지를 확인하면 과거 어떤 코드를 변경..
Junit5의 기본적인 메소드들을 학습하는데, assertIterableEquals과 assertLinesMatch의 차이점이 궁금하였다. 먼저 Junit5 공식 문서를 통해 assertIterableEquals과 assertLinesMatch은 다음과 같음을 확인할 수 있었다. (1) assertIterableEquals() assertIterableEquals(Iterable expected, Iterable actual) Asserts that expected and actual iterables are deeply equal. 두 객체 Iterable(Iterable 인터페이스를 구현한 클래스)가 deeply equal한지 (내용 비교) 비교하는 것이다. 이때 두 iterable은 같은 순서로 동..
1. Graph - graph is simply a set of values that are related in a pair wise fashion. - Node(=Vertex)와 Edges(간선)로 이루어짐. - great data structure to model real world relationships. - LinkedList는 Tree의 일종이고, Tree는 Graph의 일종이다. (Tree는 directed graph) - self-edge라고 node가 자기 자신을 가리키는 경우가 있을 수 있다. 2. Graph의 종류들 (1) directed : 방향성이 있음. 일방통행 (2) undirected : 방향성이 없음. 양방향 통행 (1) weighted : 가중치 그래프 (2) unweig..
- Total
- Today
- Yesterday