728x90

의미있는 이름을 사용하라.
변수, 타입, 파일, 함수등 모든 것들의 이름은 의미가 있는 것이어야 한다. x,y,z,a,b,c같은 이름들은 나중에 자신이 봐도 정확히 이해하기 어려울지도 모른다.

함수 작성 시 유의
- 하나의 함수는 하나의 동작! (동사로 이름짓는 것이 원칙)
- side effect를 최소화하라(side effect란 함수가 실행되는 도중에 외부에 있는 값이나 상태를 바꾸는 것을 말한다.)
-  짧게 만들라. 한 화면에 모두 들어갈 수 있도록 하되 코드를 짧게 만들기위해 무리하게 줄이지는 마라.

제약을 많이 가하라.
- const등을 이용해서 값이 바뀌면 안되는 것들은 모두 상수화해라.
- 양수만 가진다면 unsigned type을 사용하라. 귀찮다고 그냥 넘기는 경우가 많다.
- 몇가지 선택사항이 있다면 열거형식(enum)을 활용하라.
(가끔 생각하는데 boxing과 unboxing에 대한 것, 혹은 casting에 관한 것이 이러한 제약들과 겹칠 경우 어떻게 해야 하는가..하는 문제다. unsigned type의 변수를 선언했는데 signed형식을 parameter로 사용하는 method를 이용해야 할 경우 강제형변환(type casting)이 필요하다. 이러한 형 변환이 많이 사용될 때는 그냥 처음부터 signed로 하는게 좋지 않을까?)

마법의 수를 피하라.
코드내에 숫자가 들어가는 경우를 magic number라고 한다. if(counter == 76)과 같은 코드를 만나게 되면 76이 무엇을 뜻하는지 모르게 된다. #define과 같은 코드를 사용해서 문자상수를 사용할 수도 있고 상수를 선언해서 사용할수도 있다.
더욱 심한 경우를 초보자들이 많이 사용하는데 문자를 구분할 때 숫자를 적어버리는 경우가 있다. 이러한 경우는 C언어에 한해서 많이 나타나는 상황인데 특정한 문자인지 확인하기 위해 그 문자의 ASCII코드값을 적어버리는 경우가 있다. source를 유니코드를 사용하는 언어에 그대로 사용할 경우가 생길지도 모른다. 코드값이 다른 상황이 생길지도 모른다. 문자와 상수가 비교되지 않는 컴파일러를 만날지도 모른다.
코드에 숫자를 직접 넣어버리는 것은 피하도록 하자.

연관된 정보는 묶어라.
프로젝트의 크기가 커질수록, 코드의 길이가 길어질수록, 함수와 클레스가 많아질수록 분류의 중요성은 더욱 강조된다. 큰 물에서 놀고싶으면 애초에 큰 물에서 하는 습관을 들여놔야 한다.
- 한 콤포넌트를 위한 API는 한 파일안에 표현해야 한다.
- namespace나 package등을 이용하여 그룹화하라. 관계가 있는 상수들은 enum으로 정의하라.

728x90
728x90
외부 문서의 지원이 필요한 코드는 작성하지 마라. 그런 코드는 취약하다. 코드 자체만으로 명료하게 읽히도록 만들어야 한다.
 - 외부 문서가 필요한 코드의 경우 수정 될 때마다 외부 문서를 같이 수정해야 한다. 처음 작성되었을 때 어떻게 되었는지 알 필요가 있는 경우 이러한 문서 작업은 더욱 복잡해 질 것이다. 큰 프로젝트를 작업하는데 이렇게 진행하면 힘들어서 제대로 진행하질 못한다.
 - 그렇다고 지나치게 상세한 코멘트(주석)로 코드 자체의 내용을 가리는 것도 옳지 않다. 코드만 보고도 쉽게 알 수 있는 곳이라면 코멘트를 자제하자. 어차피 코드만 보고 이해하기 쉽도록 만드는 것이 목표이니 코멘트는 필요없는 것인가? 코멘트가 필요한 곳과 작성요령은 나중에 다시 다룬다.

코드가 명료해지면 실수할 가능성이 적어지기 때문에, 코드의 품질이 높아지고, 유지보수 비용이 줄어든다. (가독성을 높이는 것이 최대 목표라고 생각해라.)

가끔 자신이 만든 소스를 다른 사람들이 쉽게 알아보지 못하는 것에 대해 쾌감을 느끼는 변태들이 있다. 단점은 그런 변태들과 같이 일하고 싶어하는 사람이 적다는 것이다.

같은 일을 하는 함수다. 어떻게 보이는지 감상해보자.

중요한 것은 짧은 코드를 작성하는 것이 아니라 다른 프로그래머가 봤을 때 쉽게 읽을 수 있고 명확한 코드를 작성하는 것이다.

if문의 함정에 조심하라!
 - 이건 책에서 강조하는 것이 아니라 내가 강조하는 내용이다. 책에서는 if-then-else 구조를 작성할 때 "정상"인 경우가 "에러"인 경우보다 항상 앞에 나오거나 그 반대가 되도록 하라고 권한다.

내가 권하는 방법은 if문은 가능한 처음부터 사용하지 말라는 것이다. 초보 프로그래머가 쉽게 작성하는 코드는 많은 문제를 if, else문으로 처리하려고 들고 if문 내에 전체 코드를 다 넣으려고 한다. 특히나 if문으로 오류처리를 하면서 전체 코드를 다 집어넣는 경우 처리할 오류가 많아질수록 중첩수준이 깊어진다.

그래서 일단 이론적으로 올바른 입력이 있을때(아무런 오류처리도 필요없을 때)의 코드를 먼저 작성하고 오류처리는 if문으로 나중에 추가하라고 권한다. 불필요한 경우 else문도 절대 사용하지 말것을 권한다. 이것이 올바른 것인지는 모르겠지만 중첩의 깊이가 적을수록 코드를 읽을 때 생각할 것이 줄어든다는 믿음에는 변함이 없다.
728x90
728x90

#include <stdio.h>

unsigned long factorialUsingRecursion(unsigned long n);
unsigned long factorialUsingLoof(unsigned long n);

int main(void)
{
        printf("10! = %lu\n", actorialUsingRecursion(10));
        printf("10! = %lu\n", factorialUsingLoof(10));
        return 0;
}

// 재귀호출을 이용한 factorial계산
// 종료조건(if)을 가장 먼저 적어주는 것에 유의
// 재귀호출은 어떻게 돌아가는지가 중요한 것이 아니라
// 어떤 수식을 그대로 옮겼느냐만 생각하면 된다.
unsigned long factorialUsingRecursion(unsigned long n)
{
        if(n <= 1) return 1;
        return(n*factorial(n-1));
}

unsigned long factorialUsingLoof(unsigned long n)
{
        unsigned long result, i;

        result = 1;
        for(i=2; i<=n; i++)
        {
                result = result * i;
        }
        return result;
}

728x90
728x90
사이버 공간에 떠다니고 있거나 잠자고 있는 자신의 주민등록번호를 정리하는 캠페인이 열린다.

행정안전부는 사이버 상의 주민등록번호 오·남용을 방지하고 안전하게 사용하도록 하기 위해 5월 1일부터 6월 30일까지 두 달간 ‘2008 주민번호 클린 캠페인-나도 모르게 떠다니는 내 주민번호를 찾아라!!’를 실시한다.

누구나 주민번호 클린 캠페인에 참여할 수 있고 개인의 프라이버시 보호를 위해 공인인증서·신용카드·주민등록정보 인증 등 온라인상의 본인 인증절차를 거쳐 참여할 수 있다.

이 캠페인은 최근 들어 개인정보에 대한 국민적 관심과 우려가 집중돼 행정안전부가 사이버 상에 떠도는 자신의 주민번호 이용내역을 확인해 줌으로써 개인정보 보호의식을 높이고 자기정보를 스스로 잘 관리할 수 있도록 도와주기 위해 마련됐다.

이번 캠페인에서는 본인 인증수단으로 공인인증서, 신용카드 인증 이외에 본인 인증수단을 확보하기 어려운 청소년(20세 이하)과 고령자(60세 이상)들에게 참여기회를 제공하기 위해 행안부의 주민등록전산정보센터가 보유하고 있는 주민자료의 ‘세대주의 생년월일, 성명, 증 발급일자’를 이용한 본인 인증수단을 새롭게 마련해 참여기회를 넓혔다.

또 캠페인 협력기관인 3개 실명확인제공기관(한국신용평가정보, 한국신용정보, 서울신용평가정보)의 실명확인제공로그 기록도 본인이 선택적으로 삭제할 수 있게 했다.

캠페인에 참여하려면 클린캠페인 전용페이지(clean.mopas.go.kr), 행정안전부의 대표 블로그 2곳(blog.naver.com/happymopas, blog.daum.net/happymopas), 행정안전부(www.mopas.go.kr), G4C(www.egov.go.kr), 대한민국 전자정부(www.korea.go.kr), 시·도와 시·군·구의 홈페이지 등에 접속하여 ‘주민번호 클린 캠페인’ 참여하기를 이용하면 된다.

캠페인은 각종 포털(나우콤, 네오위즈, 넥슨, 다음, 드림위즈, SK커뮤니케이션즈, 엔씨소프트, 엔에이치엔, 옥션, 씨제이인터넷, KTH, 코리아닷컴, 하나로드림)에서도 캠페인에 참여할 수 있다.

행안부는 2001년부터 실명확인서비스 이후 인터넷 사이트에서 실명확인 및 성인인증 등의 목적으로 자신의 주민번호가 언제, 어디서 사용됐는지 주민등록번호 이용내역을 무료로 확인해 주고 개인정보 보호 대처방안 등도 함께 안내하고 있다.

======================================================================
한때 이런거 알아봐준다면서 돈내라는 사이트도 꽤 있었다.
728x90

+ Recent posts