'Book Story/Code Craft - 뛰어난 코드 작성을 위한 실전 지침서'에 해당하는 글 2건

  좋은 코드를 만든다는 것은 잘 문서화된 코드를 만든다는 의미이다. 항상 강조하듯이 코드만을 보고도 이해가 가는 코드는 정말 훌륭한 코드이다. 하지만 실제는 이렇게 가기가 쉽지 않다. 그리하여 외부 문서를 많이들 만들어 배포를 하곤 한다. Guide라는 형식의 문서들 말이다... 하지만 우리는 멈추면 안된다. 그리하여 스스로 - 문서화하는(Self-Documenting)코드를 작성해야 한다.

  코드를 좋은 문서로 만들기 위해 할 수 있는 모든일을 해야 한다.
- 누구든지 읽을 수 있는 종류의 문서
- 작성자보다 더 많은 사람들이(다른 프로그래머 또는 사용자들) 이해할 수 있어야 한다.
- 의사소통을 위하여 간단 명료해야 한다. 명료한 의사소통은 아주 중요하다!
- 코드가 명료하면 실수할 가능성이 적어지기 때문에, 코드의 품질이 높아지고, 유지보수 비용이 줄어든다.

ex)
int fval(int i)
{
int ret = 2;
for(int n1=1, n2=1, i2=i-3; i2>=0; --i2)
{
n1 =n2; n2=ret; ret=n2+1;
}
return (i<2) ? 1 : ret;
}

int CalFibonacci(int a_nPosition)
{
if(a_nPostion < 2)
         return 1;
int nPreviousButOne = 1;
int nPrevious           = 1;
int nAnswer             = 2;

for(int n = 2; n < a_nPosition; ++n)
{
             nPreviousButOne = nPrevious;
             nPrevious           = nAnswer;
             nAnswer             = nPrevious + nPreviousButOne;
}
return nAnswer;
}

눈으로 보아도 너무나 차이가 난다.... 특별한 코멘트가 없더라도 읽을 수 있는가와 읽을 수 없는가의 차이이다...

WRITTEN BY
정현석
이것저것 끄적끄적....

,

  코드의 이름은 이해와 유지보수를 도와주는 아주 중요한 도구이다. 
  우리가 언어로 코드를 작성하는 이유는 의사소통을 하기 위해서 이다. 그리고 그 의사소통은 컴파일러에 대한 것이기 보다는 코드를 읽는 사람들(다른 프로그래머들)에 대한 것이다.

좋은 프로그래머는...
  - 이름이 중요하다는 것을 알고, 이름을 소중히 다룹니다.
  - 이름을 어떻게 만들지에 대해서 생각하고, 자기가 생성하는 모든 것에 대한 적절한 이름을 붙인다.
  - 이름의 길이, 명료성, Context 등과 같이 힘들의 균형을 맞춥니다.
  - 더 큰 그림을 바라보고, 한 프로젝트 전체에 걸쳐서(또는 여러 프로젝트에 걸쳐서) 자기가 만든
    이름들의 조화를 이루게 만듭니다.

나쁜 프로그래머는....
  - 자기 코드의 명료성에 대해 거의 신경 쓰지 않습니다.
  - 일회성 코드를 생성합니다 : 성급히 작성된 신중하지 못된 코드
  - 언어 고유의 관용구를 무시합니다.
  - 이름을 짓는 데 있어서 일관성이 없습니다.
  - 전체론적으로 생각하지 않습니다. 자기가 만든 코드가 전체와 어떻게 맞물리는지 생각하지 않는다.

==========================================================================================
내가 생각하는 것은 쉽게 말해 의사소통을 위한 것이므로 다른 사람이 보았을 때 이해가 가야 한다. 그러기 위해서는 몇 가지 규칙을 정해놓고 코드를 작성하곤 한다.

1) 변수명은 명사를 사용한다.  - 의미하는 바를 잘 나타내기 위해서이다.
2) 함수명은 동사를 사용한다.  - 동작하는 바를 잘 나타내기 위해서이다.

이 두가지만을 잘 지키더라도 코드를 보았을 때 아~ 이 함수는 어떤 동작을 하는 함수구나 아~ 이 변수는 이런 데이터를 지니는 변수구나 이런 일에 쓰이는 변수구나 라는 것을 잘 알 수 있다.



WRITTEN BY
정현석
이것저것 끄적끄적....

,