누군가의 코드에서 철자법 / 문법 관련 실수를 지적해야합니까? [닫은]


106

동료의 코드를 검토하는 동안 함수 이름의 철자 오류와 함수 및 변수 이름의 'doesUserHavePermission ()'대신 'doesUserHasPermission ()'과 같은 문법 오류가 발생했습니다.

이것들을 그에게 지적해야합니까, 아니면 이것들을 알아 차려서 너무 비관적입니까?


3
제 2 언어가 아닌 경우 영어로 도움을 원한다는 점에주의해야합니다. 어떤 사람들은 구조적 사고를 표현할 수없고, 올바른 영어를 할 수 없다는 것을 알고 만족합니다. 영어가 모국어라면 그렇습니다. 문법 문제가 문제라고 생각합니다.
Rei Miyasaka

31
예. 철자가 잘못된 API가 있으면 정말 실망 스럽습니다. 산불처럼 퍼집니다. 따라서 가능한 빨리 수정하는 것이 좋습니다.

9
@Rei : 영어가 모국어인지 아닌지 전문적인 환경에서 관련이 없어야합니다. 그것이 그다지 나쁘지는 않지만 변명의 여지가 없다면, 그들은 동일한 표준을 준수해야합니다.
Thomas Bonini

4
@Rei, 내가 광고하는 많은 프로그래밍 작업은 바로 이런 이유로 모국어에 능숙해야합니다. 요구 사항, 설계, 사양 및 구성에 대해 논의 할 수있는 것은 전체 소프트웨어 제품 전체에서 매우 중요합니다.
Stephen Furlani

11

답변:


205

맞춤법 및 문법 오류가있는 코드는 유지 관리 할 수 ​​없습니다 .

  • 사람들은 나쁜 문법을 기억하지 못하기 때문에 함수가 작성된대로 함수를 호출하려고 시도 할 것입니다. 이것이 버그가 발생하는 방식입니다.

  • 철자가 어떻게 나오는지 모르면 코드에서 무언가를 잡을 수 없습니다.

  • 문법 / 맞춤법을 사용하는 사람들은 대부분 일관되지 않으므로 이름이 일치하지 않는 많은 버그가 발생합니다. 이것은 새로운 철자를 도입 할 수 있고 코드가 당신을 망쳐 놓았다는 것을 알리기 위해 분쇄가 오지 않기 때문에 사용하기 전에 변수를 명시 적으로 선언 할 필요가없는 언어에서 특히 문제가됩니다.

이러한 문제를 해결하는 것은 현명한 것이 아니며, 주로 지능, 문해력 등에 대한 다른 사람들의 의견에 의해 필요하지도 않습니다 (큰 부작용이지만). 품질, 유지 보수 가능한 코드 작성에 관한 것입니다 .


7
+1 때때로 누군가의 감정을 아끼는 것이 중요하지만, 코드를 검토 할 때 ... 포착하면 공정한 의견을 말하는 것이 좋습니다. 우리 회사는 코드 검토에 도가니를 사용하여 모든 검토에서 발견 된 것을 확인할 수 있으며 검토자가이를 결함이 아니라 스타일로 표시 할 수 있습니다.
opello

15
+1-철자와 문법 오류가 API로 들어가면 다시 나가는 것이 거의 불가능합니다. 나는 3 년 동안 "활동"대신 "활력"을 써야하는데 더 많은 시간을 보냈고, 그렇게함으로써 항상 신체적으로 다쳤 습니다.
John Bode

7
더 나은 또는 나쁜, 좋은 프로그래밍 연습은 종종 pedantry 같은 것으로 귀착됩니다. 또한 Referrer원래 HTTP 사양에서 맞춤법이 틀린 사람을 찾아 발목에 차고 싶습니다 . 물론, 그것은 Berners-Lee일지도 모른다. 그래서 나는 나중에 죄책감을 느낄 것이다.
Malvolio

2
@Stephan Furlani : 그것이 제가 만들고자하는 요점입니다. 우리가 소유하지 않은 API의 일부였습니다. 우리는 결국 그것을 고칠 수 없었고, 그것을 고치는 과정은 아무도 그것을 엉망으로 만들고 싶지 않을 정도로 추악하고 길었습니다.
John Bode

2
@ John Bode, 래퍼 함수를 ​​만들어야한다고 생각합니다. :) C #에는 깔끔한 트릭이 있습니다 (이름을 잊어 버렸습니다).
Job

38

네 물론 이죠 문법적으로 정확하면 이름을 기억하기가 더 쉽습니다. 이름 문법 실수 를 기억하는 것은 완전히 다른 것입니다.


29

공식 코드 검토에서 결함으로 지적하지 마십시오. 대신 목록을 작성하고 개인에 대해 이야기하십시오. 가능한 한 외교관이 되십시오. "이봐, 내가 알아 차린 것, 그리고 이런 종류의 일을 진지하게 내려다 보는 사람들을 만났을 때 그들은 프로그래머를 부주의하고 부주의하게 보이게한다"고 말했다.

고객이 볼 코드 인 경우 반드시 수정해야합니다. 좋든 싫든 그것은 회사의 평판에 반영됩니다.

예를 들어 UserHasPermission으로 시작한 것으로 의심되며 다른 사람이 로컬 연습이 UserBlahBlah ()가 아닌 doesUserBlahBlah ()라고 말했으며 문법 변경을 간과했습니다.


12
다른 사람들의 인식에 대해 말하는 것이 중요하지 않은 것처럼 보입니다. 진실을 말하십시오-코드를 유지하고 빌드하기가 더 어려워지고 있습니다.
HedgeMage

5
@HedgeMage : 이와 같은 것들에 대한 나의 개인적인 경험은 일부 사람들이 자신에 대한 비판으로 인식하는 것들에 대해 매우 감동적이라는 것입니다. 더 나쁜 것은, 당신이 비판하는 사람이 경영진에 의해 사랑받는다면 정말로 추악한 정치적 반향이있을 수 있습니다. (예, 이것을 증명할 상처가 있습니다.) 그리고 코드가 작동하는 한 "작업 된"의 정의를 위해 문자 그대로 이런 종류의 일을 신경 쓰지 않는 조직을 보았습니다. 내 개인적인 느낌은 부드럽게 갈 때 최소한 다른 두통으로 고칠 가능성이 높다는 것입니다.
John R. Strohm 5

12
@ 존 난 분명 나쁜 일 상황이 그런 달걀 껍질에 걸어야 할 사람을 강제 할 수 있음을 볼 수있다 - 그러나 그것은 이다 그 첫번째 장소에 문제가 있다면 나쁜 상황. 자존심이 매우 약한 사람 (그리고 자신의 스 나니 건을 허용하는 직장 ​​문화)은 사업을 시작하기에 좋지 않습니다.
HedgeMage

6
대부분의 성숙한 프로그래머는 비판을 잘 받아들입니다. 결국, 그것은 동료 리뷰가 무엇인지 (그리고 우리는 모두 코드 리뷰를합니까, 그렇지 않습니까?) 주석, 함수 이름 등의 철자와 문법을 비판하는 것은 괜찮습니다. 모두 저자뿐만 아니라 그들의 전체 조직에.
quick_now

6
코드 검토 중 (특히 문제의 예와 같이 객관적으로 잘못되었을 때) 이와 같은 실수를 지적 할 수 없다면 HedgeMage에 동의해야합니다. 더 큰 문제가 있습니다 ...
Dean Harding

10

직접 변경하십시오.

코드 "소유권"이 문제가되지 않는 환경에 있기를 바랍니다. 소스 제어에서 프로젝트에 액세스 할 수 있으면 직접 들어가서 수정하십시오. 특정 동료가 동일한 유형의 문법이나 철자 오류를 일관되게보고있는 경우이를 지적하고 싶을 수도 있지만 관계, 사람이 영어를 모국어로 사용하는지 여부 및 일반적인 수용력에 따라 달라집니다. 그러나 당신이 그것을하기로 결정하든 아니든간에 조용히 가서 수정하십시오. 나는 항상 메소드 서명이나 공공 재산에서 오타가 보이면 이것을 고칩니다. 때로는 주석에 오타를 고치려는 유혹에 저항 할 수 없지만 그것은 단지 나입니다 :)


5
그리고 당신은 당신이 세 번째 사람의 코드를 깨뜨린 것을 발견했습니다. 첫 번째 사람이 모든 것을 체크인 한 후에 얻을 수있을 때가 아니라 가능한 한 빨리 이런 종류의 것들을 고정시켜야합니다.
David Thornley

어떤 코드 조각에 대한 픽스가 "다른 사람의"코드를 손상시킬 우려가 있고, 말할 방법이 없다면 철자법보다 더 큰 문제가 있습니다.
Cornel Masson

@CornelMasson : 실제로는 아닙니다. 이것은 API 디자인의 핵심 부분입니다.
궤도에서 가벼움 경주

6

나는 모국어가 영어가 아니며 실제로 네덜란드어 인 개발자이며 누군가 문법이나 철자 실수를 지적하더라도 전혀 신경 쓰지 않을 것입니다. 이런 식으로 저는 영어 실력을 지속적으로 향상시킬 수 있습니다. 그리고 모든 소스 코드의 모든 실수를 수정하는 것은 어렵지 않습니다. 폴더에있는 모든 파일을 통해 간단한 Perl 스크립트를 작성하여 쉽게 작성할 수 있습니다. 아마도 sed로도 할 수 있습니까? 모르겠어요

그래서 나는 다른 사람의 코드에서 문법이나 철자 실수를 분명히 지적 할 것이지만, 내가 말하는 것이 정확하다고 확신하는 경우에만.


6

HTTP 프로토콜의 HTTP 리퍼러 헤더가 "리퍼러"로 잘못 표시되었다고 언급 할 가치가 있다고 생각합니다 (그리고 우리는 함께 살아야합니다.


10
그리고 우리는 그런 종류의 일을 다시보고 싶지 않습니다.
David Thornley

4

문법 오류가있는 코드를 유지할 수 없다는 다른 답변에 동의합니다.

또한 몇 가지 사항을 추가하고 싶습니다.

  • 코드는 종종 영어를 잘 못하거나 영어를 모국어로 사용하지 않는 사람들이 작성합니다. 검토 한 코드에 문법 오류가 있다고해서 이것이 동료가이 오류를 만든 것은 아닙니다. 웹 사이트에서 복사 한 붙여 넣기 일 수 있습니다.
  • 영어가 동료의 모국어가 아닌 경우이 실수에 대해 이야기하는 것이 좋거나 나쁜 생각 일 수 있습니다. 저는 프랑스 출신이기 때문에 영어로하는 실수에 대해 항상 환영합니다. 왜냐하면 나중에 실수를 피할 수있는 유일한 방법이기 때문입니다. 다른 한편으로, 나는 당신이 문법 실수에 대해 말하면 정말 상처를받는 몇몇 사람들을 알고 있습니다.
  • John R. Strohm이 말했듯이 공개적으로하지 마십시오. 대부분의 사람들은 이것에 정말로 짜증을 낼 것입니다.

11
"아마도 그것은 웹 사이트에서 복사-붙여 넣기 일뿐입니다." 그런 다음 복사하는 사람이 문제를 발견하고 해결해야합니다. 그대로 복사하여 오류를 남기는 것은 직접 작성하여 오류를 만드는 것보다 나쁘거나 나쁩니다. "저는 그들이하는 문법 실수에 대해 말하면 정말 아파하는 몇몇 사람들을 알고 있습니다." 사업에서 우리 모두는 공통의 목표를 달성하기 위해 함께 노력하는 성인과 동료로 행동해야합니다. 문제를 제기하는 사람은 전술을 사용해야하며, 비판을받는 사람은이를 받아들이고 성장해야합니다.
Tin Man

3
나는 전문가로서 우리는 성인처럼 행동해야하며 이것을 개인적으로 받아들이지 않아야한다는 100 %에 동의합니다. 그러나 반드시 지적하고 수정해야합니다. 그렇습니다. 전술을 사용해야하며, 개인에 따라 필요에 따라 접근해야합니다. 그러나 문제를 완전히 피하도록 권장되는 환경에 있다면 떠나야 할 때입니다. 이것은 중독 된 환경을 가리킬 것입니다.
Mark Freedman

철자 오류는 간단한 구글 검색으로 확인할 수 있습니다
JoelFan

2

빌트인 맞춤법 검사기와 함께 IDE를 사용하는 것이 좋습니다. IntelliJ Idea는 Java 프로그램에서 훌륭한 일을합니다. 함수 이름뿐만 아니라 사용자가 볼 수있는 예외 메시지와 같이 많은 난처한 오타가 있습니다. 오타로 가득 찬 메시지를 생성하는 프로그램은 큰 자신감을 얻지 못합니다.


0

나는 경우에만

  • 프로그램 사용에 영향을 미칩니다
  • 프로그램의 정확성에 영향을 미칩니다
  • 저자가 수정되기를 원한다는 것을 분명히 알고 있습니다.

참고로 함수 이름이 문법을 가질 정도로 길면 너무 길 수 있습니다. 주어진 예제에서 userHasPermission 함수를 호출하고 다음 과 같이 "grammar"를 코드로 옮깁니다.

if userHasPermission() ...

1
그래도 문법 실수의 가능성은 여전히 ​​똑같습니다.이 경우에는 userHavePermission()틀렸을 것입니다.
Dean Harding

그러나 그것은 정확히 요점입니다 !! userHasPermission()은 ~ 때문에 문법의 부울을 반환 또는 ~ 그것이 것을 의미 할 수 있음을 의미한다 설정 사용자 권한을. (책임자에게는 다리가 있습니다 :: 사용자에게는 권한이 있습니다). 아직 모호합니다.
Stephen Furlani

Q의 예제 이름이 불필요하게 길다는 데 동의하지만 "너무 긴"일반화에 대해주의를 기울입니다. 이 경우 개념을 더 적은 단어로 표현할 수 있으므로 더 짧아야합니다. 그러나 "너무 길다"는 무엇입니까? 문자 또는 단어 제한이 있습니까?
LS

0

이것은 또한 내 프로젝트 (많은 히브리어, 러시아어 또는 아랍어를 사용하는 사람들에 의해 채워짐)에서 많이 발생하지만 더 높은 수준까지도 종종 발생합니다. 저자가 염두에 두었던 것은 그들이 의미 한 것과는 아무런 관련이 없습니다.

개인적으로, 프로젝트에 참여하기 전에 코드를 작성할 수있는 많은 팀 구성원이 자주 발생하는 경우 문제가되지 않기 때문에 무시하는 경향이 있습니다.

그러나 오래 전에 작성된 코드 또는 주석과 동일한 파일에서 일부 작업을 커밋하고 오타가있는 경우 너무 많은 작업이 아니기 때문에 수정합니다.


0

황금률 적용

다른 사람들에게 당신이하는 것처럼 행동하십시오.

나는 다른 사람들이 이런 종류의 일에 등을 돌리기를 원하므로 다른 사람들을 돕습니다. 은혜 롭고지지적인 태도는 당신에게 유리할 수 있습니다.


2
모호함 -1-질문자에게 무엇을 조언하고 있는지 전혀 모른다.
HedgeMage

@HedgeMage, 나는 적용 할 수있는 OP 조언하고 en.wikipedia.org/wiki/The_Golden_Rule
kevpie

2
나는 그것에 익숙하다. 특허 적으로 어리석은 행동을하는 것 외에도 (Alice가 치료 받기를 원하는 방식이 Bob이 치료하기를 원하는 방식이라고 믿을 이유가 없습니다), 좋은 문제를 만들어냅니다. 물론, 나는 그것에 대해 바보가되지는 않지만 나쁜 코드를 작성하는 사람이 제기하기를 원하는지 여부에 대한 기술적 문제를 제기할지 여부를 기반으로하지는 않습니다!
HedgeMage

@HedgeMage의 불만은 다음과 같이 설명 될 수 있다고 생각합니다. 프로젝트와 프로젝트에 대한 내 미래의 작업에 관심이 있기 때문에 코드가 가능한 시간과 리소스에 의해 허용되는 최고 품질이되기를 원합니다. Bob은 비판을 잘받지 않기 때문에 수정 가능한 실수에 대한 비판을 피하려고합니다. 우리는 "골든 규칙"을 상당히 다르게 구현할 것입니다.
eyelidlessness

조언은 OP가 자신이 치료 받기를 원하는 방식으로 운영됨을 의미합니다. 밥을 어떻게 대하고 싶은지 밥을 대하지 마십시오. Bob (OP)이 동일한 오류, 특히 OP가 공유 한 컨텍스트에서 동일한 오류에 대해 수정하기를 원할 때 OP를 권장했습니다.
kevpie 2019 년

0

다른 많은 좋은 프로그래밍 관행과 마찬가지로 프로그램의 철자법에 대한 정책을 구현하는 객관적이고 비 정치적이며 효과적인 방법은 사전 커밋 프로세스의 일부로 자동화하는 것입니다. 자동화는 목적을 위해 자신의 도구를 작성해야하는 경우에도 엄청난 불만을 덜어줍니다.


3
가장 중요한 오류 자동으로 잡을 수 없습니다 . 이것은 철자와 문법에도 적용됩니다. 자동 확인을 수행 할 수 있지만 결과는 경고와 동일해야합니다. 맞춤법 검사기는 오탐 (예 : 고유 명사)과 오탐 (두 개)을 모두 생성하기 때문입니다. 따라서 수동 개입이 필요합니다.
Matthew Flaschen

이러한 종류의 자동화는 이러한 문제를 해결하지 못하고 사람들이 저지르는 실수 중 일부만 포착합니다.
overstood

자동 고침 ??? 인터넷에는 자동 고침 "실패"의 예가 많이 있습니다. 확실히 좋지 않습니다.
Florian F

0

이것은 코드에서 사소한 실수이지만 실수입니다. 찾은 다른 실수처럼 취급하십시오. 본인의 정책은 항상 내 동료 직원이 유능하다고 가정하고 달리 입증 될 때까지 그러한 방식으로 대우합니다.

그것이 하나의 실수라면 그냥 고쳐서 체크인 할 수도 있습니다. 패턴 인 경우 해당 동료에게 수정 사항을 검토하도록 시작할 수 있습니다. 그들이 좋은 코더라고 생각하지만 개선하기에 좋은 것임을 알려주십시오. 나는 이런 식으로 큰 일을 한 적이 없다고 생각합니다.

큰 문제인 것처럼 취급하지 않는 한, 동료 직원을 자아를 두지 않고 개선 할 수있는 위치에 두는 것이 쉬워야합니다.


-1

userPermission () 아마도? -

마지막으로 찾은 것은 클래스 이름의 철자가 너무 커서 검색 결과가 강조 표시되지 않는 전역 문제였습니다. 매우 모호한 버그가 발견되었습니다.


코멘트없이 하향 투표하는 것은 가증 한 일입니다.
mplungjan

-1

분명히 지적하지만 철자 실수를 확인하는 데 시간을 낭비하지 마십시오. 도구를 사용하여 CI에서이를 자동화하십시오. .net fxCop 에서이 작업을 수행 할 수 있습니다 ...


-2

그것은 실수가 무엇인지, 얼마나 흔한 지 그리고 얼마나 나쁜지, 그리고 그것이 진짜 선의의 실수인지 또는 어떻게 말했는지에 달려 있습니다.

어떤 바보가 5 분 동안 코드 검토를 30 분 내로 끌면 개인적으로 그것을 참을 수 없다. 왜냐하면 그는 모든 것을 그가 어떻게했는지에 따라 이름을 바꾸고 싶어하기 때문이다. "데이터 오브젝트로드" 를 "데이터 오브젝트 로더 구성 요소가 이제 데이터 오브젝트 스토리지 구성 요소에서 관련 데이터 오브젝트를로드합니다"로 변경할 필요 가 없습니다 .

/ rant :)


2
내 길을 고집하는 것이 한 가지입니다. 사물이 올바른 철자와 문법을 사용하도록 주장하는 것은 전적으로 또 다른 것입니다.
David Thornley

왜 내 대답이 공감대가되는지 모르겠지만 전혀 신경 쓰지 않습니다 ... 또한 David의 의견에 대한 나의 대답은 어디로 갔습니까? 어쨌든 100 % 정확한 영어 문법이 개발에 항상 바람직한 것은 아닙니다. 위의 예에서 "데이터 객체로드"는 완전한 문장이 아니지만 간결하고 현지화하기 쉽고 많은 공간을 차지하지 않는 두 가지 중 더 바람직한 표현입니다.
JohnL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.