문제

간단한 업데이트를하기 위해 누군가로부터 프로젝트를 인수하면 이름 지정 컨벤션을 따르나요? 방금 이전 프로그래머가 어디에서나 헝가리 표기법을 사용한 프로젝트를 받았습니다. 우리의 핵심 제품은 이름 지정 표준을 가지고 있지만, 우리는 많은 사람들이 수년에 걸쳐 맞춤보고를하고 그들이 느끼는 모든 것을 수행했습니다.

그래도 코드에 이미 모든 변수 이름을 변경할 시간이 없습니다.

나는 그들의 명명 대회를 계속하기 위해 Readablity에 경향이 있습니다.

도움이 되었습니까?

해결책

네 저도 그렇습니다. 당신을 물려받은 사람들이 쉽게 따라갈 수있게합니다. 이해하기 어려운 경우 코드를 조금 더 읽을 수 있도록 코드를 조금 정리하려고합니다.

다른 팁

저자가 쓴대로 코드를 남기는 것이 좋습니다. 해당 코드가 내부적으로 일관된 한. 불일치로 인해 코드를 따르기 어려운 경우, 미래 관리자 (아마도 귀하)에 대한 책임이있어 명확하게 만들 수 있습니다.

불쌍한 변수 등을 사용하기 때문에 기능이 무엇을하는지 알아내는 데 40 시간을 소비하면 ~해야 한다 Refactor/명확성을위한 이름을 바꾸십시오/해설 추가/상황에 적합한 모든 것을 수행하십시오.

즉, 유일한 문제는 저자가 사용한 대부분의 일관된 스타일이 회사 표준이나 익숙한 것과 다르다는 것입니다. 모든 것을 바꾸는 데 시간을 낭비하고 있다고 생각합니다. 또한, 원래 저자가 더 이상 코드를 인식하지 못하기 때문에 여전히 질문에 대한 질문에 사용할 수 있다면 전문 지식을 잃을 수 있습니다.

기존 코드를 표준으로 변경하지 않는다면 파일을 변경하는 한 원래 규칙을 고수 할 것입니다. 같은 파일에서 두 가지 스타일의 코드를 혼합하면 일관된 코드 스타일이 가질 수있는 이점을 파괴하고 있으며, 다음 사람은 끊임없이 자신에게 묻어야합니다. )? "

타사 라이브러리를 가져올 때 이런 종류의 일이 더욱 까다로워집니다. 다시 작성하고 싶지 않지만 코드 스타일은 귀하와 일치하지 않을 수 있습니다. 결국, 당신은 몇 가지 다른 명명 규칙으로 끝나고, "우리의 코드"와 "그들의 코드"사이에 명확한 선을 그리는 것이 가장 좋습니다.

종종 스타일 가이드를 준수하기 위해 코드베이스로 도매 변경을하는 것은 부가 가치가 거의없는 새로운 버그를 도입하는 방법 일뿐입니다.

이것은 당신이해야한다는 것을 의미합니다.

  1. 작업중인 코드를 업데이트하여 작업 할 때 가이드 라인을 준수하십시오.

  2. 코드의 규칙을 사용하여 향후 유지 보수 노력을 보장합니다.

나는 2.를 추천하지만, 헝가리 표기법은 내 눈의 피를 흘리게한다 : p.

당신이 다른 사람들이 쓴 코드를 유지하고 다른 사람들이 당신을 따라 유지하려고한다면, 당신은 무시 무시한 변화를하지 않기 위해 관련된 모든 사람에게 빚을지고 있습니다. 그들이 당신이 변경 한 내용을 확인하기 위해 소스 코드 제어 시스템으로 들어가면, 당신이 작업중 인 문제를 해결하는 데 필요한 것이 무엇인지 알 수 있어야합니다. 좋아하는 브레이스 매칭 컨벤션에 맞습니다.

물론 원래 코드가 실제로 짜증이 나면 모든 베팅이 꺼져 있습니다.

일반적으로, 나는이 시나리오에서 표준에 대한 컨벤션과 가독성을 위해 갈 것입니다. 아무도 그 대답을 좋아하지 않지만 코드를 장기적으로 유지하는 것이 옳은 일입니다.

좋은 프로그래머의 읽기 코드 일 때, 그는 가변 이름을 구문 분석하고 최소한 소스 파일 내에서 일관성이있는 한 머리 속에 몇 가지를 추적 할 수 있어야합니다. 그러나 그 일관성을 위반하면 프로그래머가 코드를 읽는 사람이인지 불협화음을 겪게 될 것입니다. 그러면 추적하기가 조금 더 어려워 질 것입니다. 그것은 살인자가 아닙니다 - 좋은 프로그래머는 그것을 통과 할 것이지만 그들은 당신의 이름을 저주하고 아마 당신을 게시 할 것입니다. thedailywtf.

코드가 일관되게 유지되므로 (일관되게 추악하더라도) 변수 이름 지정 규칙을 혼합하는 것보다 더 읽기 쉬운 동일한 명명 규칙을 계속 사용할 것입니다. 인간의 두뇌는 패턴 인식에 다소 능숙한 것처럼 보이며, 당신은 상기 패턴을 무시하고 뇌를 곡선으로 던지기를 원하지 않습니다.

즉, 나는 헝가리어 표기법 몇 개 외에는 아무것도 없지만 그것이 당신이 함께 일해야한다면 ...

파일이나 프로젝트가 일관된 스타일을 사용하여 이미 작성된 경우 기존 스타일과 충돌/모순 되더라도 해당 스타일을 따라야합니다. 코드 스타일의 주요 목표 중 하나는 일관성이므로 이미 일관된 코드에 다른 스타일을 도입하면 그 일관성이 느슨해집니다.

코드가 제대로 작성되지 않고 이해하기 위해 어느 정도의 정리가 필요한 경우 스타일을 청소하는 것이 더 관련성이 높은 옵션이되지만, 필요한 경우에만 (특히 단위 테스트가없는 경우) 만 수행해야합니다. 예상치 못한 파괴 변경을 도입 할 가능성이 있습니다.

확실히 맞아요. 원래 프로그래머의 명명 컨벤션을 따르는 것이 바람직하지 않다고 생각하는 한 가지 사례는 원래 프로그래머 (또는 그 이후로 코드를 수정 한 후속 개발자)가 일관된 명명 규칙을 따르지 못했을 때입니다.

예. 나는 실제로 이것을 표준 문서에 썼다. 현재 회사에서 만들었습니다.

기존 코드는 다른 모든 표준과 관행 (산업 전반의 표준이든이 문서에서 발견되는 것)를 대체합니다. 대부분의 경우 두 가지 이유로 동일한 파일의 기존 코드와 일치하도록 코드를 카멜레온해야합니다.

  1. 단일 모듈/파일 내에 여러 개의 고유 한 스타일/패턴을 피하기 위해 (표준 및 관리 가능성의 목적과 모순).
  2. 기존 코드를 리팩토링하려는 노력은 불필요하게 더 많은 비용이 많이 드는 경향이 있습니다 (시간이 많이 걸리고 새로운 버그 도입에 도움이됩니다).

개인적으로 다른 변수 이름 지정 체계가있는 프로젝트를 인수 할 때마다 이전 프로그래머가 사용했던 것과 동일한 체계를 유지하는 경향이 있습니다. 내가 다른 일을하는 유일한 것은 내가 추가 한 새로운 변수에 대한 것입니다. 변수 이름 앞에 밑줄을 넣습니다. 이렇게하면 소스 기록에 들어가거나 버전을 비교하지 않고 내 변수와 코드를 신속하게 볼 수 있습니다. 그러나 단순히 읽을 수없는 코드 나 주석을 물려받을 때 나는 보통 그들을 통과하여 모든 것을 다시 쓰지 않고 최선을 다해 청소할 것입니다 (그것에 도달했습니다). 조직은 확장 가능한 코드를 갖는 데 핵심입니다!

코드를 읽을 수 있다면, 어쨌든 읽을 수없는 경우 동일한 규칙을 복용하려고합니다.

의존합니다. 새로운 앱을 구축하고 Crap Variable Naming으로 레거시 앱에서 코드를 훔친 경우 앱에 들어가면 리팩터를 리팩터링합니다.

그렇습니다. 더 실망스러워하는 Litte가 있습니다. 내가 다시 한 프로젝트에는 파일을 조작하는 두 가지 방법, 화면을 구현하는 두 가지 방법, 두 가지 다른 기본 구조가있었습니다. 두 번째 코더는 기본 코드에서 호출되는 새로운 기능을 DLL의 일부로 만들기까지했습니다. 주석은 악몽이었고 나는 패러다임과 희망을 모두 배워야했다.

로마에서 로마인처럼 할 때.

(인덱스 변수 이름을 제외하고, 예를 들어 "iarrayindex ++". 그 관용구를 용서하지 마십시오.)

버그 수정을 외과 적 절차로 만드는 것을 생각합니다. 들어가고, 가능한 한 적게 방해하고, 고치고, 나가고, 가능한 한 작은 흔적을 남겨 두십시오.

그러나 불행히도,이 규칙에 살지 않은 몇몇 개발자들이 선택할 수있는 몇 가지 명명 규칙이 있습니다.

그러나 때때로 우리는 결국 일을 똑바로 세울 시간을 얻습니다. 결국에는 좋고 깨끗할 것입니다.

코드에 이미 이름 지정을 포함한 일관된 스타일이 있으면 따라야합니다. 이전 프로그래머가 일관성이 없다면 회사 표준이없는 경우 회사 표준 또는 개인 표준을 자유롭게 적용 할 수 있습니다.

두 경우 모두 댓글로 프레임으로 변경 한 변경 사항을 표시하려고합니다. 나는 오늘날 CVS 시스템으로 이것이 종종 완료되지 않은 것을 알고 있지만 여전히 그렇게하는 것을 선호합니다.

불행히도, 대부분의 경우 대답은 예입니다. 대부분의 경우, 코드는 좋은 규칙을 따르지 않으므로 선례를 따르기가 어렵습니다. 그러나 가독성을 위해서는 때로는 흐름과 함께 갈 필요가 있습니다.

하지만, 그것이 기존 코드를 "냄새"로 더 잘 리팩터링 할 수있는 응용 프로그램이 충분히 작다면 그렇게 할 것입니다. 또는 이것이 더 큰 재 작성의 일부라면, 현재 코딩 표준으로 코딩을 시작할 것입니다. 그러나 이것은 일반적으로 그렇지 않습니다.

기존 앱에 표준이 있다면 따라하는 것이 가장 좋다고 생각합니다. 표준이 없다면 (탭과 공간이 혼합되어있는 곳, 어디에서나 ... 오, 공포), 나는 내가 느끼는 느낌이 가장 좋으며 일반적으로 형식 도구 (VIM과 같은)를 통해 기존 코드를 실행합니다. 일관된 스타일이있는 경우 항상 기존 코드의 대문자 스타일 등을 유지하겠습니다.

이 규칙에 대한 나의 예외는 누군가가 내 머리에 총을 가지고 있지 않으면 헝가리 표기법을 사용하지 않을 것입니다. 나는 기존 물건의 이름을 바꾸는 데 시간을 할애하지 않지만, 내가 추가 한 것은 헝가리 사마귀를 가지고 있지 않을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top