본문 바로가기

전체 글

(189)
클린코드 6장 자료와 객체구조 변수를 비공개private로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 충동이든 변덕이든, 변수 타입이나 구현을 맘대로 바꾸고 싶어서다. 그렇다면 어째서 수많은 프로그래머가 조회get 함수와 설정set 함수를 당연하게 공개public해 비공개 변수를 외부에 노출할까?자료 추상화 목록 6-1 구체적인 Point 클래스public class Point { public double x; public double y;} 목록 6-2 추상적인 Point 클래스public interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double get..
클린코드 5장 형식맞추기 코드 형식 맞추기, 다른 말로 코딩 컨벤션이라 할 수 있다.형식을 맞추는 목적은, 앞으로 기능이 계속 바뀌어도, 처음 잡아놓은 가독성과 스타일은, 유지보수 용이성과 확장성에 계속 영향을 미치기 때문이다. 1. 적절한 행 길이세로 길이부터 적절히 유지하자.평균 65줄, 보통 200줄, 500줄이 넘으면 읽기가 힘들다. 실제로 본인 업무 프로젝트의 소스코드중 4~5000줄 그 이상 10000줄까지 넘어가 파일을 열 때 오랜 로딩과, 수정 시의 압박을 느끼게 되는 쿼리 파일이 있다. 이런 짓은 하지말자.. 2. 개념 단위는 빈 행으로 구분하자.우리는 소스를 글을 읽듯이 위에서 아래로, 왼쪽에서 오른쪽으로 읽느다.하나의 완결된 생각 사이에는 빈 행을 넣어 분리해야 마땅하다. 3. 세로 밀집도.서로 밀접한 연관을..
linux bash alias 설정법 본인 홈디렉토리에 .bash_aliases로 파일 만들고 아래 내용 등 넣으면 됩니다. alias logs='cd /data/pg-logs' alias bld='cd /data/pg-svc/bld_dev' alias bldup='cd /data/pg-svc/bld_dev/ && ./bld_dev.sh start' alias bldre='cd /data/pg-svc/bld_dev/ && ./bld_dev.sh restart' alias blddn='cd /data/pg-svc/bld_dev/ && ./bld_dev.sh stop' alias bldvlog='vi /data/pg-logs/bld_dev/minglepay_bld.log' alias bldtlog='tail -f /data/pg-logs/bld..
클린코드 4장 주석 주석은 쓰지 않는 것이 좋다. 주석이 오래되면 코드와 달라질 수 있고, 모든 주석을 관리할 수는 없다. 주석이 없어도 한 눈에 알아볼 수 있는 소스를 작성하는 것이 좋다. // 직원에게 복지 혜택을 받을 수 있는지 검사한다. if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) vs if employee.isEligibleForFullBenefits()) 몇초만 더 생각하면 코드로 대다수 의도를 표현할 수 있다. 그럼에도 주석이 필요한 경우들이 있다. 1. 법적인 주석 : 각 소스 파일 첫 머리에 주석으로 들어가는 저작권 정보와 소유권 정보는 필요하고도 타당하다. 2. 정보를 제공하는 주석 : 기본적인 정보를 제공하는 주석은 편리할 수 있다. 3. 의도..
vim 추천설정 ~/.vimrc 파일 만들고 아래 내용 넣으면 좀 컬러풀한 vi 사용 가능 syntax enable syntax on filetype on set autoindent set background=dark set cindent set history=100 set hlsearch set number set paste! set shiftwidth=4 set showmatch set statusline=%h%F%m%r%=[%l:%c(%p%%)] set smartindent set tabstop=4 set textwidth=80 set title set ruler colo koehler highlight Comment term=bold cterm=bold
클린코드 3-2 함수 서술적인 이름을 사용하라 많은 개발자들이 자기 마음대로 줄임말을 사용하고 있다. 카드코드를 어떤 회사에서는 CC라 사용하고있고, 어떤 회사에서는 취소를 CC로 사용하고있다. 나는 규약된 데이터 카탈로그, 스키마가 있는게 아닌 이상 줄임말을 지양하고 있다. 길고 서술적인 이름이 짧고 어려운 이름과 긴 주석보다 좋다. 나는 여러 단어를 사용해 함수 기능을 잘 표현할 수 있는 서술적인 이름을 채택한다. 서술적인 이름을 사용하면 머릿속에서도 설계가 뚜렷해져 코드를 개선하기 쉬워진다. 대신 앞서 설명한것 처럼 일관성이 있어야 한다. 같은 동사, 명사, 문구를 사용하도록 하자. 거래는 Transaction이 될 수 있고 Trade가 될 수 있고, 조회는 select, search, inquiry 등등 다양한 표기가..
클린코드 3장 함수 함수는 가능한 작게 만드는 것이다. if, else, for 등의 블록은 중첩 구조를 최소화 하여야 한다. 그러므로 함수에서 들여쓰기 수준은 1단이나 2단을 넘기면 안된다. 그래야 코드를 읽고 이해하기 쉬워진다. 이를 위 여러가지 디자인 패턴들 또한 고려할 수 있다.(AOP, ExceptionHandler, Proxy...) 물리적으로 작게 만든다는 것 뿐만 아니라 꼭 필요한 기능 한 가지만 한다는 뜻이다. (그 한 가지를 잘해야한다.) 여기서 오해하지 말아야 할 중요한 내용이 있다. 우리는 한 메소드 안에 테이블을 조회하고, 경로를 렌더링하고, 문자열을 덧붙이고, HTML을 생성하는 등 여러가지를 처리하는 메소드를 만들어왔다. 이는 여러가지 기능을 하고 있지만 추상화 수준으로 보면 결국 '페이지를 렌더..
클린코드 2장 의미 있는 이름 소프트웨어에서 변수, 메소드, 클래스, 파일 및 패키지 명까지 모든 곳에는 이름을 붙여야한다. 이름이 무슨 기능을 하나 대충 지을 수 있다 생각하지만 깔끔한 코드에는 명확하고 규칙적인 네이밍이 필수다. 누가 읽어도 이해할 수 있는 코드가 좋은코드이다. 난독화가 목적이 아닌 이상, 의도가 분명한, 누가 읽어도 무슨 역할을 하는지 이해할 수 있도록 작명하여야 한다. 오해할 수 있는 여지가 있는 네이밍은 피해야한다. 추가로 소문자 l과 대문자 O는 1과 0 그리고 대문자 I와 구분하기 어려우므로 이러한 문자들도 피하자. 이 또한 중요한데, 값을 하드코딩하는 것을 포함하여 값의 정보로 변수를 표기하면 검색 시 불편함이 있다. 그러므로 목적에 맞는 네이밍으로 검색을 쉽게 하자. 한 가지 예시로 이벤트나 익셉션을 ..