-
개념원리 - (1) 자바 & 객체지향_주요 개념과 특징개발/Java 2018. 2. 13. 13:56
지금 와서 돌이켜보니 처음 자바와 함께 객체지향언어를 접했을 때는 혼란 속에서 살았던 것 같다.객체의 선언과 초기화라는 개념도 제대로 안 잡혀 있었고,객체와 클래스, 인스턴스도 정확히 구분하지 못하고 마구잡이로 써댔다. (사실 지금도 조금...)그래서 오늘은 초심으로 돌아갈 겸, 부장님과 이사님이 외근나가신 틈을 타서 아주 기본적인 개념을 정리한다... 학원에서 시험을 볼 때 자바 언어의 특징, 객체지향언어의 특징을 각각 묻는 문제가 있었다.강사님은 채점을 끝낸 시험지를 나눠주며 자바의 특징과 객체지향의 특징을 헷갈려하는 사람들이 왜이렇게 많냐고 핀잔을 주셨다ㅜㅜ 어느 정도 개념에 익숙해진 상태에서야 저 둘을 헷갈린다는게 말도 안된다 싶지만그때는 난생 처음 코딩을 배우면서 '자바 언어 = 객체지향언어' ..
-
리팩토링 / 마틴 파울러 - (4) Chapter 03. 코드의 구린내개발/자습중 2018. 2. 13. 10:13
세번째 챕터에서는 어떤 코드가 리팩토링을 해야 하는 '구린내 나는' 코드인지 설명한다. 저자의 말대로 세번째 챕터를 읽자마자 그래! 바로 요 줄부터 저 줄까지 리팩토링을 하면 되겠군!! 할 수 있는 건 아니고대충 이런 느낌이 올 때 리팩토링을 쓸 수도 있겠다 정도의 감은 잡을 수 있다. 아직 경험이 부족해서 그런지 깔끔하게 요약해서 정리하기 어려웠다. 이번 챕터만큼은 한번 읽고 넘어가는 수준에서 정리한다. 저자가 말하는 구린내 목록은 아래와 같다. 1. 중복코드 - 똑같은 코드 구조가 두 군데 이상 있을 때는 그 부분을 하나로 통일 시 프로그램 개선 가능 2. 장황한 메소드 - 메소드에서 하나로 묶으면 좋을 만한 부분들을 찾아내어 메소드로 만들어줌 3. 방대한 클래스 - 기능이 지나치게 많은 클래스 4...
-
리팩토링 / 마틴 파울러 - (3) Chapter 02. 리팩토링 개론개발/자습중 2018. 2. 12. 13:45
두번째 챕터는 본격적으로 리팩토링에 대한 개념을 잡는 시간이다. 리팩토링은 단순히 코드 정리 작업을 의미하지 않는다.리팩토링의 핵심은 소프트웨어를 더 이해하기 쉽게, 수정하기 쉽게 만드는 것이므로 코드 정리 작업보다는 좀 더 광범위한 개념이 될 것이다.또한 기능을 개선하기 위한 작업이 아니므로 리팩토링 전후의 소프트웨어 기능은 변하지 않는다. 따라서 리팩토링은 '성능 최적화'와 상반되는 개념이라고 할 수 있다. 왜냐하면 성능 최적화를 수행할 경우, 필요한 성능을 얻기 위해 어쩔 수 없이 코드가 더 복잡해질 수 있기 때문이다. 리팩토링을 하는 이유와 효과에 대해서는 저자가 언급한 랄프 존슨의 비유로 축약한다."....이러한 최초 단계의 리팩토링은 '우선 창 밖이 보이게 뿌연 유리창부터 닦는 일'과 같다고 ..
-
리팩토링 / 마틴 파울러 - (2) Chapter 01. 맛보기개발/자습중 2018. 2. 9. 14:13
모든 공부는 개념 정리부터 시작한다.이 책도 마찬가지로 첫 장에서 리팩토링의 개념을 짚어보고, 대충 리팩토링이 어떤 것인지 예제를 보여주고 있다.나도 모르는 사이에 리팩토링을 하고 있었다니...! 하고 놀라면서 첫 장을 정리한다. 리팩토링이란 - 겉으로 드러나는 코드의 기능은 바꾸지 않으면서 내부 구조를 개선하는 방식으로 소프트웨어 시스템을 수정하는 과정- 버그가 생길 가능성을 최소화하며 코드를 정리하는 정제된 방법- 코드를 작성하고 난 뒤 설계를 향상시키는 일 기억해둬야 할 점 1. 적절한 테스트 코드를 작성하는 것이 리팩토링의 기본이다. '간단한 수정 → 테스트'를 리듬처럼 반복할 때만 리팩토링을 빠르고 안정적으로 완료 가능 2. 너무 긴 메소드는 분해하여 기능을 재분배해야 한다. 코드를 잘게 쪼개면..
-
리팩토링 / 마틴 파울러 - (1) 발단개발/자습중 2018. 2. 9. 14:00
첫번째 프로젝트에 투입되었을 때는 이미 기존 개발자들이 1차 오픈 대상 기능을 80% 이상 구현해둔 상태였다. 나는 1차 오픈 이후 철수한 프리랜서들이 만들어둔 코드를 유지보수하면서 2차 오픈 대상 기능을 만들어야 했는데,공통 메소드 같은 것들은 거의 다 완성되어 있었기에 편하기도 했고, 남이 짜놓은 소스를 다시 들여다보면서 수정해야 하기도 해서 고생도 많이 했다. 하루는 급작스럽게 조건 처리 로직이 변경되면서 정기배포 2시간 전에 급하게 조건문을 수정해서 배포했다.당연히 테스트할 시간이 부족했지만 부장님이 잘못되면 책임지시겠다는 말을....바보같이 믿고 찝찝해하며 배포를 진행했다.이런 경우는 거의 95%의 확률로 배포 당일날에는 발견하지 못했던 에러를 배포 다음날에 발견한다.이 날도 역시 배포 직후 테..
-
데이터 정렬하기개발/Javascript & jQuery 2018. 2. 7. 13:58
배열 내 데이터를 정렬할 일이 생겼을 때, 편하게 sort 함수나 reverse 함수를 써서 정렬할 수도 있고괜히 정렬 알고리즘을 짜서 정렬할 수도 있다.오늘은 한가하니까 두 방법을 모두 써서 배열 내 데이터를 정렬했다. 1. Array.prototype.sort(), Array.prototype.reverse() 를 사용하여 정렬 오늘은 작정하고 공부를 하는 날이니까 여유롭게 기술문서를 보러갔다.https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort sort() 함수에 대한 기술을 먼저 보러 갔더니 눈에 띄는 구절이 있다. sort () 메서드는 배열의 요소를 적절한 위치에 정렬하고 배열을 반환합니다..
-
기본 로직을 활용하여 특별한 날 생성하기개발/Javascript & jQuery 2018. 2. 6. 16:23
다이어터에게 보상데이가 있는 것처럼, 자기 자신에게 선물을 주는 날을 만든다는 사람의 글을 봤다. 한달에 하루나 이틀 정도 날을 잡아서 그날만큼은 자기가 좋아하는 간식을 사먹는다는 그 아이디어가 정말 귀엽고 좋다고 생각했다. 하루에 만원쓰기 운동을 시작한지 며칠 안됐지만 벌써부터 지쳐가는 내 자신을 한심하게 보느니그냥 이렇게라도 숨통을 틔워줄 겸, 마침 지금 혼자서 만들고 있는 가계부 프로그램에 도입해도 좋을 것 같다는 생각도 들어서 잠깐 코드를 짜봤다. 기본적인 로직은 로또 번호 발생기와 동일하다.여기에 특별한 날을 한달에 2일 이상 잡을 경우 오름차순으로 정렬하여 출력하는 로직만 추가했다. 자바스크립트 내장함수를 몇 개 사용했는데, 이것도 나름 깊이있게 공부하려다보니 쓰잘데기없이 말이 많아져서 따로 ..
-
HTML Help Workshop 으로 도움말 파일 만들기개발/Tool 2018. 2. 5. 09:08
마이크로소프트에서 프리웨어로 배포 중인 HTML Help Workshop 을 써서 도움말 만드는 법을 잠시 탐구해봤다. 검색해보니 이 툴이 불편해서 다른 프로그램을 쓴다는 분들이 꽤 많았다.아마 이 툴에서는 이미 생성된 HTML 파일을 묶어서 chm 파일로 컴파일해주는 기능만 제공하기 때문이 아닐까 싶다....나도 HTML 파일은 테스트용으로 대충 몇 개 만든 상태에서 도움말 파일을 만들었다. HTML Help Workshop Ver 1.32 다운로드 링크 → https://www.microsoft.com/en-us/download/details.aspx?id=21138 파일들을 몰아넣을 폴더를 하나 생성해준 뒤, 이미 만들어둔 HTML 파일들을 넣어주고 HTML Help Workshop을 실행한다.Fi..