자유게시판

코딩스텐다드.

2017.08.24 01:33
197
0

개발자는 각자의 코딩스텐다드가 있습니다.

대부분의 사용하는 코딩스텐다드는 각자의 스타일 및 기준이 있기 때문에 이렇게 써라고 강요하기가 어렵습니다.

 

다만 회사나 프로젝트를 운영하는 사람들의 입장에서는 이러한 코딩스텐다드가 필요합니다.

 

이러한 코딩스텐다드가 없다면 아주 중요한 이슈 문제가 발생되기도 합니다.

 

일전에 Open ssl 에서 브레이스실수로 취약점에 노출되었던 점이 있었습니다.

아래의 실제코드가 아닙니다 (그냥 예시로..)

ex)

 

if (openssl.setting == '블라블라')

    openssl.start();

    openssl.hacking();

 

이렇게 코딩 되어있습니다.

 

일반 개발자의 입장에서는 if문안에 마지막 3번째까지 들어가고 블라블라가 안맞으면 openssl.hacking() 부분까지 실행하지 않겠다고 가끔 오해를 하는 경우가 있습니다.

 

이 부분의 실수는 if문 조건에 해당되는 코드는 openssl.start() 까지입니다. 그래서 블라블라에 해당되지 않는 모든 실행에서 hacking 이 실행이 되어서 취약점이 발생되었던 항목입니다. (예시코드 기준으로 설명드리는것입니다. 실제로는 이코드의 취약점이 아닌점입니다.)

 

즉, 이렇게 실수할 수 있기 때문에 Rhymix ( https://github.com/rhymix/rhymix ) 는 다음과 같이

 

if(블리블라) 블라블라;

 

와 같은 코드를 허용하고 있지 않습니다.. (코딩컨벤션 참고 https://github.com/rhymix/rhymix/blob/master/CONTRIBUTING.md#코딩-규칙)

 

전체적으로 모두에게 코딩스텐다드를 강요할 수 없지만 코딩 스텐다드는 있어야 하고 그 규칙이 있으면 이유 불문하고 그 프로젝트에서는 따라야 하는게 맞는 것 같다는 생각을 요즘 계속 하게 됩니다.

 

요즘 계속 실력을 올리고 싶어서 태크니컬적인 부분을 계속 공부해보고 있는데, 이런 부분도 무시할 수 없어서 한번 글을 적어보았습니다. :) 여러분들이 사용하시는 코딩스텐다드가 있나요?

 

 

람보 Lv. 17

댓글 11

  • 2017.08.24 01:37 #709721
    좋은 글입니다
  • 2017.08.24 01:44 #709742
    공감가는 글이네요!
    저는 늘 가독성을 생각하며 코딩을 하는데 이유가 에러 찾기가 수월하게 하기 위해선데
    제 주변에는 아직 학생들이다 보니 신경 쓰지 않아서 가끔 문제 생기면 도와주기가 힘드네요 ㅎㅎ
  • GG
    2017.08.24 03:49 #709808
    개인적으로 줄바꿈해서 라인수 늘어나는걸 안좋아해요.
  • 2017.08.24 05:04 #709897
    굳이 스텐다드를 바꿔가면서 코딩할 필요는 없지요 :)
  • GG
    2017.08.24 07:59 #710100
    내가 사장이니까 직원들이 저한테 맞추겠죠??? ㅋㅋㅋ
  • 2017.08.24 04:21 #709838
    전 https://www.drupal.org/docs/develop/standards/coding-standards 이 방식을 사용합니다.
  • 2017.08.24 04:36 #709862
    잘 배웠습니다.

    if 다음에 중괄호 쓰는 것,
    마지막에 ?> 를 쓰지 않는 것,
    ==이 아니라 === 쓰는 것,

    한번 시간 내서 싹 바꿔야겠네요^^
  • 2017.08.24 05:11 #709910

    if다음에 브레이스(중갈호)를 여는 이유는 간단합니다.

    if다음에 i자 바로 아래에 브레이스을 열음으로써 닫는 위치와 여는 위치가 위아래 대칭이 되지요.

    이렇게 대칭이 되는것에 우리눈은 찾는것이 쉽게 찾을 수 있어서 이 if의 값들은 아 여기까지구나

    이 if들의 값은 여기까지구나 하고 쉽게 파악이 가능해서이에요.

    각자 적응한 방법대로 코딩스탠다드를 쓰면되요 :)

    == === 를 쓰는 이유는
    intval, strval 처럼 하나의 정수 혹은 스트링값으로 변환되어서 그 스트링끼리 맞는 값인지 아닌지..를 확실하게 검사하도록 하여 실수를 방지할 수 있도록 하는거지요.

    eX)
    <?php
    $a = '1';
    $b = 1;

    if($a !== $b)
    {
    echo '지금은 같지 않아요';
    }

    if(intval($a) === intval($b))
    {
    echo '지금이렇게 해야 같아요';
    }

    if(strval($a) === strval($b))
    {
    echo '지금도 같아요!';
    }

    if(intval($a) !== strval($b))
    {
    echo '지금은 틀리죠..';
    }

    대략 이렇게 검사하기 위해서 쓰는거고..
    if($a == $b)
    {
    echo '이렇게 하면 같아요';
    }

    이런 차이인거죠 ㅎㅎ

    그냥 자체적으로 숫자비교 == 으로만 해도 불필요하게 정수가 넘어오거나 그런경우가 없다면 == 만 써도 무관해요 :)

  • 2017.08.24 05:24 #709927
    true, false, null처럼 특수한 값과 비교할 때는 === 사용이 필수죠.
    ==으로 비교하면 0도 false고 ''도 false고 null도 false고 array()도 false이니
    도대체 구분이 안 돼서... ㅎㅎ
  • 2017.08.24 05:25 #709931
    아 이런 이유도 있죠 :) ㅎㅎ
  • 2017.08.29 00:15 #713875
    저같은 경우 세부적인 변수,메서드,클래스
    네이밍룰을 포함한 개발표준안 만들고
    이클립스 같은경우 formatter 파일도 함께
    배포하여 관리합니다.
    그래도 표준 안지키고 멋대로 코딩하는
    분들이 꼭 있는데..
    코드리뷰를 통해 개발 표준을 지키도록
    유도하는 팀리더의 의지가 중요한 것 같아요.