동일한 목적을 가진 두 개의 매우 다른 파일에 동일한 이름을 부여하는 것은 나쁜 습관입니까?


18

동일한 목적을 가진 두 개의 매우 다른 파일에 동일한 이름을 부여하여 다른 디렉토리로 분리하는 것은 나쁜 습관입니까?

<script src="client_scripts/app/player_stats/generator.js"></script>
<script src="client_scripts/app/coach_settings/generator.js"></script>

파일 이름을 짧게 유지하고 싶습니다. 두 파일의 이름은 같지 않고 동일한 일반적인 용도로 사용됩니다. 이것이 전문 프로그래밍 환경에서 나쁜 습관으로 간주되는지 여부는 확실하지 않습니다. 이 상황에서 모범 사례가 무엇인지 알고 싶습니다.

또는 이름의 짧은 길이를 희생하여 다음을 사용할 수 있습니다.

<script src="client_scripts/app/player_stats/player_stats_generator.js"></script>
<script src="client_scripts/app/coach_settings/coach_settings_generator.js"></script>

7
더 긴 이름! :)
marko

2
statsgen.js, settingsgen.js
Kroltan

1
마른! (즉, 짧은 이름)
Paul Draper

1
깨끗한 코드 (더 긴 의미있는 이름)
Songo

답변:


36

두 가지 옵션의 비용 / 혜택 비율을 고려하십시오.

  1. 동일한 이름을 재사용하면 혼동이나 이름 충돌이 발생합니까? 아마도 다른 폴더에 있기 때문에 아마도 아닙니다. "player_stats / generator.js"이름은 "player_stats_generator.js"와 동일합니다. 그러나 나중에 js 파일을 단일 디렉토리 (deployment? I dunno)로 병합 해야하는 이유가 있다면 고유 한 이름을 지정하는 좋은 지표가되어야합니다.

  2. 더 긴 이름을 사용하면 많은 외래 입력이 필요합니까? 아마 아닙니다. 프로젝트에서 많은 JS IDE 자동 완성 파일 이름을 수행 할뿐만 아니라 아마도 작성된 유일한 코드 일뿐입니다. 파일 당 최대 한 번만 합니다. 많이 입력되는 코드 는 js 파일 내부 의 클래스와 함수 이며 충돌하지 않습니다.

  3. 디버깅 할 때 오류에 대한 정보는 무엇입니까? 가장 일반적인 버그 보고서가 "34 번째 줄의 오류 <filename.js>"인 경우, generator.js로만 오류를 수신 한 후 컨텍스트를 통해 신성하려고하므로 문제가 될 수 있으므로 고유 한 이름을 지정하십시오.


5
js를 디버깅하면 일반적으로 전체 파일 경로가 인쇄됩니다.
Bergi

1
@Bergi 브라우저 (및 버전), IDE (있는 경우), 오류 로깅 프레임 워크 등에 따라 다릅니다.
Avner Shahar-Kashtan

22

실제로 IDE에 탭에 파일 이름이 표시되는 경우 각 파일에 동일한 이름을 사용하면 모두 동일한 이름을 표시하는 탭이 생깁니다. 매우 성 가실 수 있습니다. 내가 유지 관리 한 프로젝트에는 그 문제가 있으며 15 개의 탭을 열고 절반은 동일한 파일 이름을 갖는 것이 큰 고통입니다.

따라서 ... 더 설명적인 이름을 사용하십시오.


1
파일 이름이 동일한 경우 대부분의 최신 텍스트 편집기에서 탭에 경로가 표시됩니다.
kmiyashiro

물론, 여러 파일이 같은 이름 (예 : 많은 서버에서)을 가져야하는 경우가 있습니다 index.html. 특정 파일과 관련된 경로를 결정하기 어려운 프로그램에 짜증이납니다.
supercat

1
@kmiyashiro-아마도 그렇게 할 것입니다. 그러나 많은 파일이 열려 있으면 탭의 크기 (폭)가 대부분 파일 이름 만 볼 수있는 크기로 줄어들 수 있습니다. 그런 다음 항상 각 탭 위에 마우스를 놓고 "툴팁"에 전체 경로 / 파일이 표시 될 때까지 기다려야합니다. 파일이 몇 개만 있고 이름이 중복 된 경우는 드물지만 허용 될 수 있습니다. 그러나 많은 파일이 있으면 매우 성 가실 수 있습니다.
Kevin Fegan

1
많은 이름의 탭이 모두 같은 이름으로 열리면 고유 한 이름을 가진 탭 사이에서 탭을 찾으려고하는 대신 키 명령을 사용하여 파일로 전환합니다.
kmiyashiro

1
좀 더 설명적인 이름을 사용하는 것은 다소 성가신 some_super_long_descriptor_that_needs_more_description.jssome_super_long_descriptor_that_needs_more_cowbell.js
이겠지만

12

여기에는 분명한 결정 요인이 있습니다. DRY (반복하지 마십시오).

모든 파일 이름이 다를 필요는 없습니다. 그것이 경로입니다 . 컴퓨터에 몇 개의 다른 시스템 또는 프로그램 파일이 있는지 상상할 수 있습니까? 각각의 이름이 고유해야한다면 어떻게해야합니까? 어느 시점에서, 우리는 파일 이름을 경로의 복사본으로 만들고 있습니다.

client_scripts > app > player_stats실제로 컨텍스트에서 Javascript 파일에 대한 가장 좋은 설명 이 generator인 경우 경로는입니다 client_scripts/app/player_stats/generator.js.

이 질문은 programmers.stackexchange.com/questions/ 250481에 있습니다. 도 있습니다 serverfault.com/questions/ 250481 . 250481프로그래머 질문의 맥락에서 한 가지, 서버 결함 질문의 맥락에서 다른 것입니다.

경로 또는 URL은 중첩 식별자이기 때문에 좋습니다. 그런 식으로 사용합시다 :)


7

문제의 언어 규칙이 짧은 이름을 선호하는 수학적 상수 또는 루프 변수와 같은 것이 아닌 한 짧은 이름에 설명이 포함 된 이름을 항상 사용하십시오. 예를 들어, 변수 "pi"를 호출하고 적절하게 정확한 pi 값을 가지면 이름이 양호하고 그 점을 잘 알 수 있습니다. 반면, Pi에 대한 Taylor 시리즈의 용어를 생성하고이를 대략 pi에 추가하는 생성기가있는 경우 "taylorPiGenerator 또는 이와 유사한 것"이라고합니다.

좋은 이름은 나중에 리팩터링 시간을 줄이거 나 나중에 더 큰 오류를 줄입니다.

Clean Code and Code Complete 책 은 이름이 좋은 이유와 이유에 대해 상당히 자세하게 설명되어 있지만 결코 유일한 출처는 아닙니다.


이 답변은이 특정 예에 잘 적용되는 것처럼 보이지만 일반적인 질문은 다루지 않습니다.
Paul Draper

3

작업중인 기술에 따라 다릅니다. 이름은 항목을 식별하고 경로는 컨텍스트를 식별해야합니다. 나는 좋은 이름이 중요하다는 것에 동의하지만 경로도 이름입니다. 그러나 실용적인 관점에서 Javascript 와 같은 것을 사용하는 경우 최종 항목의 정확한 이름을 유지하는 것이 좋습니다. Python 과 같이 이것을 고려하는 도구로 작업하는 경우 권장되는 방법은 다른 경로 (모듈, 네임 스페이스)와 동일한 이름을 사용하는 것입니다. 를 살펴보면Java를이름과 패키지가 다른 클래스도 있습니다. 한 걸음 더 나아가서 메소드는 클래스의 맥락에서 액션으로 명명된다고 말할 수 있으며, 우리는 다른 클래스에서 같은 이름의 메소드를 가지고 있으며, 그 자체로 이름은 같지만 다른 패키지에 배치 할 수 있습니다. 파이썬의 선은 말한다 :

네임 스페이스는 훌륭한 아이디어 중 하나입니다. 더 많은 것을 해보자!

그러나 자바 스크립트에는 기발한 기능이 있으므로 파일이 다른 경로에 있더라도 다른 이름으로 이동하는 것이 좋습니다. 또한 깨끗한 코드를 작성하는 데 도움이되는 자바 스크립트에서 모듈 패턴을 찾을 수 있습니다.

    var playerStatsGenerator = player_stats.Generator();
    var coachSettingsGenerator = coach_settings.Generator();

케이크를 먹을 수도 있습니다.

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