2012-11-21 3 views
14

PEP 8에 지정된 스타일 표준과 같은 스타일 표준을 사용하는 것이 좋습니다. 자동으로 체크하는 린터가 있는데, 분명히 제 코드가 훨씬 낫습니다.할당의 파이썬 정렬 (스타일)

PEP 8에는 단 하나의 점이 있지만 E251 & E221은별로 좋지 않습니다.

var var1  = 1234; 
    var2  = 54; 
    longer_name = 'hi'; 

var lol = { 
    'that'  : 65, 
    'those'  : 87, 
    'other_thing' : true 
}; 

을 그리고 내 소견,이 극적으로 가독성을 향상 : 자바 스크립트 배경에서오고, 나는 다음과 같은 변수 할당을 정렬하는 데 사용.

dictionary = { 
    'something':  98, 
    'some_other_thing': False 
} 

내가 할 수있는 정렬없이 변수 할당과 "라이브",하지만 난 돈 무엇을 '공간이 콜론 뒤에 허용되기 때문에 문제는이 사전을 통해 PEP (8)에 의해 DIS-권장, 나쁜되지이다 모두 같은 t은 다음과 같이 함수 호출에 지정된 인수를 전달 할 수없는 :

some_func(length=  40, 
      weight=  900, 
      lol=   'troll', 
      useless_var= True, 
      intelligence=None) 

그래서 나는 다음과 같은 사전을 사용하고 결국 무엇을 :

specs = { 
    'length':  40, 
    'weight':  900, 
    'lol':   'troll', 
    'useless_var': True, 
    'intelligence': None 
} 

some_func(**specs) 

을 아니면 그냥 mply

그러나이 문제는 PEP 8 E251/E221을 무시하는 것보다 나빠질뿐입니다.

가장 좋은 방법은 무엇입니까?

EDIT 몇 년 후

는 정렬되지 않습니다. 조만간 새로운 변수가 생길 것이며 모든 것이 다시 좋을 때까지 여기 저기 스페이스 바를 치지 않으면 안됩니다. 그럴 가치가 없어.

+11

PEP 8을 따르는 것이 가장 좋습니다. 할당 연산자와 사전 값을 정렬하지 않도록하십시오. 매일 같이 일할 때 겸손한 의견은 쉽게 바뀔 수 있습니다. – delnan

+0

Javascript에서 이름으로 인수를 전달할 수 있습니까? 그럼 왜이 끔찍한 짓을 한거야? – jadkik94

+0

JS에서는 15 개의 정렬 된 인수 대신 specification 객체를 전달하는 것이 좋습니다. Douglas Crockford dixit, 전적으로 동의합니다. – bgusach

답변

13

모범 사례는 주관적이지만 가장 일반적인 관행은 PEP8을 고수하는 것입니다.

명명 된 인수를 사용하여 함수를 호출 할 때마다 사전을 만드는 것을 권장하지 않습니다. 그건 꽤 낭비입니다. 원래 some_func 전화가 작동하지 않는 이유를 알 수 없습니다. 너무 길고 다루기 힘들어지면 함수 호출을 줄 바꿈으로 확실히 깰 수 있습니다. 그러나 나는 그들을 정렬하지 않습니다. 나는 시간의 경과에 따라 모든 간격을 올바르게 유지하는 데 큰 고통을 겪을 수 있고 그 공감대는 예쁘게 얻는 것보다 유지 가능성이 높기 때문에 추천 이유가 있다고 상상한다.

자신의 코드로 작업하고 있다면, 누가 신경 써도 상관하지 않습니까? PEP8은 법이 아니라 지침입니다.

+1

당신은 맞습니다.하지만 다행히도 IDE는 자동으로 특수 문자 ":", "="등을 기반으로 정렬됩니다. IDE는 "꽤"유지하기 위해 시간이 전혀 필요하지 않습니다. 나에게있어 유지 보수는 빠르고 독서에 관한 것입니다. – bgusach

+0

그런 다음 IDE 설정을 변경하거나 계속 정렬하십시오. 나에게 윈 - 윈처럼 보입니다 :) – acjay

+0

최고의 답변. 내가 혼자서 코드를 작성하는 한, (주관적으로) 가독성을 높이기 위해 표준을 약간 바꿀 것입니다. – bgusach

2

그래서, 다음과 같이 사전을 사용하고 결국 무엇을 :

specs = { 
    length:  40, 
    weight:  900, 
    lol:   'troll', 
    useless_var: True, 
    intelligence:None 
} 

이럴 -이 (가 키를 인용하지 않고 올바른 구문했다) 덜 읽을 수있는, 그리고 경우 some_longer_named_varible을 추가하기를 원할 때, 나는 다른 모든 것을 다시 배치하는 것에 대해 망설이지 않으면 정말로 확신 할 수 없다.

내가 두렵다는 총알을 물어야한다고 생각합니다.

+0

방금 ​​키 값의 오타가 수정되었습니다. 어떤 var 이름이 매우 길면, 정렬은 혼란을 일으킬 수 있습니다. 드문 경우지만, 나는 마지막 위치에 긴 이름을 선언하고 정렬하지 않았습니다. 하지만 나에게 가독성은 대부분의 경우 향상되며 눈은 어디를 봐야하는지 알게됩니다. – bgusach

+0

나는 길이가 합리적으로 가까운 과제를 일렬로 정렬하는 것을 좋아하지만, 한 명의 긴 녀석을 수용하기 위해 거대한 추한 공간을 신경 쓰지 않을 것이다. 대부분 줄 지어 뒤죽박죽 된 것보다 낫다. 몇 시간 안에 여기 저기에 몇 초가 자기 만족과 아름다운 코드의 가격이라면, 그것은 내가 기꺼이 지불하는 것 이상의 가격입니다. –

1

PEP8을 계속 사용하는 것이 좋습니다.변수 중 하나의 이름을 변경해야한다면 어떻게됩니까? 자동화 된 리팩토링 도구는이 변경됩니다 :

var1  = 1234 
var2  = 54 
longer_name = 'hi' 

이에 :

var1  = 1234 
var2  = 54 
even_longer_name = 'hi' # not aligned any more! 

당신은 자신을 정렬 물건을 유지하기 위해 더 많은 일을하게 될 겁니다.

+1

코드를 작성하는 데 사용하는 편집기는 간단한 키 입력으로 코드를 자동 정렬합니다. 그래서, 큰 문제가 아닙니다. 유일한 문제는 너무 긴 변수와 함께 발생하지만,이 경우 할당을 정렬하지 않고 가능한 경우 마지막 위치에 놓습니다. – bgusach

+0

@ ikaros45 : 결론은 개인적인 선택이라는 것입니다. 코드를 읽는 유일한 사람이라면 PEP8과 같은 스타일 가이드에서 너무 좋아하는 것을 좋아하고 그렇게하지 마십시오. 반대로 팀의 일원으로 코드를 작성하는 경우 팀에서 합의한 스타일 가이드에 충실하는 것이 중요하므로 코드를 읽어야하는 모든 사람을 화나게하지 마십시오. –

+0

내 의견을 원한다면 PEP8에서 권장하는대로 정렬되지 않은 스타일을 선호합니다. 나는 눈이 공백의 틈의 한쪽에서 다른쪽으로 갈 길을 잃는 경향이 있음을 발견한다. 챕터 제목이 페이지 번호와 구분되는 책의 내용 페이지를 읽을 때처럼. –