2010-12-05 2 views
7

일반적으로 변수에 PEP-8에 명시된 표준 명명법을 사용하고 있습니다. 마찬가지로 :파이썬 변수 이름에는 어떤 약어를 사용해야합니까?

delete_projects 
connect_server 

그러나 때때로 나는 좋은 이름을 찾을 수 있으며, 이름은 긴 하나에 확장 : 나는 pr_nm_del을 사용할 수

project_name_to_be_deleted 

하지만,이 코드를 읽을 수 있습니다. 나는 함수에 대한 좋은 변수 이름을 찾는 데 정말로 고통 스럽다. 새로운 함수를 작성하기 시작할 때마다 나는 좋은 변수 이름을 찾기 위해 시간을 보냈다.

delete,project,configuration, etc.과 같이 잘 알려진 변수 이름의 특정 약어를 선택하기위한 표준이 있습니까? 짧지 만 훌륭하고 읽기 쉬운 변수 이름은 어떻게 선택합니까?

이 질문은 파이썬에 직접 의존하지 않을 수도 있지만, 다른 프로그래밍 언어가 다른 변수 이름을 사용하여 서식을 지정 했으므로 나는이 질문을 파이썬에만으로 제한한다고 생각했습니다.

+8

아, '명명 규칙'... 컴퓨터 과학의 두 가지 어려운 문제는 캐시 무효화, 일들의 이름 지정 및 하나씩의 오류입니다.) – delnan

+0

다음과 같은 표준 약식을 사용하지 않는 이유는 무엇입니까? del 삭제, 구성을위한 cnfg 등등? – user225312

+0

@sukhbir 잘 그게 문제 야. 이전에 다른 프로젝트에서 사용하지 못했던 초보자로서 선택하기가 어려워졌습니다. 예를 들어 PEP-8에서는'name_variable'과 같은 변수를 사용해야한다는 것을 알았지 만 짧은 변수 나 약어를 선택해야할지 모르겠습니다. 거기에 어떤 문서 나 표준이 있습니까? 나는 이것과 관련된 것을 찾을 수 없었다. –

답변

5

pr_nm_del? 고양이 이름을 알려주는 것도 좋습니다. 나는 잘 알려진/명백한 것들 (주석에 언급 된 바와 같이 del과 같은 것 - 그것도 언어 키워드 임)을 제외하고 모든 비용으로 회피해야한다고 생각한다.

그러나 이는 지나치게 자세한 식별자를 의미하지 않습니다. 자연어로 된 문장을 이해하기 위해서는 문맥이 중요하기 때문에 식별자를 문맥을 참조하여 훨씬 더 짧게 (그리고 이해하기 쉽도록) 유지할 수 있습니다. 귀하의 예에서 project_name은 완벽하게 훌륭합니다. 절차는 이미 delete_project으로되어 있으므로 project_name은 분명히 삭제할 프로젝트의 이름을 나타냅니다. name이라도 괜찮을 수도 있습니다. _to_be_deleted을 덧붙여 다시 설명 할 필요가 없습니다.

+1

정말로 삭제할 프로젝트의 이름을 넣어야한다면 'obsolete_project_name'이라고 부르지 그래도 될까요? –

+2

나는'doomed_project_name'에 갈 것입니다. –

0

설명이 풍부한 경우 긴 이름을 사용할 수 있습니다. 좋은 편집기/IDE를 사용하면 짧은 이름으로는 입력을 저장할 수 없지만 길지만 설명적인 이름으로 코드를 읽는 시간을 절약 할 수 있습니다. 그래서 이름의 독서 시간의 길이는 이름의 실제 길이보다 훨씬 더 중요합니다.

예를 들어, project_name_to_be_deleted은 문제가 없습니다. 줄이려면 deldelete (키보드에서도 찾을 수 있음)의 약자이므로 project_name_to_del을 사용하는 것이 좋습니다. 그리고 confconfiguration으로 사용하는 것도 인기가 있습니다. 그러나 더 이상 가지 말라. 예를 들어 proj2del은 좋지 않습니다.

또한 내부/로컬의 경우 짧은 설명이 아닌 이름을 사용하는 것이 좋습니다.

0

예에서 delete_project라는 함수가 있습니다. 삭제할 프로젝트를 저장하는 변수를 무엇이라고 부를지 궁금하십니까? 그냥 '프로젝트'!

def delete_project(self, project): 
    del self.projects[project] 

심플.

변수 이름을 완전히 설명 할 필요는 없습니다. 컨텍스트는 특정 시점에서 특정 이름을 이해하는 방법에 많은 도움을 줄 수 있습니다. 프로젝트를 삭제하는 기능을 논의 할 때 "삭제할 프로젝트"라고 말할 필요가 없습니다.

함수 이름이 너무 길면 아마 너무 많이 처리 할 것입니다.변수 이름이 너무 길어지는 것을 발견하면 현재 컨텍스트에서 그 목적을 생각하고 이름의 일부가 암시 될 수 있는지 확인하십시오.

1

OOP를 할 때 이러한 문제가 해결되는 문제입니다.

class Workspace(object): 

    def delete_project(self, project): 
     log.info("Deleting", project.name) 
     ... 
0

거의 이름은 "표준"표현을 가지고 있습니다 : 제목 (project, configuration는) 클래스와 동사 (delete, etc)이 메소드 이름의 예입니다. "공통"또는 "표준"이라고 생각하는 것이 다른 사람에게 동일하지 않습니다. 좋은 이름을 설정하는 데 소요 된 시간은 코드 작성보다 훨씬 자주 읽히기 때문에 많은 투자가 필요합니다. 거기에 매우하지 않는 한 축약하지 않습니다 - 예를 들어 , 정말 교훈은 ... "설정" "CNFG" "CFG" "CNF" 로 축약 "구성" 을 보았다 그것의 잘 알려진 약어!

관련 문제