2018년 3월 28일 수요일

Tell, don’t Ask

요구하지 말고 설명해라. Tell don't ask.

요구하는 식으로 프로그래밍 하지말고 설명하는 방식으로
프로그래밍 하라.

참고 사이트
https://martinfowler.com/bliki/TellDontAsk.html
https://pragprog.com/articles/tell-dont-ask
https://robots.thoughtbot.com/tell-dont-ask

심플 예제 설명
http://www.tzavellas.com/techblog/2007/02/17/a-simple-example-of-tell-dont-ask/

데미테르의 법칙 (Law of demeter).
http://blog.aliencube.org/ko/2013/12/06/law-of-demeter-explained/

함수형 프로그래밍 관련 용어 공부 정리

다형성이란 (polymorphic) ?

다형성이란 상위클래스 타입의 변수에 여러개의 하위클래스의 객체를 참조할 수 있도록 하는것을 이야기 한다.  즉 같은 타입이지만 오른쪽에 실제 런타임중에 new되는 객체(하위클래스)의
메소드가 실행되어 동일한 메소드가 다양한 형태를 표출한다는 것 이다.

다음과 같은 장점이 있다.

1. 여러 타입의 객체를 하나의 타입으로 관리하니 유지보수가 좋다.
(변경 사항 발생시 다형성으로 구현하지 않았을 때의 절반이상 코딩양 준다.)

2. 메속드의 매개변수(인자)로 상위 클래스, 추상 클래스, 인터페이스등이 온다면
그 하위클래스, 인터페이스를 구현한 클래스등이 인자로 들어 갈 수 있어 좀 더
유연한 프로그래밍을 할 수 있다. (당연히 이부분도 프로그램의 유지보수 차원에서 좋다)

3. 확장성이 좋은 코드를 작성할 수 있고, 결합도가 강하지 않은 프로그래밍을 할 수 있다.

참조 사이트
http://whatisthenext.tistory.com/34
http://asfirstalways.tistory.com/168
https://brunch.co.kr/@kd4/4


2016년 1월 29일 금요일

훌륭한 프로그래머 되는법 PART 1

Chapter 1. 코드에 신경 쓰기

- 좋은 코드를 작성하려면 코드에 신경을 써야 한다. 훌륭한 프로그래머가 되려면 시간과 노력을 투자해야 한다.

- 코드에 대한 감정적 반응은 잘못된 것이 아니다. 훌륭한 결과물을 자랑스러워 하거나 더러운 코드에
혐오감을 느끼는 것은 건전하다는 증거다.


누군가가 작성한 프로그램 코드를 보다 보면 잘 짜여진 코드를 보면 왜이렇게 짜여져 있는지 이해하기도 쉽고 직관적이다. 하지만 반대의 경우에는 이해하기도 어렵고 짜증이 날때가 있다. 프로그램은 혼자서 만드는것이 아닌 타인을 위해서라도 작성하는 코드에 신경을 써야 한다.



2015년 11월 2일 월요일

Vi Editor Setting

.vimrc 파일

셋팅 내용

set number            " line 표시를 해줍니다.
set ai                    " auto index
set si                    " smart index
set cindent            " c style index
set shiftwidth=4      " shift를 4칸으로 ( >, >>, <, << 등의 명령어)
set tabstop=4         " tab을 4칸으로
set ignorecase      " 검색시 대소문자 구별하지않음
set hlsearch         " 검색시 하이라이트(색상 강조)
set expandtab       " tab 대신 띄어쓰기로
set background=dark  " 검정배경을 사용할 때, (이 색상에 맞춰 문법 하이라이트 색상이 달라집니다.)
set nocompatible   " 방향키로 이동가능
set fileencodings=utf-8,euc-kr    " 파일인코딩 형식 지정
set bs=indent,eol,start    " backspace 키 사용 가능
set history=1000    " 명령어에 대한 히스토리를 1000개까지
set ruler              " 상태표시줄에 커서의 위치 표시
set nobackup      " 백업파일을 만들지 않음
set title               " 제목을 표시
set showmatch    " 매칭되는 괄호를 보여줌
set nowrap         " 자동 줄바꿈 하지 않음
set wmnu           " tab 자동완성시 가능한 목록을 보여줌

syntax on        " 문법 하이라이트 on

2015년 10월 2일 금요일

JavaScript closures 기본 개념

JavaScript closures 개념


function add()
{
    var count = 0;
    function plus()
    {
       count += 1;
    }
    plus();
    return count;
}

add();
add();
add();

add() 함수를 호출하여 count 값을 출력해보면 항상 1 이 나온다.
count는 add() 함수 안에서 지역변수로 add()함수를 실행 하면 count = 0 으로 초기화 하기 때문이다.



function add()
{
    var count = 0;
    function plus()
    {
       return count += 1;
    }    
    return plus;
}

var myFun = add();
myFun();
myFun();
alert(myFun());

add()함수 내부에서 리턴값으로 plus함수 자체를 리턴해주면 외부에서 count값을 증가 시켜주는것이
가능하게 된다.
myFun 변수에 plus의 함수자체를 할당하여 외부에서 호출이 가능하게 된 것이다.
이로써 count값이 3으로 표시 될것이다. 이것을 활용하여 이벤트를 할당하거나 callback개념으로
JavaScript closures를 사용할 수도 있다. 자세한 사용방법은 아래 참조 사이트를 참조하기 바란다.


참조 사이트
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Closures

http://www.w3schools.com/js/js_function_closures.asp




2015년 8월 26일 수요일

Android dialog custom webview 적용..

String webViewString = yourMeta + yourCss + yourHtml;
yourCustomWebView.loadData(webViewString, "text/html; charset=UTF-8", null);
yourAlertDialog.setView(yourCustomWebView);

2015년 6월 28일 일요일

2015년 독서 노트

<끝까지 해내는 힘>
나카무라 슈지, 비즈니스북스
- 무엇보다 하나를 끝까지 해보는것이 중요하다.

<독서는 절대 나를 배신하지 않는다>
사이토 다카시, 걷는나무
- 독서를 통해서 삶의 지식, 지혜를 얻을수 있다. 꾸준히 독서를 하다보면 조금씩 내공이 쌓여 더욱 심도 있는 독서를 할수 있게된다. 독서를 통해서 삶을 변화시킬수 있는 힘을 가지게된다.