문제

C 코드를 다음과 같이 형식화하면 어떤 이점이 제공됩니까?

while(lock_file(lockdir)==0)
    {
    count++;
    if(count==20)
        {
        fprintf(stderr,"Can't lock dir %s\n",lockdir);
        exit(1);
        }
    sleep(3);
    }
if(rmdir(serverdir)!=0)
    {
    switch(errno)
        {
        case EEXIST:
            fprintf(stderr,"Server dir %s not empty\n",serverdir);
            break;
        default:
            fprintf(stderr,"Can't delete dir %s\n",serverdir);
        }
    exit(1);
    }
unlock_file(lockdir);

다음과 같은 보다 일반적인 것과 비교하여

while(lock_file(lockdir)==0) {
    count++;
    if(count==20) {
        fprintf(stderr,"Can't lock dir %s\n",lockdir);
        exit(1);
    }
    sleep(3);
}
if(rmdir(serverdir)!=0) {
    switch(errno) {
        case EEXIST:
            fprintf(stderr,"Server dir %s not empty\n",serverdir);
            break;
        default:
            fprintf(stderr,"Can't delete dir %s\n",serverdir);
    }
    exit(1);
}
unlock_file(lockdir);

나는 최상위 버전이 읽기 어렵고 긴 블록 외부의 명령문, 특히 여러 중첩 블록이 포함된 긴 블록의 경우 올바른 들여쓰기 수준을 얻는 것이 어렵다는 것을 알았습니다.

내가 볼 수 있는 유일한 이점은 당신이 작성한 코드에 지문을 남기는 것과 다르다는 것입니다.

상단 케이스를 처리하려면 vim 형식을 직접 작성해야 한다는 것을 알았습니다.

도움이 되었습니까?

해결책

일부 형식 지정 및 주석 작성 표준을 따르면 무엇보다도 먼저 귀하가 작성한 코드를 읽고 편집할 다른 사람들에 대한 존경심을 표시할 수 있습니다.규칙을 받아들이지 않고 난해한 코드를 작성하면 다른 사람(프로그래머)과 효과적으로 통신할 수 없게 될 가능성이 가장 높습니다.소프트웨어가 귀하에 의해서만 작성되고 누구도 읽을 수 없을 것으로 예상된다면 코드 형식은 개인적인 선택입니다. 그러나 한 사람만이 작성하는 최신 소프트웨어는 몇 개입니까?

다른 팁

가장 좋은 예는 "Whitesmiths 스타일"로 알려져 있습니다. 들여쓰기 스타일에 대한 Wikipedia 항목 여러 스타일의 장점과 단점을 설명합니다.

아무것도 아님.들여쓰기 및 기타 코딩 표준은 선호 사항입니다.

지금 보시는 들여쓰기는 화이트스미스 스타일.의 첫 번째 판에 설명되어 있습니다. 코드 완성 "시작-끝 블록 경계"로 사용됩니다.이 스타일에 대한 기본 주장은 C(및 Pascal)와 같은 언어에서는 if 단일 명령문이나 블록을 관리합니다.따라서 내용뿐만 아니라 전체 블록이 하위에 표시되어야 합니다. if-일관되게 들여쓰기를 통해 진술합니다.

XXXXXXXXXXXXXXX       if (test)
   XXXXXXXXXXXX           one_thing();

XXXXXXXXXXXXXXX       if (test)
   X                     {
   XXXXX                 one_thing();
   XXXXX                 another_thing();
   X                     }

내가 이 책을 처음 읽었을 때(90년대) "시작-끝 블록 경계"에 대한 주장이 설득력이 있다는 것을 알았습니다. 하지만 실제로 적용했을 때(파스칼에서) 별로 마음에 들지 않았습니다.나는 C를 훨씬 덜 좋아하고 읽기가 혼란스럽다고 생각합니다.결국 나는 Steve McConnel이 "순수 블록 에뮬레이션"이라고 부르는 방법을 사용하게 되었습니다(Sun의 자바 스타일, 이는 거의 K&R).

XXXXXXXXXXXXXX X      if (test) {
   XXXXXX                one_thing();
   XXXXXX                another_thing();
X                     }

이것은 Java 프로그래밍에 사용되는 가장 일반적인 스타일입니다(제가 하루 종일 하는 일입니다).역시 내꺼랑 제일 비슷해 이전 언어 이는 "에뮬레이션"이 필요하지 않은 "순수 블록" 언어였습니다.단일 명령문 본문이 없으며 블록은 제어 구조 구문에 고유합니다.

IF test THEN
   oneThing;
   anotherThing
END

제가 보기에는 꽤 표준적인 것 같습니다.개인적으로 변경할 수 있는 유일한 변경 사항은 중괄호를 다음 줄의 시작 부분이 아닌 이전 줄의 시작 부분에 맞추는 것입니다. 그러나 이는 개인적인 선택일 뿐입니다.

어쨌든, 여러분이 보고 있는 형식 지정 스타일은 C 및 C++에 대한 표준 스타일이며 코드를 더 쉽게 읽을 수 있도록 하고 특히 들여쓰기 수준을 보면 현재 위치를 알 수 있기 때문에 사용됩니다. 중첩 루프, 조건문 등예:

if (x == 0) 
{
  if (y == 2)
  {
    if (z == 3)
    {
       do_something (x);
    }
  }
}

그 예에서는 무슨 일이 일어나고 있는지 쉽게 알 수 있지만 if 문 안에 많은 코드를 넣으면 일관된 들여쓰기 없이는 현재 위치를 파악하기 어려울 수 있습니다.

귀하의 예에서, exit(1) 문의 위치를 ​​살펴보십시오. 그렇게 들여쓰기되어 있지 않으면 이것이 어디에 있는지 알기 어려울 것입니다.그대로, 큰 if 문의 끝에 있다는 것을 알 수 있습니다.

개인적 취향은 어떨까?코드 블록이 하나의 수직선에 있어서 한 눈에 알아보기가 더 쉬울 것 같은데요?개인적으로 나는 중괄호가 이전 줄 바로 아래에서 시작하는 것을 선호합니다.

코드 형식은 개인 취향입니다.읽기 쉽다면 유지 관리 비용도 지불할 것입니다!

그것은 또 다른 스타일입니다. 사람들은 코딩하고 싶은 방식으로 코딩하며 이는 허용되는 스타일 중 하나입니다(비록 제가 선호하는 것은 아니지만).괄호는 들여쓰기되지 않지만 그 안의 코드는 들여쓰기되는 일반적인 스타일에 비해 큰 단점이나 장점이 있다고 생각하지 않습니다.아마도 코드 블록을 더 명확하게 구분한다고 말함으로써 이를 정당화할 수 있을 것입니다.

이 형식이 "이점"을 갖기 위해서는 비교할 다른 형식의 동등한 C 코드가 필요합니다!

제가 작업하는 곳에서는 자체 개발한 접기 편집기 메커니즘을 용이하게 하기 위해 이 들여쓰기 방식을 사용합니다.

따라서 나는 이 형식에 근본적으로 잘못된 것이 없다고 생각합니다. 특정한 합리적인 한계 내에서 형식 지정은 개인 취향의 문제입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top