탭과 공백 — 모든 상황에서 모든 상황에 적합한 들여 쓰기 특성은 무엇입니까? [닫은]


84

drupal.org에 호스팅 된 코드의 코딩 표준은 코드를 들여 쓰기 위해 두 개의 공백을 사용하도록 제안합니다. 다른 사이트에서는 탭을 사용하여 코드를 들여 쓰는 것이 좋습니다.

모든 상황과 모든 상황에 적합한 들여 쓰기 특성은 무엇입니까? 당신이주는 대답을 설명하십시오.



13
IDE 기본 FTW – 탭 키를 누르고 어떤 일이 발생하는지 확인하십시오
user281377

무엇을 선택하든 팀 전체가 사용해야하지만 다른 사람이 탭을 사용할 때가 아닌 다른 공간을 사용해야합니다.
제자

1
탭 / 공백이 코드를 들여 쓰기하는 유일한 방법이라는 의미를 수정하기 위해이를 편집하려고했습니다. 편집 내용은 제거되었지만이 주석은 그대로 유지됩니다. 들여 쓰기 문자 대신 왼쪽 여백을 대신 사용하지 않겠습니까? -이것은 에디터에 의해 완전히 자동화 될 수 있으며 워드 프로세서는 수십 년 동안 이것을 해왔습니다.
pgfearo

4
나는 여기에 "허용 된"대답이 있어야한다고 생각하지 않습니다. 더 적은 표를 얻은 답이 실제로 첫 번째라는 사실은 그 사실에 대한 증거입니다. 왜 질문자는 왜 질문을했기 때문에 왜 특별한 힘을 얻어야합니까 (즉, 가장 좋아하는 답을 먼저 넣을 수 있어야합니까)?
Dean Harding

답변:


129

공백

환경에 따라 탭은 다른 수의 열이 될 수 있지만 공백은 항상 하나의 열입니다.

들여 쓰기를 구성하는 공백 (또는 탭)의 수와 관련하여 특정 탭 중지 값을 사용하는 것보다 코드 전체에서 일관성을 유지하는 것이 더 중요합니다.


42
두 번째 단락이 잘못되었습니다. 답은 4입니다!
데니스

5
@Daenyth-아마도 당신이 중괄호 언어를 사용하고 있다면. 대부분의 파스칼 / 델파이는 2를 사용합니다.
Gerry

72
TAB을 동적으로 설정하고 단일 수준의 들여 쓰기를 표시 할 수있는 경우 왜 2 또는 4 개의 들여 쓰기 공간을 사용해야합니까?
Jé Queue

3
@MGOwen 웹 사이트 코딩의 다운로드 시간 인수는 요즘 CSS / javascript의 소스 축소 및 HTML의 공백 제거를 사용하여 쉽게 해결할 수 있습니다. 무슨 뜻인지 mod_pagespeed를 참조하십시오.
Evan Plaice

42
"탭은 환경에 따라 다른 수의 열이 될 수 있습니다."예, 이것이 바로 이점입니다. 누구나 자신의 취향에 맞게 설정하고 행복 할 수 있습니다.
안드레아

249

물론 일관성은 둘 이상의 문제가되며 IDE가 우수하면 차이점을 무시할 수 있습니다. 즉,이 스레드의 요점은 거룩한 전쟁이어야한다는 것입니다.

나는 탭을 선호합니다 :

  • 그들은 들여 쓰기를 위해 특별히 고안된 캐릭터입니다.
  • 들여 쓰기 크기가 다른 환경 설정을 가진 개발자는 코드를 변경하지 않고 코드의 모양을 변경할 수 있습니다 (데이터 분리 및 격렬한 승리를위한 프레젠테이션)!
  • 탭으로 무언가를 반 들여 쓰기는 불가능합니다. 따라서 3 개의 공백을 사용한 일부 웹 사이트의 코드를 4 칸 들여 쓰기 파일로 복사 할 때 정렬 오류를 처리 할 필요가 없습니다.

12
3 칸 들여 쓰기 코드를 탭 들여 쓰기 파일로 복사하는 방법은 무엇입니까? 탭을 3 칸으로 설정했습니다. 당신의 동포들에게 당신의 코드를 보낼 때 그들은 그 함수가 왜 그렇게 나쁜 들여 쓰기를했는지 궁금하게 생각합니다!
Wayne Werner

27
탭은 원래 들여 쓰기를위한 것이 아니며, 테이블을 위한 것이며, 그 일에서 두려운 일을합니다 ...
Timwi

14
@Timwi : Wikipedia 는 커서를 다음 고정 열 집합으로 이동시키기위한 것 같습니다. 표가 주요 기능인 것 같지 않습니다. 또한 포스트 타자기 시대를 언급하고있었습니다.
Fishtoaster

40
또한 많은 프로그래머들이 html, CSS 등을 작성하는 데 상당한 시간을 소비합니다. 탭 대신 4 개의 공백이있는 파일이 5-15 % 더 크다는 사실은 실제로 중요합니다. 예 :이 페이지는 현재 SE 팀이 space를 사용했기 때문에 현재 페이지보다 최소한 10 % 느리게로드되었습니다 . 스스로 확인하십시오.
MGOwen

23
이 방법의 또 다른 이점-왼쪽 탐색에 화살표 키를 사용할 때 키 누름이 줄어 듭니다.
니콜

117

탭을 사용하여 줄의 시작 부분을 들여 쓰고 들여 쓰기 수준 당 한 개의 탭을 만들고 모두가 원하는 너비를 선택할 수 있도록합니다.

안에 문자를 정렬하려면 공백을 사용 하여 탭 크기에 관계없이 항상 줄을 정렬하십시오.

그리고이 어리석은 일이 처음부터 문제가되게했던 초기 소프트웨어 제작자를 모두 찾아서 펀치하십시오.
(이것이 왜 논의 된 것입니까? 다음에 줄 바꿈에 여러 문자를 사용하고 싶다고 말할 것입니다!)


33
예 예 예 예 예 백퍼센트 그렇습니다. 따라서 모든 사람들이 탭 형식을 유지하면서 자신의 탭 너비를 설정할 수 있습니다. 80 열 이내로 유지하는 것이 걱정된다면 (아마도!) 임의의 최대 예상 탭 크기 (예 : 4)를 선택하고 해당 너비의 탭 여백 내에 유지하십시오. 솔직히,이게 그렇게 어려운가요?
Jon Purdy

예, 그러나 한 줄 안에 공백을 사용하지 마십시오. 동료가 비례 글꼴을 사용하여 ASCII 아트가 화면에서 이상하게 보일 수 있습니다.
paperjam

3
이것은 정답입니다
J.Ashworth

76

  • 실수를 더 눈에 띄게 만들면 공간을 미세하게 관리하는 것이 귀찮습니다.
  • 일관성 이 있으며 잘못 설명하지 않는 한 들여 쓰기에만 사용됩니다.
  • 사용자 정의 할 수 있습니다 , 당신은 그들이 얼마나 넓은 편집기의 옵션에 지정할 수 있습니다.
  • 더 생산적 이므로 1 탭을 누를 수있는 경우 4 개의 공백을 입력하십시오.
  • 여러 공간보다 크기가 적습니다.
  • 공간보다 더 많은 공간을 차지하십시오.
  • 통과하는 데 걸리는 시간이 줄어 듭니다 .
  • IDE에서 더 잘 작동하는 경향이 있습니다.

탭이 완전히 쓸모없는 곳에 공백을 사용해야합니다.

매개 변수와 주석을 정렬하더라도 탭이 여전히 더 잘 작동 합니다.


24
wrt "보다 생산적"인 개인적으로 TAB을 누르고 IDE에서 적절한 수의 공백 문자를 변환하도록 IDE에 허용했습니다. 아마도 업그레이드해야 할 수도 있습니다 : p?
Matthieu M.

3
-1 : 더 눈에 띄는 실수 : 사실이 아닙니다. 일관성 : 거의 사용자 정의 할 수 없기 때문에 : 예, 그러나 동시에 단점이기도합니다. 생산성 향상 : 사실은 아니지만 사실상 모든 아이디어는 탭을 공백으로 변환 할 수 있습니다. 적은 크기 : 예, 그러나 실용적입니까? 아니; 더 적은 시간 : 합리적인 IDE가없는 경우; 여러 환경과 도구를 사용하는 경우 전혀 작동하지 않음
MaR

@MaR : 눈에 띄는 실수는 사실이며 탭의 너비는 더 큽니다. 또한 ... 파이썬! 탭은 하나의 탭이 들여 쓰기이므로 일관성이있는 반면 들여 쓰기에 사용할 공간 수를 정의해야합니다. 사용자 정의는 장점입니다. 처음에는 탭을 사용하므로 생산성이 향상됩니다. 왜 그것이 비현실적이며, 증오가 미워할 지에 대한 좋은 추론조차 할 수없는 것 같습니다 ...;)
Tamara Wijsman

@ TomWij : 탭이 같은 수의 공백보다 어떻게됩니까? 파이썬은 사실상 탭을 안전하게 사용할 수있는 공백이있는 유일한 언어입니다 (그러나 여전히 "삽입 공간"에 비해 이점이 거의 없습니다). 다른 언어, 레거시 환경, diff / merges, 터미널, scc를 사용해도 왜 탭이 여전히 "이상적인"이유인지 확인하십시오.
MaR

@MaR : '동등한 수의 공간'을 어디에 기술 했습니까? 나는 모든 것을 시도했지만 탭은 완벽하게 작동합니다!
타마라 Wijsman

41

탭에 대한 모든 주장은 이론적으로 훌륭합니다. 그러나...

이론적으로는 실천과 이론이 동일합니다. 실제로는 그렇지 않습니다.

예, 탭을 사용하면 들여 쓰기 수준을 결정할 수 있습니다. 예, 탭과 공백을 조합하여 사물을 정렬 할 수 있습니다. 이상적인 세상에서는

실제로 공백과 탭의 차이점을 볼 수 없으며 코드를 이동할 때 항상 혼합되는 것처럼 보이며 탭이 8 열로 설정된 다른 프로그램에서 코드를 보는 것이 번거 롭습니다.

나는 탭을 사용했다. 그런 다음 팀의 일원으로 일하고 코드를 공유하기 시작했습니다. 나는 공간의 제안자가되었다. 그래서 탭의 유토피아에 동조 할 수는 있지만 공백을 사용하지 않는다고 상상할 수는 없습니다.


6
Kate와 같은 편집기를 사용하여 탭에 '고스트'문자를 표시 할 수 있습니다. 코딩 할 때 탭과 공백을 쉽게 볼 수 있습니다.
HorusKol

8
모든 편집기에는 "white space"옵션이 있으며 Visual Studio에는 'tabify'옵션이 있습니다
Chris S

2
좋은 주장. 그것이 사람들에게 탭이 더 논리적이라는 것을 설득하려고 포기한 이유입니다. 사고를 추상화하는 데 익숙해야하는 프로그래머조차도 탭과 공백을 혼동하는 것 같습니다 ( "네 개의 공백처럼 보이는 경우에는 반드시 네 공백이어야합니다!"). 관의 손톱은 Emacs가 탭으로 만 들여 쓰도록 구성하는 것이 불가능한 것 같습니다.
Martin Vilcans 2016 년

3
+1 탭 유토피아는 훌륭하지만 탭 너비가 다른 편집기간에 코드를 이동할 때마다 코드가 엉망이되었습니다. 탭으로 잘못된 것을 자동으로 수행하는 것은 너무 쉽습니다.
Mankarse

탭도 사용했지만 연속 줄에 공백을 삽입 할 수없는 일부 IDE에서 문제가 발생했으며 자동 삽입 탭을 모두 공백으로 바꾸는 것을 싫어했습니다 (Visual Studio는 그 중 하나였습니다). 그래서 나는 단지 공백을 고수했습니다. 또한 공백을 사용하면 public:C ++ 클래스 선언 과 같이 반 크기의 들여 쓰기를 사용하여 더 아름답게 보입니다 (특히 중첩 클래스의 경우).
szx

31

105
당신이 유명하기 때문에 당신을 옳게 만들지는 않습니다
Jé Queue

@ Xepoch : 당신은 그들의 이론적 근거를 읽었습니까 :)?
Matthieu M.

5
@Matthieu M., 예, 나는 각각 읽었지만 여전히 동의하지 않습니다. 나는 올리브도 좋아하지 않지만 다른 사람들이 있기 때문에 나를 잘못하지 않습니다. 사람들이 들여 쓰기를 위해 탭을 사용하지 않는 것이 우스운 일이지만, 이것이 그들이 CS를 거룩한 전쟁이라고 부르는 이유입니다.
Jé Queue

2
@Xepoch : 예, 모든 사람이 자신의 의견을 가질 자격이 있다고 생각합니다. :) Guido가 주요 문제를 지적했다고 생각하지만 탭과 공백을 혼합하는 것은 사용자에게 "빈 공간"으로 표시되기 때문에 악의적입니다.
Matthieu M.

3
@Fishtoaster : Joel이 공백이라고 말하면 실제 Joel 인용과 연결되어서는 안됩니까? 링크는 JoelOnSoftware 포럼으로 이동하여 일부 ppl (대부분 Joel을 위해 말하지 않을 가능성이 있음)은 탭과 공백을 논의합니다.
Andreas Magnusson


20

난 절대적으로 미움. 4. 공백.

왜? 주로 키보드로 코드를 탐색 left left left left하고 하나의 들여 쓰기를 다루기 위해 끊임없이 충돌 해야 하기 때문에 피곤 합니다. 이것은 메모장 + +의 초기 버전과 심지어 포맷 버튼과 같은 것이없는 일반 Windows 메모장에서 태어났습니다. 다른 곳에서 4를 사용했을 때 사람들이 3을 사용할 때 많은 문제가있었습니다.

다른 이유는 탭 문자 가 들여 쓰기를 위해 특별히 존재 하고 나중에 탐색에만 채택 되었기 때문입니다. space space space space단순한 tab것이 효과가 있을 때 우리는 왜하고 있습니까? 간단한 탭과 환경 설정 옵션이 작동 할 때 IDE에서 2-5 간격의 코드와 형식을 올바르게 처리해야하는 이유는 무엇입니까?

불행히도 나는 소수입니다.


31
키보드 코드 탐색이 비효율적입니다. 공백과 토큰을 건너 뛰려면 CTRL + LEFT 및 CTRL + RIGHT를 사용해야합니다. 따라서 들여 쓰기는 중요하지 않습니다.
Wizard79

7
이 오해는“탭은 특별히 들여 쓰기를 위해 존재한다”는 데서 오는 것입니까? 탭은 들여 쓰기가 아닌 테이블 용으로 개발 되었기 때문에 탭 (탭 레이터)이라고 하며 두 가지 모두에서 두려운 작업을 수행합니다.
Timwi

7
@Lorenzo : 키보드 코드 탐색이 비효율적입니다. 공백 및 토큰을 건너 뛰 려면 wb(또는 ege)를 사용해야합니다 .P
R. Martinho Fernandes

6
악의적 인 옹호를 위해 : 열등하다고 생각하는 편집자에게 잘못된 형식의 코드를 적용하지 마십시오. 탭을 사용하십시오.
Jon Purdy

11
@Timwi : necro에 죄송하지만 컴퓨터 탭 키는 표를 위해 발명되지 않았습니다. 해당 키의 TYPEWRITER 버전은 컴퓨터에서 사용하기 위해 키보드가 발전함에 따라 탭 키는 탭 이상의 들여 쓰기에 사용되었으며 "탭"이라는 용어는 들여 쓰기와 동의어가되었습니다. 컴퓨터 탭은 들여 쓰기를해야하며, 키 이름은 타자기 이름과 일치해야합니다. 당신의 주장은 컴퓨터 리턴 키가 새로운 줄을 시작하고 커서를 맨 왼쪽으로 이동시키기위한 것이라고 주장하는 것과 비슷합니다. 그것이 타자기의 목적 이었기 때문입니다. :
Beofett

12

각 개발자가 탭 당 들여 쓰기 양을 제어 할 수 있기 때문에 개인적으로 모든 것에 탭을 사용하고 싶습니다. 그렇게하면 디스플레이의 유연성을 얻을 수 있습니다.

즉, 유지 관리 작업을 수행하는 데 많은 시간을 소비하기 때문에 일반적으로 파일에 코딩 스타일이 무엇이든 모방합니다.


3
명령문 중첩 이외의 것을 들여 쓰기 시작하면 중단됩니다. 예를 들어 같은 열에 함수 인수를 한 줄에 하나씩 정렬하려면 탭과 공백을 혼합하여 가능하지만 매우 지루합니다.
finnw

2
그것은 지루하지 않습니다. 왜냐하면 대부분의 방법을 탭한 다음 오른쪽 열에 도착하기 위해 수십 개의 공백을 입력하는 대신 몇 개의 공백을 사용할 수 있기 때문입니다.
Jordan Reiter

1
@finnw는 모든 사람이 고정 폭 글꼴을 사용한다고 가정합니다. 2012 년에는 상당수의 개발자가 비례를 사용합니다. 첫 번째 인수의 왼쪽에 공백이 아닌 문자가 있으면 후속 행의 인수가 모든 사람에게 정렬되도록 보장 할 방법이 없습니다.
paperjam

HAML 작성을 시도한 적이 없습니다.
alt

2
나는 이것을 말하기를 싫어하지만 가변 너비 글꼴로 프로그래밍하는 것을 상상할 수 없습니다. 깎아 지른듯한 그름 그것의 공백, 모든 대 중괄호 표준, 탭 왜소 ... 난 그냥 옛날는 무엇입니까? (행과 열 번호가 포함 된 오류 메시지가 표시되면 어떻게됩니까?)
lunchmeat317

10

나는 적절한 들여 쓰기 (적어도 사소한 전쟁이없는 것은 아님)와 같은 것이 있다고 생각하지 않습니다.

개인적으로 나는 네 개의 공간을 좋아합니다. 그들은 훨씬 더 빨리 코드를 읽을 수있게 해주 었으며 모든 편집기에서 심지어 Vi까지 동일하게 보입니다.


9
VI (또는 오히려 정력) 탭 작업뿐만 아니라 탭 폭을 설정하고 자동으로 공간을 확장 할 수있는을위한 더 나은 편집자 중 하나입니다 (대부분의 편집자 같이 할 수있는) 당신은 또한이 softtabstop옵션과 retabretab!명령을.
finnw

우리가 언제 어디서나 4 개의 공간을 말하고 선택의 여지가 없다면 아기가 실제로 죽을 까요?
MGOwen

2
4 개의 공간은 어디에서나 동일하게 보이지 않습니다. 더 많은 프로그래머들이 이제 더 즐겁고 생산적인 코딩 경험을 위해 IDE에서 비례 글꼴을 선택하고 있습니다. 이 상황에서는 4 개의 공간이 아주 작은 들여 쓰기처럼 보일 수 있습니다.
paperjam

8

공백은 주석을 코드의 오른쪽, 함수 매개 변수 목록, 복잡한 여러 줄 표현 또는 그 성격에 맞출 때 아름다운 작품이 모든 사람에게 올바르게 나타나기를 원하기 때문 입니다. 탭을 사용하고 사람들이 탭 스톱을 다르게 설정하도록 허용하면 가장 단순한 코드 들여 쓰기 사례를 제외하고 정렬이 중단됩니다.

게다가, 전 세계의 모든 사람들이 vim을 사용해야한다는 것이 명백히 명백합니다. 이는 공간 들여 쓰기 파일에서도 "탭 정지"를 들여 쓰기, 들여 쓰기 및 탐색이 쉽지 않습니다.


그것은 많은 편집자들에게 정말 유용한 기능입니다.
Christian Mann

18
코딩 대신 ASCII 아트를 그리는 것처럼 들립니다.
rmac

3
나는 덧붙일 것이다 : 탭은 정렬을 위해 사용되지 않아야한다. 탭 사용자이고 정렬하려는 경우 먼저 들여 쓰기를 위해 올바른 양의 탭을 입력 한 다음 정렬을 위해 올바른 공간을 입력해야합니다. 그래야만 모든 사용자와 편집자에게 탭 형식 코드가 표시됩니다.
MaR

6

탭은 정의에 따라 들여 쓰기에 사용되는 자연스럽고 정통적인 선택입니다.

불행히도 탭은 고르지 않게 구현되므로 실제 솔루션은 4 개 공간뿐입니다.


8
"정의에 따라"들여 쓰기에 탭 (tabulator)이 사용 된 이후는 언제 입니까? 그들의 정의에 의해 그들은 표를 위해 발명되었습니다 ( 심지어 그들도 끔찍한 일을하지만).
Timwi

2
기술적으로 리턴 키는 타자기 헤드를 줄의 앞쪽으로 이동시키는 반면, 다음 줄로의 이동은 롤러를 회전하여 수행되었습니다. 나중에 리턴 키도 자동으로 롤러를 전진시킵니다. 그러나 사람들이 모두 리턴 / 엔터 키에 매달린 것을 보지 못합니다. 들여 쓰기를 수행하기 위해 탭 키가 컴퓨터에 명확하게 추가되었습니다. 탭 스톱의 디지털 아날로그로, 오래된 비 전기 타자기에서 사용했습니다. 탭 멈춤 장치는 롤러를 사용자가 선택한 임의의 위치로 이동하도록 설정할 수 있으며 탭 키의 현재 압입 역할과 거의 동일합니다.
Jordan Reiter

@JordanReiter RE : "반환 / 엔터 키에 매달린 사람이 보이지 않습니다.": CR (타자기 헤드를 줄의 앞쪽으로 이동 함) / LF (롤러 회전을 나타냄) 다음 줄) 문제?
맥스 나나시

1
예, 그러나 이것은 키보드 문제가 아닌 OS 문제입니다. 어떤 컴퓨터를 사용하든 Enter 또는 Return 키를 누르면 다음 링크로 이동합니다. 하나의 키를 사용하여 줄 바꿈을, 다른 하나는 캐리지 리턴을 발행하지 않습니다.
Jordan Reiter

4

당신은 분명히 조합 접근법이 필요합니다.

다른 개발자와 코드를 공유하는 경우 표준화해야하며, 불가능하기 때문에 (koff koff) 모든 사람이 4 개의 공백을 수행하도록해야합니다.

그런 다음 멍청하지 않을만큼 똑똑한 편집기가 필요합니다. 들여 쓰기 된 것처럼 앞면에 4 개의 공백이있는 줄을 처리해야한다는 것을 알고 있습니다. 최신 IDE 또는 프로그래머의 편집기는 탭 대신 공백이있는 코드를 자동 흐름시킬 수 있습니다.


4

누군가 이것을 구현할 수없는 이유는 무엇입니까?

  • 코드는 해당 시스템에 유리한 컴팩트 형식으로 저장됩니다
  • 각 개발자가 코드를 열면 원하는 방식으로 정확하게 형식이 지정됩니다.
  • 완료되면 컴팩트 형식으로 돌아갑니다.

모두 자신의 '자신의'형식을 볼 때 모두가 행복합니다

그렇게 어려운가요?


2
사람들이 사용하는 기존의 모든 편집기와 IDE를 고칠 수있는 자유 시간이 충분하지 않기 때문에 모든 사람이 업그레이드하도록 설득하는 것이 훨씬 더 어려울 것입니다.
Peter Boughton

SVN에 빌드하거나 최종 도구를 남길 수있는 다른 방법을 찾을 수 있다고 확신합니다.
아돌프 마늘

13
일종의 탭처럼 들립니다. 각 개발자는 파일을 열고 원하는 들여 쓰기 너비를 얻습니다.
rmac

1
indent프로그램 을 사용하도록 RCS 또는 CVS를 이미 설정할 수 있습니다 .
Jé Queue

3
그것은 재미 간격 아이디어의 devs되지 않도록 표준화를 foramtting / 코드 들여 쓰기를 강제로 들여 쓰기를 사용하는 신중한 비난 / 주석 모든 형식 변경
팀 Williscroft을

3

스페이스 또는 탭-Atwood가 실제로 말하는 것은 한 가지를 선택하고 프로젝트에서 일관성을 유지하는 것입니다. 코드 형식의 유일한 성배는 일관성을 유지하여 코드를 유지하는 정신병자가 상황을 영구적으로 해결해야한다고 느끼지 않도록하는 것입니다.

즉, 파이썬이나 공백이 실제 프로그래밍 구조 인 다른 언어로 작업하는 경우 탭을 사용한다고 상상할 수 없습니다.


4
탭을 사용합니다. 파이썬 프로그래밍을했는지 모르겠지만 중요한 것은 들여 쓰기입니다. 1 행이 x 들여 쓰기이고 2 행이 x + 1 들여 쓰기이면 더 많은 들여 쓰기로 간주됩니다. 들여 쓰기는 이중 공백, 4 공백, 탭일 수 있습니다. 일관성있는 한 중요하지 않습니다.
Macha

@Macha-피드백 감사합니다. 나는 파이썬 개발을 해 본 적이 없지만 탭을 사용하는 사람을 만나기 위해 공백을 사용한다고 말했습니다.
Noah Goodrich

3
직장에서 파이썬으로 탭을 사용합니다. 끔찍하다.
rhettg

3

나는 4 공간 종류의 사람입니다. 탭은 일관성이 없습니다.


5
그것들은 어떻게 "일관되지 않습니까"? 이들은 항상 단일 수준의 들여 쓰기를 나타내는 단일 문자입니다. 이것이 일관된 들여 쓰기 체계의 정의 입니다. (그리고 당신은 개인적으로, 다른 사람에게 영향을 미치지 않으면 서, 당신이 선택한 어떤 방법도 플러스 라고 시각적으로 표현할 수 있습니다 .)
Orbit in Light 궤도

3

분명히 탭은 Delphi에서 엉망이되어 델파이에서 탭을 사용하지 않습니다.

그러나 Emacs를 사용하여 다른 모든 작업을 수행하고 탭은 원하는 위치로 정확하게 이동하기 때문에 항상 탭을 사용합니다.


이에 대한 예를 제공 할 수 있습니까? 15 년 동안 델파이를 사용해 왔으며 이것을 본 적이 없기 때문에 솔직히 궁금합니다.
GrandmasterB

1
edn.embarcadero.com/article/10280#4.3 스타일 가이드 일 뿐이지 만 탭으로 인해 설명 할 수없는 이상한 오류가있었습니다. Visual Source Safe 때문일 수도 있습니다. 나는 그것을 설명 할 수 없다. 그것은 단지 우리 회사의 지식의 일부일 뿐이다.
피터 터너

1
문제는 일부 델파이 버전의 설치 기본값이 일반적인 델파이 이디엄과 일치하지 않는다는 것입니다. 따라서 BOTH가있는 코드로 끝납니다.
Gerry

3

정답은 모든 상황에 대해 하나의 적절한 들여 쓰기 문자가있을 수 없다는 것입니다. 문자를 사용한 형식 지정은 융통성이 없으며 팀 내에서 다른 스타일을 사용할 때 충돌이 발생할 수 있습니다.

다른 형식 지정 스타일로 코드를 완벽하고 유연하게 형식화하는 유일한 방법은 가상으로, 즉 들여 쓰기 문자없이 코드를 작성하는 것입니다. 이것을 지원하는 유일한 코드 편집기는 아래 샘플에서 사용되는 것입니다.

가상 서식 을 보여주기 위해 아래 스크린 샷은이 들여 쓰기 방법을 사용하는 XSLT 편집기 *의 것입니다 ( 여기 에는 짧은 비디오도 있음 ). XSLT의 모든 문자는 설명을 위해 내용의 탭 또는 공백 문자 만 선명하게 보이도록 노란색으로 강조 표시되었습니다. 코드 들여 쓰기는 왼쪽 여백 (흰색 배경)을 조정하는 편집기의 렌더링 시스템에서 처리합니다.

여기에 이미지 설명을 입력하십시오

Books 줄 앞에는 선행 공백 문자 만 있습니다. 이것은 코드가 아닌 리터럴 텍스트 내용이므로 공백 문자를 유지해야합니다.

가상 형식을 사용하면 소스 파일의 문자에 영향을주지 않으면 서 환경 및 들여 쓰기 스타일에 맞게 들여 쓰기 너비를 선택할 수 있습니다. 아래와 같이 코드를 평평하게 볼 필요가있는 경우 들여 쓰기 너비를 0으로 설정할 수도 있습니다.

여기에 이미지 설명을 입력하십시오

이를 공백 문자 형식과 대조하기 위해 가상 형식없이 편집기에서 열린 동일한 XSLT는 해당 편집기의 자동 형식기에 의해 다음과 같이 변환됩니다.

여기에 이미지 설명을 입력하십시오

위 스크린 샷에서 더 큰 빈 노란색 블록은 기존 편집기의 포맷터에 의해 추가 된 공백 문자를 명확하게 보여줍니다. 안타깝게도 이제는 실제 컨텐츠와 구별 할 수 없으므로이 문제를 해결하려면 XSLT를 수정해야합니다.

요약

XSLT는 극단적 인 경우 일 수 있지만이 원칙은 많은 프로그래밍 언어에 적용됩니다. 문자는 내용에 사용해야하고 형식화와 관련하여 다른 방법을 찾아야합니다.

** 공개 : 가상 형식의 XSLT 편집기는 내 회사에서 개발했습니다. *


1
슬프게도, 아마도 당신은 아마 당신의 시간보다 약 50 년 앞서있을 것입니다. 프로그램이 일련의 캐릭터라는 솔직한 말은 여전히 ​​대부분의 프로그래머의 마음에 깊이 뿌리 내리고 있습니다.
Tom Anderson

3

지금까지 언급되지 않음 : 들여 쓰기가 중요한 언어 (Python, Haskell)가 있습니다. 그러나 1 문자는 공백 또는 탭이므로 1 문자로 간주되므로 탭을 사용하는 경우 컴파일러에서 볼 수있는 들여 쓰기가 화면에 표시되는 들여 쓰기와 같지 않을 수 있습니다.

따라서 Haskell과 같은 언어에서는 공백이 필수입니다. Makefile에서 TABS는 필수입니다. 다른 모든면에서 그것은 개인적인 취향의 문제이며 현재는 별다른 문제가 아닙니다. 모든 괜찮은 편집자에게는 "(공백) 탭을 공백으로"및 "(공백) 공백을 탭으로"명령이 있습니다.


2

나는 공백을 사용했지만 최근에 탭을 사용했습니다. 왜냐하면 Eclipse가 마침내 눈에 띄게 설정 되었기 때문입니다. 우리 팀의 다른 모든 개발자는 Eclipse를 사용하므로 이미 오랫동안 사용하고 있으며 공간으로 변경할 필요가 없다는 것을 알았을 때 탭을 표준화하는 것이 합리적이었습니다. 문제가 아닌 것이 얼마나 놀랐습니다.

IDE에서 표시된 탭 크기를 3 또는 5 자로 설정하면 공백으로 들여 쓰기 된 코드 섹션 (거의 항상 4 일)과 탭으로 들여 쓰기 된 코드 섹션을 쉽게 구별 할 수 있습니다.


1

이미 많은 논란이 있었지만 앞으로 우리가 어디로 향할 수 있을지는 아무도 언급하지 않았습니다 .

탭이나 공백!

코드는 데이터로 간주하고 특정 텍스트 형식으로 저장해서는 안됩니다. 모든 개발자는 자신이 선호하는보기를 적용 할 수 있습니다. 또한이 뷰 는 text로만 제한되지 않아야 하지만 테이블, 색상 선택기 및 수학 공식을 포함 할 수 있습니다.

이 아이디어는 그리 멀지 않습니다. JetBrain의 언어 지향 프로그래밍 편집기 메타 프로그래밍 시스템 (MPS) 이 처음으로 이것이 전체 토론을 해결하고 동시에 많은 가능성을 추가한다는 것을 깨달았습니다. (그렇습니다. 에디터 플러그인을 사용하면 가능하지만 MPS 방식과 달리 텍스트 작업을 수행하면 불필요한 많은 복잡성이 직접 추가됩니다.)

탭과 공백과 달리 추상 구문 트리 에서 직접 작업 할 때 언급 할 수있는 단점은 거의 없습니다 . 필요한 것은 기술이 상업적으로 실행 가능한 제품으로 발전하기위한 것입니다. 이것의 첫 징후가 나타납니다. 상용 액션 스크립트 편집기 인 MPS를 기반으로 Realaxy 가 개발되었습니다.

저는이 기술의 개념을 뛰어 넘는 큰 선수 중 한 명을보고 어떤 일이 일어나는지보고 싶습니다!


0

어느 쪽도 좋지 않으며 나쁘지도 않습니다. 유일한 중요한 것은 일관성을 유지하는 것입니다.

당신이 하나의 팀이라면, 당신이 개인적으로 좋아하는 것을 고르십시오. 선호하는 편집기의 기본 동작을 고려하고 원하는 것을 선택하십시오.

팀원 인 경우 팀이하는 일을하십시오. 기간.

다양한 작업에서 두 ​​개의 공백, 네 개의 공백, 여덟 개의 공백, 탭, 공백 및 탭을 사용했는데 한 개의 공간도 사용했다고 생각합니다. 편집자에게해야 할 일을 말한 다음 다시 생각하지 않고 편집자가 세부 사항을 해결합니다.

다른 유일한 방법은 스마트 편집기를 선택하는 것입니다. 이맥스 또는 vi? 이제 그건 내가 :-) 싸울 기꺼이 거룩한 전쟁

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.