블록을 어떻게 잡는가?{

몇가지 언어들 빼고는 거의 대부분 블록을 잡을때
{,}를 쓴다. - 예외인 언어중에는 무엇보다도 Phyhon이 재미난다.- 함수나 메쏘드, 혹은 조건 분기, 반복문 등에 쓰이는 이 블록은 그 쓰는 용법도 개발자들 마다 조금씩 차이가 있다.
함수등을 쓸때
int main (char *arg, char[] *argv){
}

이런식으로 함수명 다음 인자 들을 나열한후 그 열에 블록의 시작을 적는 경우가 있는가 하면
int main ( char *arg, char[] *argv)
{
}

식으로 개행을 해서 다음 행에 적는 사람도 있다. 언젠가 이 부분에
대해서 두 개발자가 논쟁을 한 걸 본적이 있다. 후자를 주장 하는 사람은 더욱 명확하게 잘 보인다라는 주장 이였고, 전자를 주장하는 이는 필요없는 개행은 오히려 보기 안좋다는 거였다.
어떤게 더 보기 좋은지는 ... 나도 잘 모르겠다. 함수가 되든
분기문이 되든 보통 블록을 미리 적어 놓고 다시 행을 옮겨 내용을
적게 되는 습관인지라 뭘로 해도 무관하긴 하다.
허나 요즘은 Xcode에서 템플릿이 기본적으로는 전자의 방식으로
되어 있어 단지 거기에 맞출뿐이다.

한가지 더 생각 해볼것은 이게 중첩(nested) 블록일때 의 모습이다.
if(true)
{
    if(true)
    {
        if(true)
        {
        }
   }
}


이런 모양일 것이냐 아니면

if(true){
    if(true){
        if(true){
        }
    }
}


이런 모양이냐는 것이다.
이렇게 중첩 시키고 보니... 개인적으로는 후자의 방법이 낳지 않나 싶기는 하다. 그래도 호불호가 갈리기는 마찬가지 일듯.

사실 모양은 그렇게 중요하지 않을수도 있지만, 또 어떤때에는 중요하기도 한.. 그 좋다가도 좋지 않은 그... 남/녀 관계와도 같다고나 할까?

여기서 좀 더 생각을 달리 해보면 블록을 잡는 습관에 대해서도
염두해둘 필요가 있는것 같다. 실제 코딩을 할때 말이다.
내가 염두 해두고 싶은 부분은 두가지 정도 인데 첫째는 굳이 블록을 잡지
않아도 되는 경우에 - 내용이 한행일때는 대부분 블록으로 싸지 않아도 되는 언어가 많다-
굳이 블록을 사용할 것인가.
두번째로는 블록의 시작을 알리고 내용을 적고 블록의 종료를 알릴것인가, 아니면 미리 블록을 시작, 끝 해놓고 내용을 적을것인가.

비개발자는 말할것도 없을 것이고 개발자 라 하더라도 이런것들이 '뭔 시덥잖은 ...' 이라
 생각할지 모르겠다.
첫번째는 뭐 그렇다 치더라도 두번째 경우는 확실히 편리성 혹은 안정성은 있는거 같다.
물론 극히 나한테 해당 하는 내용이다.

블록을 미리 싸놓고 내용을 적는 경우에, 분명히 자잘한 syntax 오류는 줄이는거 같다.
if(condition){
}

이렇게 먼저 해두고
if(condition){
// blah~ blah~~
}


내용을 적어 두는거다 . 이렇게 해두면 내포된 중첩 블록이 생기는 경에도 헷갈리거나
구조가 - 내포된 구조- 엇갈리지도 않는거 같다. 정말 단순하지만 그만큼 많이 하는
실수가 ';' 행 종결 표시를 뺀다던지 블록을 열어둔채 놔둔다 던지 사실 그렇지 않은가.

개인적으로는 코딩 스타일 혹은 타이핑 스타일이 효율이나 미학적으로도 많은 영향을
미치기도 한다. 그건 어찌보면 '개인적'인 효과 일 것이다.
다수, 팀, 조직으로 가게 되면 사실 이런 것들이 '효과' 보다는 '통일성' 나아가 '일관성'
으로 그 필요성이 거론 된다. 이렇게 되면 객관적인 '효과' 보다는 '일관적' 이기에
팀에 효과적이고, '통일성' 이 있기에 '효과'적인 경우가 되버린다.

요컨데 그 자체가 효율 적인거 보다는  팀에 미치는 영향이 우호적이기에 '효율'적
인 경우가 되는 것이다. -'요컨데'를 써서 적어도 그다지 이해가 잘 안되는구만;;;

이번 포스팅은 뭐 정보성도 아닌것 같고 그냥 코딩 하며 그간 생각했던
'잡념' 들 중 하나 인거 같다. 누구나 한번쯤 생각하는 '쓸데 없을' 지도 모를 뭐 그런..
가끔 그동안 머리에 떠오르던 잡념으로 비슷한 내용을 써봐야겠다.





}


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by SUN+MOON


Trackback URL : http://sunnmoon.pe.kr/trackback/176

Trackbacks List

  1. 나름의 프로그래밍 코딩 규칙

    Tracked from yundream의 프로그래밍 이야기 2009/11/12 15:22 Delete

    아무래도 네이밍 규칙정도는 좀 정리를 해놔야하지 싶다. 이대로 따르지는 힘들겠지만 따를려고 노력해야 겠다. 기본룰이 없으니 프로젝트마다 네이밍 룰이 제각각이고 동일한 프로젝트에서..

Comments List

  1. yundream 2009/11/12 15:16 # M/D Reply Permalink

    한줄로 끝낼수 있을거 같음 블럭 안잡고요.
    그렇지 않을경우에는
    function F(x)
    {
    ...
    }

    함수명옆에 블럭시작이 되면, 어디서부터 어디까지가 블럭인지 한눈에 안들어오더라고요.

    1. OpenID Logo SUN+MOON 2009/11/12 20:44 # M/D Permalink

      윤드림님 간만에 들르셨군요
      사실 제가 너무 간만에 포스팅 한거라 :)

      저도 블럭 잡는 모양은 같은 생각인데 가끔 한줄일때
      해야 될지 말아야 할지 고민일때가 있어요.
      한줄이라도 명확히 하는게 좋을때도 있는거 같아서요.

      그나저나 구글 웨이브 쓰시던데.... 전 얼마전에 시작했지만
      도통 적응을 못하고 있다능

  2. heestory 2009/11/13 00:36 # M/D Reply Permalink

    저는 한줄은 블럭 안잡고..
    함수는
    function()
    {
    }
    if문은 조건이 여러개일 경우는 내리고 (구분이 잘 안되더라구요..)
    짧으면 붙이고;;

    써놓고 보니 멋대로네요..하하;;;;

    1. OpenID Logo SUN+MOON 2009/11/14 16:42 # M/D Permalink

      if의 조건이 길어 지게 되면
      것도 참 신경 쓰이더군요. 조건을 여러개가
      되지 않도록 하는게 전후 흐름상에도
      좋은거 같은데... 그게 말처럼 쉽지 않으니 말이죠 :)

  3. yubi 2009/11/14 10:57 # M/D Reply Permalink

    안녕하세요.^^

    저도 블록에 대해서 고민을 많이 했는데...ㅋㅋ

    한줄 정도면 블록 안하고 넘어가게되면 왠지 통일성이 안맞는거 같은....

    왜 나는 블록 안쳐줘요? 하고 코드가 되묻는 느낌을 지울수가 없어서...

    저는 무조건 블록을 합니다....

    모든 코드는 평등하다는 의미로..ㅡㅡ;;;

    너무 이상하죠?ㅋㅋㅋ

    1. OpenID Logo SUN+MOON 2009/11/14 16:44 # M/D Permalink

      한줄의 블록들은 거의
      안하기 마련인데..
      말씀 처럼 안해도 뭔가 깔끔하지 않다는;;

      '모든 코드는 평등하다는..'
      가슴에 퐉 와 닿는데요 :)

Leave a comment
« Previous : 1 : 2 : 3 : 4 : 5 : 6 : ... 121 : Next »

블로그 이미지

낭만 지향 프로그래밍을 꿈꾸는 SUN+MOON 의 블로그 ~

- SUN+MOON

Calendar

«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
Creative Commons License

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.