문제

나는 "코드 감탄"문제를 논의하는 기사를 발견했습니다. 기본적으로 저자는 개발자가 자신이 작성하는 코드에 대해 더 회의적인 방법에 대해 이야기합니다. 우리가 코드를 너무 많이 "감탄"하고, 우리의 셀프를 첨부하여 우리 앞에 놓여있을 수있는 버그 및 기타 사고에 더 취약하게 만듭니다.

이 문제에 대해 어떻게 생각하십니까? 그리고이 문제를 피하거나 더 인식하는 방법에 대한 더 많은 팁이 있습니까?

도움이 되었습니까?

해결책

몇 년 전, 나는 작은 "취미"프로젝트에서 다른 사람과 함께 일하고 있었고, 우리가 물건을 다시 평가해야한다는 것을 깨달았습니다. 우리는 많은 코드를 작성했지만 모두 좋은 코드는 아닙니다.

우리는 우리가 넣은 모든 일을 "버리기"하고 싶지 않았습니다. 그러나 나는 무언가를 깨달았습니다. 가장 중요한 것은 우리가 넣어야 할 일의 양이었습니다. 지금부터.

우리는 이미 프로젝트에 많은 노력을 기울 였다는 사실을 바꿀 수 없었기 때문에 최소화하는 유일한 방법은 프로젝트가 필요로하는 작업의 양은 우리가 작업의 양을 최소화하는 것입니다. 아직하지 않았다.

그날 이후로 나는 내 코드에 첨부 된 것을 중단했다. 그것을 버리고 처음부터 시작한다는 것이 그것을 유지하고 내 요구에 적응하는 것보다 일이 적다는 것을 확신한다면, 나는 그것을 버릴 것입니다.

다른 팁

저의 고등학교 미술 교사는 우리가 최고의 그림으로 간주하고 찢어 지도록 격려했습니다. 그는 이것을 "영혼을 깨끗하게"불렀다. 그의 추론은 예술가로서 우리는 예술 작품을 창조하기 위해 운전했으며, 우리가 좋아하는 것을 만들어 내고 만족을 줄 때마다 계속 만들려는 동기는 줄어들 것입니다.

그래서 나는 그의 조언을 따르고 최고의 물건을 찢어 버렸습니다. 나는 오래된 일에 감탄하는 데 시간을 보내는 대신 새로운 것들을 만들었고 지속적으로 더 나아졌습니다. 코드로 동일한 원리를 따르려고 노력했지만 실제로는 작동하지 않습니다. 내 컴퓨터에는 찢어지기가 거의 불가능한 힘든 플라스틱 쉘이 있습니다.

Jeff Atwood의 블로그에서 조각을 게시합니다. 매년 덜 빨아, 그리고 나는 100%동의합니다.

나는 종종 매년 덜 빨아들이는 것이 겸손한 프로그래머가 어떻게 향상되는지라고 생각했습니다. 당신은 1 년 전에 쓴 코드에 불만을 표해야합니다. 그렇지 않다면, 즉 a) 1 년에 아무것도 배우지 못했고, b) 코드를 개선 할 수 없거나 c) 이전 코드를 다시 방문하지 않습니다. 이 모든 것은 소프트웨어 개발자에게 죽음의 키스입니다.

우리는 확실히 우리의 멋진 코드에 감탄하는 것을 좋아하지만 항상 존경해야 할 것을 쉽게 알 수있는 것은 아닙니다. 복잡하고 정교한 코드는 때때로 훌륭한 코드로 오인되지만 우아함과 단순성은 오히려 노력해야합니다.

두 가지 인용문이 떠 오릅니다.

"디버깅은 처음에 코드를 작성하는 것보다 두 배가 어렵습니다. 따라서 코드를 가능한 한 영리하게 작성하면 정의상 디버깅 할만 큼 똑똑하지 않습니다."

-Brian Kernighan

그리고

"모든 것을 가능한 한 간단하지만 간단하지는 않습니다."

-Albert 아인슈타인

Jonathan Edwards가 썼습니다 인상적으로 아름다운 에세이 이 주제에 대해 O'Reilly Book의 작품으로 인해 아름다운 코드. 마지막 단락은 다음과 같습니다. 그러나 나머지 에세이도 읽을 가치가 있습니다.

내가 배운 또 다른 교훈은 불신의 아름다움. 디자인에 대한 불만이 불가피하게 추악한 현실을 간과하면서 가슴 아픈 일로 이어지는 것 같습니다. 사랑은 눈이 멀지 만 컴퓨터는 그렇지 않습니다. 수년간 시스템을 유지하는 장기적인 관계는 직접성과 전통성과 같은 더 많은 국내 미덕을 이해하도록 가르칩니다. 아름다움은 이상 주의적 환상입니다. 실제로 중요한 것은 프로그래머와 코드 사이의 끝없는 대화의 품질입니다. 아름다움은 행복한 결혼 생활의 충분한 근거가 아닙니다.

이 같은 지혜의 다른 버전은 다른 분야에 존재합니다. 사무엘 존슨, 글쓰기에 관한 :

당신의 작곡을 읽고, 당신이 특히 괜찮다고 생각하는 구절을 만나면 어디를 가든, 그것을 치십시오.

William Faulkner의 버전은 훨씬 간결했습니다.“Darlings를 죽입니다.”

내 시아버지는 영화 편집자로 일하며 영화가 촬영되는 세트를 피해야합니다. 그가 방문해야 할 때, 그는 가능한 한 눈을 보호합니다. 마지막 영화에 장면을 포함 시킬지 여부를 결정할 때 장면을 촬영하는 데 얼마나 많은 노력이 필요한지에 영향을 받기를 원하지 않기 때문입니다. 중요한 것은 마지막 영화에서 장면이 얼마나 잘 작동하는지입니다.

내 에세이, "프로그래머로서의 진화"(내가 새로운 사용자가 아니었다면 연결될 것입니다)는 제가 작성한 코드에 대한 회의론을 배우는 것에 관한 것입니다. (쌍 프로그래밍은 여기에서 실제 모닝콜이었습니다). 어렵다!

나는 내 코드를 결코 존경하지 않습니다. 나는 내가 "빌린"다른 사람들의 코드에 감탄하고 그들을 모방하거나 더 잘 모방하고, 특히 내가 알지 못하는 것에 대해 더 많이 알 수 없다는 것을 알게됩니다. 가치있는 유일한 것은 동료 프로그래머가 내 코드에 감탄하고 빌리는 것입니다.

나는 그가 좋은 지적이라고 생각합니다. 팀워크를 방해하고 문제에 대한 최상의 해결책을 얻는 것이기 때문에 너무 많은 사람들과 함께 일하는 것은 실망 스럽습니다.

나는 약간 망상이 될 수 있으므로, 나는 현실을 근거로 유지할 수있는 관행을 제자리에 두려고 노력한다. 코드의 경우

  • 단위 테스트: 이것들은 추상적 인 "아름다움"과 달리 코드가해야 할 일에 더 집중합니다.

  • 공유 코드 소유권: 여기에는 두 개의 캠프가 있습니다. 사람들에게 코드에 대한 소유권을 더 많이주고 자존심이 인수하거나 덜주고 동료 압력을 가질 수 있습니다. 나는 사람들에게 더 많은 소유권을 부여하면이 코드의 감탄으로 이어질 수 있다고 생각합니다. 우리는 공유 코드 소유권을 연습하기 때문에 누군가가 내 완벽한 코드를 다시 작성하여 더 나은 마음으로 (그들의 마음에) 더 나은 코드를 다시 작성해야합니다. 나는 그것을 너무 많이 감탄하는 것이 시간 낭비이고 감정적으로 어려웠다는 것을 빨리 깨달았습니다.

  • 페어 프로그래밍: 누군가와 나란히 작업하면 현실적으로 유지할 수 있습니다.

  • 다른 피드백: 이것들은 모두 피드백 루프이지만 다른 피드백 루프입니다. 누군가가 그것을 사용하는 것보다 무언가가 작동하는지 볼 수있는 더 좋은 방법은 없습니다. 가능한 한 많은 사람들 앞에 작업을하십시오. 코드 리뷰가 있습니다. 읽다 다른 사람들의 코드. 운영 정적 코드 분석 도구.

나는 퍼플 필로트를 가지고 있습니다 - 나는 내 자신의 코드에 감탄하지 않기 때문에 똑같은 일을하는 새롭고 더 효율적이며 더 쉬운 방법을 끊임없이 찾고 있습니다. 나는 효과적인 C# 책을 좋아하고, 내가 존경하는 유용한 코드를 많이 선택했습니다.

나는 코드를 버리고 다시 시작하는 것에 대해 망설이지 않을 것입니다. 그러나 특정 시나리오에 대한 코드를 작성한 다음 버리면 반드시 처음부터 시작할 필요는 없습니다. 아마도 시나리오를 더 잘 파악할 수 있습니다. 다시 말해, 그것은 "사악한 문제"이거나 La Edison이 작동하지 않는 다른 방법을 찾았습니다.

그것은 더 넓은 질문을 제기합니다. 코드가 버려지지 않거나 적어도 재검토되지 않았다면 좋은 일이 정체되고있는 라이브러리에서 개발되고 있습니까?

코드에 감탄하는 데 아무런 문제가 없습니다 ... 이것은 미래에 점점 더 나은 코드를 작성하도록 동기를 부여하는 긍정적 인 강화 과정의 일부입니다.

하지만, 잘못 배치 또는 오용 감탄은 문제가 될 수 있습니다. 코드가 실제로 좋지 않거나 단위 또는 기타 테스트에 노출되지 않은 버그가 있거나 리팩토링/재 설계/교체가 필요한 경우이 잘못 배치 된 Atrimatoin은 문제입니다. 그리고 코드 검토와 같은 프로세스의 일부를 건너 뛰거나 코드에 대한 회의적인 태도를 갖지 않는 과정의 일부를 건너 뛰는 변명으로 감탄을 사용하는 것은 감탄의 오용입니다.

좋은 다른 것들과 마찬가지로 코드에 대한 감탄은 잘못 배치되거나 오용 될 수 있습니다. 그 자체로는 나쁘다는 의미는 아닙니다. 그것은 "종교는 사람들 사이의 갈등과 전쟁을 일으키기 때문에"나쁜 일입니다. "라고 말하는 것과 같습니다.

두 단어 : 코드 검토.

두 명 이상의 동료 개발자를 모아서 코드에 대한 검토/비평/의견을 초대하십시오. 'Twill은 코드에 약간의 가혹한 빛을 비 춥니 다.

더 건강한 관점을 갖는 것이 더 낫습니다. 우리는 로켓 과학자가 아니며 암을 치료하지 않습니다. 그것은 단지 일입니다.

(예, 건축가라면 건축 한 건물 전체를 자랑스럽게 생각하는 것이 합리적이지만, 실제로 개별 청사진에 포장 된 자존감이 많이 있거나 3 층의 옷장이 있습니다. 그들 자신?).

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