본문 바로가기

개발

클린코드 5장 - 형식 맞추기 뚜껑을 열었을 때 독자들이 코드가 깔끔하고, 일관적이며, 꼼꼼하다고 감탄하면 좋겠다. 질서 정연하다고 탄복하면 좋겠다. 프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다. 코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다. 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다. 필요하다면 규칙을 자동으로 적용하는 도구를 활용한다. 형식을 맞추는 목적 코드 형식은 중요하다! 코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 원래 코드는 사라질지라도 개발.. 더보기
클린코드 4장 - 주석 나쁜 코드에 주석을 달지 마라. 새로 짜라. - 브라이언 W. 커니핸, P.J. 플라우거 잘 달린 주석은 그 어떤 정보보다 유용하다. 경솔하고 근거 없는 주석은 코드를 이해하기 어렵게 만든다. 오래되고 조잡한 주석은 거짓과 잘못된 정보를 퍼뜨려 해악을 미친다. 주석은 '순수하게 선하지' 못하다. 기껏해야 필요악이다. 우리는 코드로 의도를 표현하지 못해, 실패를 만회하기 위해 주석을 사용한다. 때때로 주석 없이는 자신을 표현할 방법을 찾지 못해 할 수 없이 주석을 사용한다. 그러므로 주석이 필요한 상황에 처하면 곰곰이 생각하기 바란다. 상황을 역전해 코드로 의도를 표현할 방법은 없을까? 주석을 무시하는 이유는, 거짓말을 해서다. 항상도 아니고 고의도 아니지만 너무 자주 거짓말을 하니까. 주석은 오래될수록 .. 더보기
클린코드 3장 - 함수 이전의 프로그래밍에서는 시스템이 루틴, 하위루틴, 혹은 포트란과 PL/1 시절에는 프로그램, 하위 프로그램, 함수로 나눴다. 결국 지금은 함수만 살아남았다. 어떤 프로그램이든 가장 기본적인 단위가 함수가 되었다. 이 장은 함수를 만드는 법을 소개한다. 이 책에서 보여주고있는 목록3-1 코드는, 길이가 길고, 중복된 코드에, 괴상한 문자열에, 낯설고 모호한 자료 유형과 API로 이루어져 있다. 이러한 코드를 3-2에서는 리팩토링하여서 보여주고 있다. 이로써 목록 3-1에서는 파악하기 어려웠던 정보가 목록 3-2에서는 쉽게 드러난다. 그렇다면 목록 3-2 함수가 읽기 쉽고 이해하기 쉬운 이유는 무엇일까? 의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까? 함수에 어떤 속성을 부여해야 처음 읽는 사람이 .. 더보기
클린코드 2장 - 의미 있는 이름 들어가면서 이름을 잘 짓는 간단한 규칙을 몇 가지 소개한다 의도를 분명히 밝혀라 의도가 분명한 이름이 정말로 중요하다는 사실을 거듭 강조한다. 이름을 주의 깊게 살펴 더 나은 이름이 떠오르면 개선하기 바란다. 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. int d; // 경과 시간 (단위 : 날짜 ) 경과 시간이나 날짜라는 느낌이 안 든다. int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; 위와 같이 의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다. public List getThem() .. 더보기
클린코드 1장 - 깨끗한 코드 코드가 존재하리라 코드는 사라지지 않는다. 코드를 자동으로 생성하는 시대가 오더라도, 고도로 추상화된 언어나 특정 응용 분야 언어로 기술하는 '명세' 역시 코드니까. 궁극적으로 코드는 요구사항을 표현하는 언어라는 사실을 명심하자. 나쁜 코드 우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모두는 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 나중은 결코 오지 않는다 나쁜 코드로 치르는 대가 나쁜 코드는 개발 속도를 크게 떨어뜨린다. 초반에는 번개처럼 나가다가, 1-2년만에 굼뱅이처럼 기어가는 팀도 많다. 시간을 들여 깨끗한 .. 더보기
클린코드 정리를 시작하며.. 최근에, 회사에서 스터디를 시작했다. 더 좋은 개발자가 되기 위한 한 걸음. 우선 클린코드를 스터디하기로 하였다. 거의 개발자들의 필독서로 불리우는, 클린코드. 몇번 읽다가 중도하차했었는데, 이번에는 제대로 읽어보는 기회가 될 것 같다. 블로그에, 기록을 위하여 정리를 하려고한다. 남들처럼, 상세하게 정리를 하기보다, 날 것으로 느낀바를 그대로 적어가며 정리해보려한다. 블로그의 최우선의 독자는 스스로니까. 더보기
우분투 18.04 LTS 방화벽 설정하기 - UFW로 방화벽 설정 우분투를 이용하여 node.js 서버를 사용하려고했는데, 8000번 포트가 막혀있어서 접속이 안되었다. 그래서 UFW로 포트를 열어주려고 한다. ufw allow 8000 ufw allow 80 ufw allow 443 ufw allow 6000:6007/tcp ufw allow 6000:6007/udp 위와 같은 명령어들을 이용하여 특정 포트 혹은 범위의 방화벽을 해제할 수 있다. 더보기
우분투18 node.js 10 설치 이번에 프로젝트를 우분투 18 LTS와 node.js를 이용하여 작업하기로 결정하였다. 우분투 18에서 node.js를 설치하는 명령어는 아래와 같다. 이때 curl이 되어있어야한다. 만약에 설치되어있지 않다면 apt install curl을 이용하여 설치해주자. curl -sL https://deb.nodesource.com/setup_10.x | sudo bash - apt install nodejs 위와 같이 node와 npm의 버전을 확인할 수 있다. 더보기