개발 공부128 클린코드 9장 - 단위 테스트 9장 - 단위 테스트 애자일과 TDD 덕분에 단위 테스트를 자동화하는 프로그래머들이 이미 많아졌으며 점점 늘어자는 추세이다. 하지만 테스트를 추가하려고 급하게 서두루는 와중에 많은 프로그래머들이 제대로 된 테스트 케이스를 작성해야 한다는 좀 더 미묘한 사실을 놓쳐버렸다. 1. TDD법칙 세 가지. 첫번째 법칙 : 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 두번째 법칙 : 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 세번째 법칙 : 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 위의 세 가지 규칙을 따르면 개발과 테스트가 대략 30초 주기로 묶인다. 테스트 코드가 실제 코드보다 불과 몇 초 전에 나온다. 이렇게 일하면 매일 수십 개,.. 2021. 11. 29. 클린코드 8장 - 경계 8장 - 경계 시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다. 어떤 식으로든 외부 코드를 우리 코드에 깔끔하게 통합해야만 한다. 1. 외부코드 사용하기. 인터페이스 제공자와 인터페이스 사용자 사이에는 특유의 긴장이 존재한다. 사용자는 자신의 요구에 집중하는 인터페이스르 바라지만 인터페이스 제공자는 적용성을 최대한 넓히려 애쓴다. 이러한 긴장으로 인해 시스템 경계에서 문제가 생길 소지가 많다. 그 예로 Java에서 제공하는 Map이 있다. 프로그램에서 Map을 만들어 여기저기 넘긴다고 가정해보자. 넘기는 쪽에서는 아무도 Map의 내용을 삭제하지 않으리라 믿을지도 모르지만 Map에서는 clear()라는 메서드를 제공한다. 즉, Map을 사용하는 누구나 Map의 내용을 지울 권한이 있다는 말.. 2021. 11. 25. 클린코드 7장 - 오류 처리 7장 - 오류 처리 오류 처리는 프로그램에 반드시 필요한 요소 중 하나일 뿐이다. 뭔가 잘못될 가능성은 늘 존재한다. 뭔가 잘못되면 바로 잡을 책임은 프로그래머 에게 있다. 깨끗한 코드와 오류 처리는 연관성이 있다. 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라 부르기 어렵다. 1. 오류 코드보다 예외를 사용하라. 예외를 지원하지 ㅇ낳는 언어는 오류를 처리하고 보고하는 방법이 제한적이었다. 오류 플래그를 설정하거나 호출자에게 오류 코드를 반환하는 방법이 전부였다. 이 방법들을 사용하게되면 호출자 코드가 함수를 호출한 즉시 오류를 확인해야하기 때문에 복잡해지게 된다. 때문에 오류가 발생하면 예외를 던지는 편이 낫다. 2. Try - Catch - Finally 문 부터 작성하라.. 2021. 11. 24. 클린코드 6장 - 객체와 자료구조 6장 - 객체와 자료구조 변수를 비공개(private)로 정의하는 이유는 남들이 변수에 의존하지 않게 만들고 싶기 때문이다. 하지만 왜 수많은 프로그래머들이 get 함수와 set 함수를 당연하게 공개(public)해 비공개 변수를 외부에 노출할까? 1. 자료 추상화. 다음 두 클래스는 모두 2차원 점을 표현한 클래스이다. 하나는 구현을 외부로 노출하고 다른 하나는 구현을 완전히 숨긴다. public class Point { public double x; public double y; }public interface Point { double getX(); double getY(); void setCartesian(double x, double y); }첫번째 클래스는개별절으로 좌표값을 읽고 설정하게 강제.. 2021. 11. 22. 클린코드 5장 - 형식 맞추기 5장 - 형식 맞추기 프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야한다. 코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 따라야한다. 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야한다. 1. 형식을 맞추는 목적. 코드 형식은 중요하다. 코드 형식은 의사소통의 일환이다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수와 확장성에 계속 영향을 미친다. 2. 적절한 행 길이를 유지하라. 500줄을 넘지 않고 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다. 일반적으로 작은 파일이 이해하기 쉽다. 신문 기사처럼 작성하라. 신문 기사를 떠올려보자. 독자는 위에서 아래로 기사.. 2021. 11. 17. 클린코드 4장 - 주석 4장 - 주석 잘 달린 주석은 그 어떤 정보보다 유용하다. 하지만 근거없는 주석은 코드를 이해하기 어렵게 만든다. 주석은 순수하게 선하지 못하다. 우리는 코드로 의도를 표현하지 못해 주석을 사용하게 된다. 프로그래밍 언어를 치밀하게 사용해 의도를 표현할 능력이 있다면 주석은 전혀 필요하지 않다. 주석은 오래될수록 코드에서 멀어진다. 주석을 관리하고 유지보수하기란 실질적으로 불가능하기 때문이다. 부정확한 주석은 아예 없는 주석보다 훨씬 더 나쁘다. 그러므로 우리는 주석을 가능한 줄이도록 꾸준히 노력해야한다. 1. 주석은 나쁜 코드를 보완하지 못한다. 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문 자신이 저지른 난장판을 주석으로 설명하느라 애쓰는 대신 난장판을 깨끗이 치우는데 시간을 보내라. 2... 2021. 11. 12. 클린코드 3장 - 함수 3장 - 함수 함수는 어떤 프로그램이든 가장 기본적인 단위가 된다. 함수를 읽기 쉽고 이해하기 쉽게 구현하는 방법에 대해 알아본다. 1. 작게 만들어라! 함수를 만드는 첫번째 규칙은 작게이다. 두번째 규칙은 더 작게 이다. 함수는 가로 150 글자를 넘어서는 안된다. 세로로 100줄을 넘어서는 안된다. 사실 20줄의 함수도 길다. if, if/else, while 문 등에 들어가는 블록은 한줄이어야 한다. 함수에서 들여쓰기 수준은 1단이나 2단을 넘어서는 안된다. 2. 한가지만 해라! 함수는 한가지를 해야한다. 그 한가지를 잘 해야한다. 그 한 가지만을 해야한다. 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한가지 작업만 한다고 한다. 의미있는 이름으로 함수를 추출할 수 .. 2021. 11. 11. 클린코드 2장 - 의미있는 이름 2장 의미있는 이름 우리는 개발을 하면서 여러 파일, 폴더, 패키지 등등에 이름을 붙이는 일을 많이 하게된다. 이름을 잘 지으면 여러가지로 장점이 많은데 이번 장에서는 이름을 잘 짓는 규칙 몇가지를 소개한다. 1. 의도를 분명히 밝혀라 의도가 분명한 이름은 정말 중요하다. 변수나 함수, 클래스들의 이름은 다음의 굵직한 질문에 모두 답해야한다. 변수나 함수, 클래스들의 존재 이유는? 수행하는 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. int d; // 경과 시간보다는 int elapsedTimeDays;가 좀 더 의도가 정확히 드러나는 이름이다. 2. 그릇된 정보는 피하라 프로그래머는 코드에 그릇된 정보를 남겨서는 안된다. 특히 소문자 L 이나 대문자 O 같이 .. 2021. 10. 25. 알고리즘 - 그리디 알고리즘 이번 포스트에서는 그리디 알고리즘에 대해 알아보겠습니다. 해당 내용은 나동빈 님이 집필하신 이것이 취업을 위한 코딩테스트다 with 파이썬 을 보며 공부한 내용을 토대로 작성하였습니다. 그리디 알고리즘 그리디 알고리즘이란 국내에서 흔히 탐욕법으로도 소개되곤 합니다. 이 알고리즘은 말 그대로 단순하게 탐욕적으로 문제를 해결하는 하나의 방식을 말합니다. 매 순간 가장 최선의 선택을 하여 문제를 푸는 알고리즘이기 때문에 정렬 알고리즘과 짝을 이뤄서 출제가 되는 경향이 있습니다. 그리디 알고리즘 문제는 다른 알고리즘과 비교했을 때 사전에 외우고 있지 않아도 문제를 해결할 수 있는 가능성 이 높습니다. 하지만 그리디 알고리즘 문제의 유형의 폭이 굉장히 넓기 때문에 모든 문제를 숙련도 없이 접근해서 해결하기는 어렵.. 2021. 7. 21. 알고리즘 공부 - 준비하기 알고리즘 공부시작하기 코딩 테스트는 예전부터 항상 뜨거운 감자였다. 요즘 핫하다는 IT계열 회사의 입사 전형에 빠지지 않고 등장하는게 바로 코딩테스트이다. 어느 순간부터 좋은 회사, 흔히 마라는 네카라쿠배 급의 회사를 입사하려면 코딩테스트는 필수가 되었다. 코딩 테스트에도 종류가 갈리는데 크게 개발형 코딩테스트 알고리즘 문제 풀이형 코딩 테스트 이 두가지로 분류된다. 나는 여기서 알고리즘 문제 풀이형 코딩 테스트에 대비해 알고리즘 공부를 시작하고, 블로그를 통해 공부한 내용을 정리하려고 한다. 내가 현재 공부하고 있는 책은 나동빈님께서 서술하신 이것이 취업을 위한 코딩테스트다 라는 책이다. 책을 읽고 배운 내용을 정리하고 문제를 풀며 알고리즘에 대한 자신감이 쌓이길 기대하는 중이다. 알고리즘 코딩테스트는.. 2021. 5. 24. Nuxt.js 에서 Vue Store 모듈 나누기 최근 개인 프로젝트 진행 중 Nuxt에서 Vue Store를 모듈로 나누기 위해 많은 자료를 찾아봤지만 안타깝게도 공식 문서에서는 자세히 정리가 안되있었습니다. 수많은 자료찾기, 다른 사람들의 프로젝트 참고하기 등을 통해 알게된 Nuxt에서 Vue Store를 모듈로 나누기에 대해서 알아보겠습니다. 들어가기 전에 지극히 저의 개인적인 방식이며 더 좋은 방법, 옳은 방법이 있다면 댓글 달아주시면 감사하겠습니다. 1. 모듈로 나누는 이유 먼저, 왜 store를 모듈로 나누어야 하는지 알아보겠습니다. export const state = () => ({ list: [] }) export const mutations = { add(state, text) { state.list.push({ text, done: .. 2020. 11. 9. 개발자 포트폴리오 만들기 - Notion 포트폴리오 만들기 - Notion Notion에서 개인에게는 무료로 서비스를 이용해준다는 말을 듣고 포트폴리오를 Notion으로 만들어야겠다는 생각을 하게되었습니다. Notion이란 메모, 문서, 프로젝트관리 등을 통합한 메모서비스 입니다. 노션은 많은 장점이 있지만 그중에서도 깔끔하고, 이쁘게 문서 정리를 할 수 있다는 점이 가장 눈에 띄었습니다. 저는 디자인에는 잼병이기 때문에..ㅎㅎ 노션의 가격 정책입니다. 물론 저는 무료버전을 이용할겁니다. 가입하기 노션을 시작하려면 먼저 가입을 해야합니다. 가입을 진행하고나면 위와같은 화면이 나옵니다. 이제 본격적으로 포트폴리오를 꾸며보도록 하겠습니다. 노션 사용하기 이제 본격적으로 포트폴리오를 만들기위해 간단하게 노션 사용법을 알아보겠습니다. 먼저 포트폴리오로.. 2020. 10. 29. 이전 1 ··· 5 6 7 8 9 10 11 다음