찾기 및 바꾸기 기능을 쉽게하기 위해 식별자에“ies”대신“ys”를 사용하는 것이 합리적입니까? [닫은]


9

문법적으로 부정확하지만 함수, 변수 등의 식별자를 작성할 때 Y로 끝나는 여러 단어에 "s"를 추가하는 것이 합리적입니까? 예를 들어 "회사"를 "공급 업체"로 바꾸는 등의 찾기 및 바꾸기가 필요한 경우 "회사"는 단수형과 복수형 ( " 회사 및" 회사 ") 모두와 일치하기 때문입니다. 복수의 철자가 올바른 경우 두 번의 개별 검색을 수행해야합니다.


8
자녀, 마우스, 칼, 늑대, 남자, 여자, 아내 및 치아는 어떻습니까? "두 개의 개별 검색" 을 피하기 위해 모든 것이 유효합니다 .
Tulains Córdova

3
나 스스로 늑대보다 늑대의 일부입니다 ...
Jimmy Hoffa

2
실제로 워크 플로에서 식별자의 이름을 바꾸는 계획이 있습니까? 코드에서 철자가 틀린 이름의 모든인지 적 결함을 취하여 사용되지 않은 기능을 지원하는 것은 약간 과잉입니다.
Kent A.

10
나를 믿으십시오. "full-words-only"제한없이 "company"와 같은 단어에 대해 큰 코드베이스에 대해 찾기 및 바꾸기 작업을 적용하고 싶지 않습니다. 따라서 두 개의 별도 검색을 사용해야합니다.
Doc Brown

2
두. 갈라진. 검색합니다.
Tulains Córdova

답변:


24

이러한 검색 및 교체는주의해서 수행해야하며 회사 / 공급 업체 변경에 대한 "승인자"라는 주석의 "동반자"를 피하기 위해 각 변경 사항을 수동으로 확인해야합니다. 따라서 "회사"및 "회사"에 대한 두 개의 개별 검색은 각 변경 사항을 검사하고 승인하는 데 소요되는 시간과 비교할 때 상당한 오버 헤드를 발생시키지 않아야합니다.

따라서 한 번의 검색 만 수행하는 맞춤법이 틀린 단어는 명백한 이점을 제공하지 않으면 서보기보다 나빠 보이고 읽기가 더 어렵다는 단점을 제공합니다.


11
또한 리팩토링 도구가 향상됨에 따라 텍스트 만 기반으로하는 전역 검색 및 바꾸기는 식별자의 이름을 바꾸는 가장 신뢰할 수없는 방법이되었습니다.
Kent A.

Doc Brown이 언급 한 것처럼 "전체 단어 만"검색을 사용하는 경우에는 문제가되지 않습니다.
SHNC

6
@ user3047082, 전체 단어 검색도 "회사"와 일치하지 않으므로 전체 질문이 무의미합니다.
David Arno

6

소스 코드 파일의 이름을 바꾸는 것에 대해 이야기하고 있다고 가정합니다. 오늘날의 IDE에서는 항상 IDE의 리팩토링 도구를 사용해야 합니다. IDE에없는 경우 다른 IDE로 전환하십시오. 대부분의 IDE 리팩토링 도구는 리팩토링 기록을 유지하므로 리팩토링 결과가 마음에 들지 않으면 신속하게 "실행 취소"할 수 있습니다. 검색 / 바꾸기를 사용하면 수정 제어 도구를 사용하고 이전에 커밋 된 버전으로 되돌릴 수없는 한 전체 변경 세트를 취소 할 수 없습니다. 또한 리팩토링 도구를 사용하면 변경하지 않으려는 것을 실수로 변경하는 것이 더 안전합니다.


3
이 답변을 저품질로 표시 한 사람은 누구든지 질문에 대한 답변을 엄격하게 답변하지는 않지만, 그러한 명명 체계를 사용하려는 이유에 대한 더 큰 그림 과 동일한 작업을 수행하는 더 나은 방법을 설명합니다. 나는 깃발 검토에 "좋아 보인다"고 투표하고 공감대를 추가했습니다.

감사합니다, @Snowman. 알 수없는 지역에있을 때 자신의 (불 경험 한) 사고 방식에 따라 질문을 구성하는 것은 인간의 본성입니다. 그렇습니다. 실제 질문에 대답하지는 않았지만 실제로 요청 된 내용에 대한 나의 가정은 질문의 다른 단서를 기반으로했습니다. 내가 가장 많이 경험 한 복수는 XSD에서 POJO, 데이터베이스의 Hibernate / JPA 리버스 엔지니어링 등과 같은 코드 생성 도구에서 나온 것입니다. 본질적으로 이러한 복수가 코드에 있고 저자가 선택을 좋아하지 않는 경우 복수형 인 경우에는 저자가 작성하지 않았으며 자동 생성되었을 가능성이 높습니다.
javabeano

-9

예! 예! 예! 그렇게하는 것이 완벽합니다. 그리고 나는 몇 년 동안 그것을 해왔습니다.

공개 1 : 영어는 모국어가 아닙니다.

공개 2 : 영어 문법에 대한 나의 지식은 일반 원어민의 지식보다 상당히 낫습니다.

공개 3 : 인간과 의사 소통 할 때, 나는 나름의 문법입니다.

그리고 이제 이러한 공개가 중단되었으므로 영어 문법이 코드에 적용되지 않습니다. 알다시피, 그것이 코드 라고 불리고 prose가 아닙니다 . 그것은 가독성을 위해 인간이 이해하는 언어와 비슷해야하지만, 그 외에는 코드에서 주로 필요한 것은 산문의 특성이 아닙니다. 이 같은 다른, 기술적 자질이다 정확성 , 명확성간결성 . 의 C 구문 이유 if( x != y ) y++;입니다 많이 받는 것이 바람직 IF X IS NOT EQUAL TO Y THEN ADD 1 TO Y END-IF.코볼의 구문. 자연어를 이해하는 컴파일러의 바람직 함은 오해이며 내 말을 받아들이지 않습니다. ol'Edsger가 그것에 대해 무엇을 말하고 있는지 확인하십시오.Edsger W. Dijkstra, "자연어 프로그래밍"의 어리 석음 .

중요한 또 다른 품질 은 식별자의 계산 가능성입니다 . 라는 속성은 사실 Color항상라는 방법을 통해 읽을 수 getColor()및라는 방법을 통해 작성은 setColor()매우 중요하다. 이 식별자는 속성 이름에서 계산할 수 있으므로 마음에 들지 않아도됩니다. 프로그래머가 getColor()한편으로는 호출 된 한 쌍의 방법을 선택해야한다면 colorize()다른 한편으로는 동료들은이 방해 행위를 정당하게 고려할 것입니다. 이것이 식별자 계산이 얼마나 중요한지입니다.

또한 프로그래밍 도구를 작성할 수 있으며 이러한 이름을 계산할 수있는 많은 도구 (예 : Hibernate 등 )가 작성 될 수 있습니다. 식별자 이름 계산 기능이 없으면 추가 구문 (예 : 최대 절전 모드, 추가 주석)을 사용하여 각 도구에 모든 단일 식별자 이름을 만드는 방법을 정확하게 지정하거나 각 엔티티에 부여한 임시 이름을 정확하게 지정해야합니다.

그래서 의해 개체의 컬렉션의 이름을 계산할 수 있도록 (우리가 자연 언어 프로그래밍을하고 있지 않기 때문에) 같은 시간에 영어 문법, 관련성이없는 동안 그래서, 식별자 계산 가능성은 중요 항상 이름에 "S"를 추가 단일 인스턴스를 사용하는 것이 완벽하게 이해되므로 대부분의 사람들 (광산 포함) 영어 민감도를 위반한다는 사실을 염두에 두지 마십시오.

우리가 좋아하든 그렇지 않든 이것은 미래의 추세입니다. 지구상에서 대다수 프로그래머의 모국어는 더 이상 영어가 아니며, 추세는 이 방향으로 계속 강하게 계속되고 있습니다. (또한, 영어는 현재 미국에서 일하는 대다수 프로그래머의 모국어라는 제안에 기꺼이 돈을 걸지 않을 것입니다.) 이들은 대부분 이름을 계산할 때 "회사"의 단일 인스턴스 이름에서 수집 된 컬렉션은 단순히 "s"를 추가하며 "회사"라는 형식은 그들의 마음을 넘어 가지 않을 것입니다. 전 세계 프로그래머의 비율이 점점 증가함에 따라 영어의 특성에 대한 지식은 그들의 작업에 가치를 더하지 않으며 단지 조금 더 어렵게 만듭니다.


7
1. 인덱스와 인덱스는 모두 유효한 복수 인덱스입니다. 하나만 정확하다고 생각하는 경우가 있습니다 (예 : oxforddictionaries.com/definition/english/index 참조) . 2. getX를 통해 읽고 setX를 통해 쓸 수있는 개인 X는 개인이 아닙니다. 그것은 공공의 가치입니다. 3. 코드는 디자인 문서입니다. 컴파일러는 "머신 코드"를 생성하는 방법에 대해 알려주지 만 더 중요한 것은 다른 사람들이 쉽게 읽을 수있는 방식으로 해당 디자인을 설명합니다. 가독성은 코딩에서 가장 중요한 두 가지 측면 중 하나입니다 (테스트 가능성은 다른 것임).
David Arno

3
코드는 인간이 읽고 컴퓨터를 실행하기위한 두 가지 이유로 작성됩니다. 어떤 사람들은 소스 코드가 주로 인간이 읽을 수 있도록 작성되었다고 말하는데 , 대부분은 컴퓨터가 실행하기 전에 즉시 바이트 코드로 컴파일되기 때문입니다. 따라서 컴퓨터 는 적절한 문법을 ​​신경 쓰지 않지만 인간 은 확실히 그렇습니다.
에릭 킹

3
영어는 모국어가 아니지만 코드를 읽는 다음 사람 일 수 있습니다. 영어를 배운 모국어를 혼동시킬 수도 있습니다.
Andy

2
또는 당신은 Companys그것이 있어야 할 때 두 배로 걸릴 사람들을 다치게 할 것 Companies입니다. 결국 우리가 일반적으로 작성하는 코드의 요점은 실제로 자연어에 더 가깝게 만드는 것입니다.
Andy

2
어쨌든, 나는 그 종이가 똥으로 가득하다고 생각합니다. 코드는 자연어와 바이트 코드 사이입니다. 사람이 코드를 이해하기 쉽도록하지 않으면 바이트 코드를 직접 입력하지 않는 이유는 없습니다.
Andy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.