간단하게 C언어ì—� 대한 ë¬¸ì œì™€ 답ì�„ 올리는 페ì�´ì§€ì—�서 다ì�Œê³¼ ê°™ì�€ ë‚´ìš©ì�´ 있었다.
~cpp
※ 다ì�Œì�´ 옳ì�€ì§€ 옳지 않ì�€ì§€ í�‰ê°€í•˜ê³ 옳다면 ì˜³ë‹¤ê³ ì �ê³ , 옳지 않으면 옳지 ì•Šë‹¤ê³ ì �ê³ ì™œ 그런지 ì�´ìœ 를 ì �으시오.
1.
#include <stdio.h>
main(){
int i;
for(i=0; i<10; i++){ // ë”´ì§€ : {는 for문 ë’¤ì—� 쓰는 것ì�´ 좋다. -_-. 내리는 것ì�€ ì •ë§� 좋지 않ì�€ 스타ì�¼ì�´ë‹¤.(ê°€ë�…성ì�„ 해친다.)
printf("%d", i);
}
}
brace를 ê°™ì�€ 줄ì—� 쓰는 것ì�´ 과연 ê°€ë�…성ì�„ 해치는가? ¶
ê°€ë�…성ì�€ ê°œì�¸ì·¨í–¥ì�´ë�¼ê³ ìƒ�ê°�합니다. ì œ 경우는 C, C++ì—�서 { 를 내리지 않는 경우보단 내리는 경우가 ë�” 보기 íŽ¸í•˜ê³ , JavaLanguage ì—�서는 내리지 않는게 ë�” 편하답니다. ì• ì´ˆì—� CodingConventions ì�´ë�¼ëŠ” 것ì�´ 존재하는 것ë�„ 통ì�¼ë�œ 코딩규칙ì�„ 따르지 ì•Šê³ ê°œì�¸ì·¨í–¥ì�˜ 코드를 만들어내다 ë³´ë©´ ì „ì²´ì �으로 코드ì�˜ 융통성ì�´ ê²°ì—¬ë�˜ê³ ê°€ë�…성ë˜�한 ì „ì²´ì �으로 떨어지는 ë¬¸ì œë¥¼ 미연ì—� 방지하기 위함ì�´ë�¼ê³ ìƒ�ê°�합니다. 특히나 ExtremeProgramming ì�˜ 경우처럼 CollectiveOwnership ì�„ 중요한 프랙티스 중ì�˜ 하나로 ê·œì •í•œ ë°©ë²•ë¡ ì—�서는 CodingConventions ê³¼ ê°™ì�€ ê³µë�™ì†Œìœ ì�˜ 산출물ì—� 대한 규칙ì�´ ë�”윽 ì¤‘ìš”í•˜ë‹¤ê³ ìƒ�ê°�ë�©ë‹ˆë‹¤. 요는, { 를 내리ëŠ�ëƒ� 내리지 않ëŠ�ëƒ�ê°€ ê°€ë�…성ì�´ 높ëƒ� ë‚®ëƒ�를 ê²°ì •ì§“ëŠ” 것ì�´ ì•„ë‹ˆê³ ê°€ë�…성ì�´ë�¼ëŠ” 하나ì�˜ í�‰ê°€ìš”소ì�˜ 가치는 ê°œì�¸ì—� ë”°ë�¼ 달ë�¼ì§ˆ 수 있다는 것입니다. - ìž„ì�¸íƒ�
ì�´ 글ì�„ ì“°ê³ ì € ë¬¸ì œì—� 대한 ì�´ì�˜ ì œê¸°ê°€ 들어올줄 예ìƒ�ì�€ í•˜ê³ ìžˆì—ˆìŠµë‹ˆë‹¤. ê·¸ì—� 따른 ì œ 변명ì�€ ì�´ë ‡ìŠµë‹ˆë‹¤. 여러 언어ì�˜ 특성ìƒ� 언어마다ì�˜ 코딩 스타ì�¼ì�€ 엄연히 존재합니다. C언어ì�˜ 특성ì—� ë”°ë�¼ 하나ì�˜ 함수는 한 화면ì—� 모ë‘� ì¶œë ¥ë�˜ê²Œ 하는 것ì�´ 중요합니다. (ë¬¼ë¡ ìš”ì¦˜ê³¼ ê°™ì�€ í�° 터미ë„�ì—�서는 ë¬¸ì œê°€ ë�˜ì§€ ì•Šê² ìŠµë‹ˆë‹¤ë§Œ,..) 때문ì—� 코드ì�˜ ê°€ë�…성ì�„ 높히며 ë§Žì�€ 코드들ì�„ 짜는 것ì�€ 불가분ì�˜ 관계ë�¼ê³ ë�„ í• ìˆ˜ ìžˆê² ì£ .(함수를 붙여쓰면 코드들ì�€ ë§Žì�´ 들어가나 ê°€ë�…성ì�´ 매우 ë–¨ì–´ì§€ì£ .) 하지만 C언어ì—�서 ì €ê²ƒê³¼ ê°™ì�€ ë°©ì‹�ì�˜ 코드는 코드ì�˜ ë�¼ì�¸ë§Œ 늘리는 결과를 초래하게 ë�©ë‹ˆë‹¤. 예를 들어 24ë�¼ì�¸ë§Œ 쓸 수 있는ë�° for문과 while문ì�˜ 갯수가 4ê°œë�¼ê³ 하면 4줄ì�„ ë‚비하는 ê¼´ì�´ ë�©ë‹ˆë‹¤. 즉, for문과 while문ì�˜ ê°€ë�…성ì�„ 위해 ì „ì²´ì �ì�¸ 함수 ê°€ë�…성ì�„ 떨어뜨리게 ë�˜ëŠ” 것ì�´ì£ . (ë˜�한 for문과 while문ì�˜ {를 아래로 내리는 것과 위로 올리는 것ì�˜ ì°¨ì�´ì �ì�€ 얼마ë�˜ì§€ 않습니다.) ì œê°€ 강조한 것ì�€ ì�´ ì „ì²´ì �ì�¸ 모듈ì�˜ ê°€ë�…성ì�„ 뜻한 것입니다. (딴지를 걸ìž�ë©´ 80x24 화면ì—� ì €ëŸ¬í•œ 코딩 ë°©ì‹�ì�„ 사용하는 것ì�€ 죽ì�Œì�„ ìž�초하는 길ì�¼ê²ƒìž…니다. í† ë°œì¦ˆ ë˜�한 강조한 것ì�´ê¸°ë�„ 하구요.
) - ��호
êµì–´ì‹¤ë ¥ê³¼í”„로그래ë°�
ì €ë�„ 딴지를 약간 걸어보ìž�ë©´ í† ë°œì¦ˆê°€ 작성한 Linux Kernel Coding Style ì�´ë�¼ëŠ” 문서를 보니 첫 부분ì—� 다ì�Œê³¼ ê°™ì�€ 부분ì�´ 있네요.
{{|
This is a short document describing the preferred coding style for the linux kernel. Coding style is very personal, and I won't force my views on anybody, but this is what goes for anything that I have to be able to maintain, and I'd prefer it for most other things too. Please at least consider the points made here.
|}}
위ì�˜ 서문(?)ê³¼ braceì—� 대한 부분ì�„ ë´�ë�„ í† ë°œì¦ˆê°€ 코딩 스타ì�¼ì—� 대한 ìž�ì‹ ì�˜ ìƒ�ê°�ì�„ ë�…ìž�들ì—�게 강조한 것으로는 ë³´ì�´ì§€ 않네요. - ìž„ì�¸íƒ�
) - ì�´ì˜�í˜¸ì €ë�„ 중괄호({,brace)를 한줄ì—� 쓰는 스타ì�¼ì�„ ì„ í˜¸í•©ë‹ˆë‹¤. 하지만 그것ì�€ 어디까지나 취향ì�˜ ë¬¸ì œë�¼ê³ ìƒ�ê°�합니다. 취향ì�´ 약간 다를 ë¿�ì�´ì§€ (과장ë�œ 표현ì�´ì—ˆê² 지만) 죽ì�Œì�„ ìž�ì´ˆí• ì •ë�„로 틀린ì�¼ì�€ 아니ë�¼ê³ ìƒ�ê°�합니다. ì›�만한 CollectiveOwnership ì�„ 위해서는 다른것ì�„ í‹€ë¦¬ë‹¤ê³ ë§�하면 안ë� 것 같습니다. --ì�´ë�•준
Python ê³¼ ê°™ì�€ 언어ì�˜ 경우 {} ìž�체를 ì“°ì§€ ì•Šê³ ì•„ì—� 들여쓰기로 블ë¡�를 표현합니다. 우리가 코드를 볼때 해당 블ë¡� 범위를 ì�½ì�„때ì—�는 { } ì�˜ 위치보다는 들여쓰기로 블ë¡� 범위를 파악하는 ì�¼ì�´ ë�” 많다는 ì �ì—� 대해서ë�„ ìƒ�ê°�í•´ ë³¼ 필요가 있ì�„ 것 같습니다. --1002
글ì�„ ìž‘ì„±í•˜ì‹ ë¶„ê³¼ ì œê°€ ìƒ�ê°�하는 'ê°€ë�…성'ì—� 대한 ì •ì�˜ê°€ 다른게 아닌가 합니다. 코드를 글로 ë¹„ìœ í•´ ë³´ìž�ë©´(ì €ëŠ” ë¹„ìœ ë‚˜ ì�€ìœ 를 좋아한답니다) ì�´ì˜�호님께서는 눈ì—� 거슬리지 않게 ì „ì²´ì �ì�¸ 문장ì�´ 한눈ì—� 들어오는가를 중요하게 ìƒ�ê°�하시는 것 같습니다. ì €ëŠ” ê°€ë�…성ì�´ë�¼ëŠ” ê°œë…�ì�„ 문장들ì�´ 얼마나 매ë�„ëŸ½ê³ ë¬¸ë‹¨ê³¼ 문단ì�˜ ì—°ê²°ì—� ë¶€ì �ì ˆí•¨ì�´ 없는가ì—� ì´ˆì �ì�„ ë§žì¶”ê³ ìžˆìŠµë‹ˆë‹¤. 문단ì�˜ 첫 글ìž�를 들여쓰기를 하ëŠ�ëƒ� 마ëŠ�ëƒ�ê°€ 중요한 것ì�´ ì•„ë‹ˆê³ ê·¸ 문단ì�´ ì£¼ì œë¥¼ 얼마나 ëª…í™•í•˜ê³ ê¹”ë�”하게 ì „ë‹¬í•´ 주ëŠ�ëƒ�ê°€ 중요하다는 것ì�´ì£ . CollectiveOwnership ì�„ 위한 CodingConventions와 글쓰기를 연계시켜 ìƒ�ê°�í•´ ë³´ìž�ë©´ 하오체를 쓸것ì�¸ê°€ 해요체를 쓸것ì�¸ê°€ ì •í•´ë‘�ìž� ì •ë�„ê°€ ë� 까요? ì œê°€ ìƒ�ê°�하는 ê°€ë�…성ì�˜ ì •ì�˜ì—�서 braceì�˜ 위치는 지엽ì �ì�¸ ë¬¸ì œìž…ë‹ˆë‹¤. SeeAlso Python ê³¼ ê°™ì�€ 언어ì�˜ 경우 {} ìž�체를 ì“°ì§€ ì•Šê³ ì•„ì—� 들여쓰기로 블ë¡�를 표현합니다. 우리가 코드를 볼때 해당 블ë¡� 범위를 ì�½ì�„때ì—�는 { } ì�˜ 위치보다는 들여쓰기로 블ë¡� 범위를 파악하는 ì�¼ì�´ ë�” 많다는 ì �ì—� 대해서ë�„ ìƒ�ê°�í•´ ë³¼ 필요가 있ì�„ 것 같습니다. --1002
ì €ë�„ 딴지를 약간 걸어보ìž�ë©´ í† ë°œì¦ˆê°€ 작성한 Linux Kernel Coding Style ì�´ë�¼ëŠ” 문서를 보니 첫 부분ì—� 다ì�Œê³¼ ê°™ì�€ 부분ì�´ 있네요.
{{|
This is a short document describing the preferred coding style for the linux kernel. Coding style is very personal, and I won't force my views on anybody, but this is what goes for anything that I have to be able to maintain, and I'd prefer it for most other things too. Please at least consider the points made here.
|}}
위ì�˜ 서문(?)ê³¼ braceì—� 대한 부분ì�„ ë´�ë�„ í† ë°œì¦ˆê°€ 코딩 스타ì�¼ì—� 대한 ìž�ì‹ ì�˜ ìƒ�ê°�ì�„ ë�…ìž�들ì—�게 강조한 것으로는 ë³´ì�´ì§€ 않네요. - ìž„ì�¸íƒ�
ê°™ì�€ 코드ë�„ ê°€ë�…성ì�´ 작업 환경ì—� ë”°ë�¼ 달ë�¼ì§€ëŠ”ê°€? ¶
위ì—�서 ì�´ì•¼ê¸°í•œ 것 중 터미ë„� 화면ì—�서ì�˜ 작업시 세로ë�¼ì�¸ì�˜ 범위가 ì¢�ì�€ 경우 { } ê°€ ê°€ë�…성ì�„ í•´ì¹ ìˆ˜ 있다는 ì�˜ê²¬ì�´ 있습니다. 재미있는 ì�˜ê²¬ 같네요.
ì „ì—� 여러 회사ì�˜ 팀들 분들과 ì�´ì•¼ê¸°ë¥¼ 하면 사람들마다 얼마나 취향차들ì�´ 다른가ì—� 대해서 ëŠ�ë�¼ëŠ”ë�°, 한편으로는 그냥 ê°œì�¸ì�˜ 취향차로만 보기ì—�는 ê·¸ 분들ì�˜ 작업 환경ì—� ë”°ë�¼ ì°¨ì�´ê°€ 있는 듯 합니다. ì�¼ë¡€ë¡œ, Refactoring ê°œë…�ì�´ 개발ìž�들ì—�게 í�¼ì§„ ì�´í›„ 메소드는 가능한 한 ì§§ê³ ê°„ê²°í•˜ë©° 한가지 기능만ì�„ 하는게 ê°€ë�…성과 모듈디ìž�ì�¸ìƒ� ì¢‹ë‹¤ê³ ì�´ì•¼ê¸°í•©ë‹ˆë‹¤. ê·¼ë�°, 리눅스나 VI ì—�서 작업하시는 분들ì�€ '너무 메소드 길ì�´ê°€ ì§§ì•„ë�„ 안좋다.' ë�¼ë�˜ì§€ '리눅스ì�˜ xx 코드 본 ì � 있ëƒ�? 한페ì�´ì§€ì—� 주욱 나오는게 ì •ë§� ì�½ê¸°ê°€ 좋다.' 'OO ë””ìž�ì�¸ì�´ ì¢‹ë‹¤ê³ í•˜ëŠ”ë�°, 코드 ë¶„ì„�í•˜ë ¤ë©´ ì�´ í™”ì�¼ ì € í™”ì�¼ ë�Œì•„ë‹¤ë‹ˆê³ ë©”ì†Œë“œë“¤ì�„ ì�´ë¦¬ì €ë¦¬ ë�Œì•„다녀야 í•˜ê³ ë³„ë¡œ 안좋ì�€ê±° 같다' ë�¼ê³ ë§�씀하시는 분들ë�„ 있습니다.
그래서 추측ì�„ 했었는ë�°, ìž�ì‹ ì�´ 쓰는 ë�„구ì—� ë”°ë�¼ ê°™ì�€ 코드ë�„ ê°€ë�…성ì—� ì˜�í–¥ì�„ ë°›ì�„ 수 ìžˆê² ë‹¤ëŠ” ìƒ�ê°�ì�„ 해봅니다. VI 등ì�˜ editor 들로 코드를 보는 분들ì�´ë�¼ë©´ 아마 ì�¼ë°˜ 문서처럼 주욱 있는 코드들ì�´ navigation 하기 편합니다. (아마 jkl; 로 ë�Œì•„다니거나 ctrl+n 으로 page 단위로 ì�´ë�™í•˜ì‹œëŠ” 등) ì�´ëŸ¬í•œ 경우 OO 코드를 ë¶„ì„�í•˜ë ¤ë©´ ì�´í™”ì�¼ ì €í™”ì�¼ ì—�디터ì—� ë�„워야 하는 í™”ì�¼ë“¤ì�´ ë§Žì•„ì§€ê³ , ì�´ë�™í•˜ê¸° 불편하게 ë�©ë‹ˆë‹¤. (ë¬¼ë¡ ctags 를 쓰는 사람들ì�€ ë˜� 코드 ë¶„ì„�법ì�´ ë‹¤ë¥´ê² ì£ ) 하지만 Eclipse 를 쓰는 사람ì�´ë�¼ë©´ 코드 ë¶„ì„�시 outliner 와 caller & callee 를 ì�¨ì„œ 코드를 ë¶„ì„�í•˜ê³ navigation í• ê²�니다. ì�´ëŸ° 분들ì�˜ 경우 í�´ëž˜ìŠ¤ë“¤ê³¼ 메소드들ì�´ 잘게 ë‚˜ëˆ„ì–´ì ¸ 있어ë�„ ì°¨ë�¼ë¦¬ 메소드ì�˜ ì�˜ë¯¸ë“¤ì�´ 잘 분리ë�˜ì–´ìžˆëŠ”ê²Œ ë¶„ì„�하기 ì¢‹ì£ .
ê°€ë�…성ì�„ ìƒ�ê°�í• ë•Œ 종종 ì�´ëŸ° ìƒ�ê°�ì�„ 합니다. 'ì–´ë– í•œ 코드가 ë””ìž�ì�¸ì�´ 좋ì�€ê°€? 혹ì�€ ì–´ë– í•œ ë�„구가 좋ì�€ ë””ìž�ì�¸ì�„ ì�´ë�Œê²Œ 하는ë�° ë�„움ì�„ 주는가?' ì–´ë–»ê²Œë“ ë�„구를 ë§Œë“¤ê³ , 다시 ë�„구ì—� ì˜�í–¥ì�„ 받게 ë�˜ëŠ”ê²Œ 사람ì�´ë‹ˆê¹Œìš”. --1002









