첫번째 카탈로그인 6장에는 가장 기본적이고 많이 사용하는 리팩터링들로 구성되어 있다. 가장 많이 사용하는 리팩터링 6.1 함수 추출하기 6.3 변수 추출하기 반대로 진행하는 리팩터링 6.2 함수 인라인하기 6.4 변수 인라인하기 함수와 변수 최적화 6.5 함수 선언 바꾸기 6.6 변수 캡슐화하기 6.7 변수 이름 바꾸기 6.8 매개변수 객체 만들기 함수를 고수준 모듈로 묶기 6.9 여러 함수를 클래스로 묶기 6.10 여러 함수를 변환 함수로 묶기 모듈의 처리 과정을 명확한 단계로 구분 짓기 6.11 단계 쪼개기 6.1 함수 추출하기 (Extract Function) 개요 가장 많이 사용하는 리팩터링 코드가 하는일을 파악한 다음, 함수로 추출하고 목적에 맞는 이름 붙이는 작업이다 적용 시점 코드가 무슨 일..
Ruby is.. (루비란) 단순성과 생산성에 중점을 둔 동적 프로그래밍 언어로 오픈소스 기반입니다. 루비는 읽고 쓰기 쉬운 우아한 구문을 가지고 있습니다. Seeing Everything as an Object (모든 것은 객체) 루비에서는 모든 것이 객체입니다. 루비의 순수 객체지향 접근법은 아래의 예제처럼 숫자에 액션을 취하는 코드로 대표되곤 합니다. 5.times { print "We *love* Ruby -- it's outrageous!" } 많은 언어에서 숫자는 원시 타입이지 객체는 아닙니다. 하지만 루비는 모든 것이 일관되게 객체이므로 쉽게 사용할 수 있습니다. Ruby’s Flexibility (루비의 유연함) 개발자가 루비의 어떤 부분이든 자유롭게 바꿀 수 있기 때문에 매우 유연한 언어..
문제를 진단하기 위해 코드를 고쳤을 때 아무런 효과가 없다면 원했던 부분을 고친 게 아니다. 혹시 고친 파일이 아닌 다른 파일을 컴파일 하는건 아닌지? 컴파일을 제대로 해놓곤 다른 바이너리를 실행하는건 아닌지? 고친 코드가 프리프로세서 때문에 비활성화돼 있는건 아닌지? 브라우저가 개발 서버가 아닌 제품 서버에 접속하는 건 아닌지? 이런 함정은 너무 흔하고 햇갈려서 빠지기 쉽다. 항상 마음 한구석에 함정에 대한 가능성을 염두에 두는 것 외에는 다른 방도가 없다. 함정에 빠진 것을 알 수 있는 가장 쉬운 방법은 코드에 일부러 명확한 실패 코드를 추가하는 것이다. 명백한 에러 문법을 추가하거나 System.exit() 를 호출하는 방법도 있다. 이렇게 해도 컴파일이 잘 되고 프로그램도 죽지 않고 실행된다면 내..
버그 버그는 게이머나 프로그래머들 사이에는 익숙한 용어로 프로그램 또는 시스템의 오류 또는 오작동을 의미한다. 이는 1945년 9월 9일 Mark.II 컴퓨터의 회로에 나방이 들어가 합선을 일으킨 것을 코볼의 발명자인 그레이스 호퍼가 발견한 것에서 유래됐다고 한다. 이런 버그들을 제거하는 행위를 디버깅(debuggig)이라고 부르며 디버깅을 도와주는 도구를 디버거(debugger)라고 부른다. 소프트웨어공학 관점에서 증상 및 발생원인에 따라 결함, 오류, 버그 등을 명확히 분리하기도 하지만 실제 프로그램을 작성하는 개발자 관점에서는 모든 의도하지 않은 동작을 통틀어서 버그라고 부르기도 한다. 버그와 스펙 간혹 버그 리포팅을 받아보면 버그와 스펙(요구사항명세)을 구분하지 못한 경우가 많다. 기존에 작성된 ..
DB 에서 FK 를 사용하고 있는 경우 외래키 의존성으로 인해 테이블을 truncate 하기가 쉽지 않습니다. 아래는 의존성을 무시하고 모든 테이블을 truncate 할때 사용하는 방법입니다. 외래키 검사 옵션을 해제합니다. SET foreign_key_checks=0; DB의 전체 테이블에 대한 truncate 문을 만든 후 실행합니다. SELECT Concat('TRUNCATE TABLE ', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'db_name' AND table_type = 'BASE TABLE'; -- 위 쿼리로 생성한 TRUNCATE 문 실행 TRUNCATE TABLE member; TRUNCATE TABLE..
복잡한 정규식이라고 썼지만 별로 어렵지 않다. 찾고 싶은 정규식의 앞뒤로 오거나 오지말아야 하는 조건을 추가하는 방법이다. 아래 4가지 방식만 기억하고 있다가 필요할 때 찾아쓰면 된다. X(?=Y) : X 다음에 Y 가 오는 경우 (Positive Lookahead) X(?!Y) : X 다음에 Y 가 오지 않는 경우 (Negative Lookahead) (? Positive 의 경우 단순히 XY 로 정규식을 만들어도 동일하게 검색할 수 있는데 굳이 사용하는 이유는 무엇일까? 캡쳐(추출)할 수 있는 데이터의 차이가 있기 때문이다. 즉, 앞뒤로 오는 조건을 제외하고 문자열을 추출이 가능하다. 이는 주로 검색할 문자열과 replace 시킬 문자열이 다를때 사용된다. 위 기준으로 Lookahead 를 사용할때 ..
프레임워크는 왜 만들어졌고 왜 중요할까? 한국에서는 왜 전자정부 표준프레임워크를 도입했을까? 핵심은 일관되고 검증된 아키텍처를 보장하여 개발 속도를 높이기 위함이다. 프레임워크를 사용하는 이유 1. 빠른 구현 시간 프레임워크를 사용하면 아키텍처에 해당하는 골격 코드를 프레임워크에서 제공한다. 따라서 개발자는 비즈니스 로직만 구현하면 되므로 제한된 시간에 많은 기능을 구현할 수 있다. 2. 쉬운 관리 같은 프레임워크 적용된 애플리케이션들은 아키텍처가 같으므로 관리하기가 쉽다. 결과적으로 유지보수에 들어가는 인력과 시간도 줄일 수 있다. (인수인계도 용이함) 3. 개발자들의 역량 획일화 숙련된 개발자와 초급 개발자는 지식과 경험이 다르므로 두 개발자가 만든 소소의 품질은 당연히 다를 수밖에 없다. 하지만 프..
훌륭한 소프트웨어를 생산하는데 가장 중요한 요소가 팀워크(협업)이라는 사실은 누구나 알고 있다. 관련해서 예전에 읽었던 협업의 기술 이라는 책의 내용을 다시금 보게 됐다. 요즘엔 더 좋은책들이 많지만 그 당시에는 이런 소프트스킬에 대해 다루는 책이 흔하지 않아 신선하게 봤던 것 같다. 최근에는 더 좋은 책이 많아 추천하지는 않지만 여기서 나온 세가지 키워드는 협업 뿐만 아니라 개인적인 성장을 위해서도 필수적인 소양이라고 생각되어 잊지 않도록 다시 정리해본다. 어떻게 하면 훌륭한 팀을 구축할(또는 찾아낼) 수 있을까? 분명 쉬운 일은 아니다. 협업에 대한 해탈의 경지에 이르려면, 우선 우리가 '세 개의 기둥' 이라고 부르는 사회학적 기술을 학습할 필요가 있다. 이 세 가지 요소는 사람 간의 관계에서 단지 ..
- Total
- Today
- Yesterday
- aws fargate
- 리팩터링이란
- 매개변수화
- 조건부 로직
- 리팩토링
- HTTP
- SSL
- 코드악취
- 변경함수
- 위임
- 질의함수
- amazon vpc
- 디버깅
- 지시의 언어
- 일 잘하는 사람은 단순하게 말합니다
- Debug
- https
- 제어플래그
- amazon aurora
- 그림으로 배우는 HTTP & Network
- 마틴파울러
- 그림으로 공부하는 IT 인프라 구조
- Refactoring
- AWS
- 일잘러
- 코드스멜
- 안심 첫 문장
- Debugging
- 박소연
- Debug It! 실용주의 디버깅
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |