태그 보관물: clean-code

clean-code

코드를“예쁘게 보이게”하는 데 집착하면 어떤 이점이 있습니까? 것을 의미합니다.

때때로 나는 코드를 “예쁘게 보이게”만드는 것보다 어리석은 시간 (시간)을 소비한다. 나는 물건을 대칭 적으로 보이게 만드는 것을 의미합니다. 실제로 전체 클래스를 빠르게 스크롤하여 “예쁘거나 깨끗하지 않은”것으로 보이는 것이 있는지 확인합니다.

나는 시간을 낭비하고 있습니까? 이런 종류의 행동에 가치가 있습니까? 때로는 코드의 기능이나 디자인이 변경되지 않을 수도 있습니다. 코드를 재구성하여 더보기 좋게 만듭니다.

나는 단지 완전히 강박 장애입니까? 아니면 이것에 숨겨진 이점이 있습니까?



답변

자동 포맷터를 사용하십시오. 실제로 수동으로 코드를 편집하는 데 많은 시간을 소비한다면 아무런 이유가 없기 때문에 도전을받지 않고 지루하지 않을 것이라고 생각할 것입니다. VS의 Ctrl + K, Cntrl + D는 전체 문서를 포맷합니다. 좀 더 무거운 것을 원한다면 스타일 경찰과 같은 것을 사용할 수 있습니다.

코드에 자부심을 갖는 것이 좋지만 똑똑한 (가장 효율적인 솔루션을 찾고 있습니다.이 경우 도구를 사용하여 지루한 프로세스를 자동화하고) 일을 끝내는 것 (다른 무엇을 할 수 있는지)은 아닙니다 그 시간 동안 일한 적이 있습니까?).


답변

더 잘 이해할 수 있도록 아무것도 바꾸지 않으면 시간 낭비입니다.


답변

숨겨진 코드는없고, 읽기 쉬운 코드와 유지 관리가 쉽습니다.

거대한 코드베이스가 없다면 “시간”은 약간 과도하게 보입니다. 모든 것이 완벽 할 필요는없고 단지 좋을 필요가 있습니다


답변

판단의 문제입니다. 당신이 시간을 보내고 있다면, 나는 당신이 정상을 넘어 가고 있다고 말할 것입니다. 그러나 자동 포맷터로는 할 수없는 일과 회사 코딩 표준에서 포착하기 어려운 코드를 더 읽기 쉽게하기 위해 할 수있는 일이 있습니다.

예를 들어 클래스에서 변수를 선언 할 때 논리 그룹화를 선호합니다. 논리를 쉽게 따라갈 수 있습니다.

코드는 일반적으로 “한 번 작성하고 많이 읽음”으로 간주되므로 독서 경험을 즐겁게 만드는 것은 좋은 습관입니다. 그러나 제 생각에는 레이아웃은 명확한 명명 규칙, 깨끗한 추상화 및 체계적인 메소드 서명보다 훨씬 중요합니다.

기본 사고 과정에 결함이 있기 때문에 심각한 WTF 순간을 일으키는 아름다운 형식의 코드를 보았습니다. 몇 시간을 소비한다면 레이아웃보다는 디자인 및 리팩토링에 소비합니다 ….


답변

아니 당신은 완전히 OCD되지 않습니다. 프로그래머로서 내가들은 가장 큰 칭찬은 “여러분의 코드는 너무 깨끗해서 내 동생이 알아낼 수있었습니다.”였습니다.

언젠가 누군가 당신의 코드를 지원해야 할 것입니다. 깨끗한 코드는 지원하기가 훨씬 쉽습니다. 그리고 언젠가는 너일지도 모른다. 6 개월 또는 1 년 후에는 자신이 한 일을 기억하지 못할 것입니다. 그러나 깨끗하고 읽기 쉬운 경우 빨리 돌아옵니다.

그것은 코드가 쓰레기라면 꽤 쓰레기가되는 데 도움이되지 않는다고 말했습니다. 그러나 잘 구성되어 있고 기능적인 문제가있는 경우 기능을 개선하기가 훨씬 쉬울 것입니다.


답변

아니오 – 코드 모양을 만드는 예쁜에 집착하고 요점 .

내가 찾은 몇 가지 지혜는 다음과 같습니다.

코드가 깔끔해야하는지 물어보십시오 .

pretty의 정의에 따라 시간을 낭비하거나 낭비하지 않을 수 있습니다.

포맷팅의 기본 정리 (The Fundamental Theorem of Formatting)는 좋은 시각적 레이아웃이 프로그램의 논리적 구조를 보여준다고 말합니다. 코드를 예쁘게 보이게하는 것은 가치가 있지만 코드 구조를 보여주는 것보다 가치가 없습니다. [pg 732, 코드 컴플리트 2 판, Steve McConnell]

동시 버전 시스템 을 사용 하여 코드 변경 사항을 추적하는 경우 -동일한 커밋 내에서 코드 형식 변경 사항과 논리적 / 추가 기능 변경 사항을 혼합하지 마십시오.

변경 사항을 찾기가 더 어려워지고 다른 팀 구성원이 파일을 편집하는 경우 불필요한 병합 충돌이 발생할 수 있습니다. 형식을 변경해야하는 경우 다른 팀 구성원이 해당 파일에서 작업하고 있지 않은지 확인하십시오. [파라 그래스, Pg 93, Subversion을 사용한 실용적인 버전 관리, 2 판]

또한 Martin Fowler는 하루 종일 ‘두 개의 모자를 쓰고’서로 전환하는 것에 대해 이야기합니다. 기능 추가 용 모자 하나, 리팩토링 용 모자 하나.

  1. 새로운 기능 추가를 고려합니다 (Feature Hat)
  2. 기존 코드를 잘 읽고 이해하면서 깔끔하게 정리하십시오. (리팩토링 모자)
  3. 변경 사항을 커밋하십시오.
  4. 기능을 추가하십시오. (피처 모자) 등등 ….

[낙서 pg 57ish, 리팩토링, 마틴 파울러]

따라서 전체 코드베이스를 확인하는 데 몇 시간을 소비하지 마십시오. 다음 기능을 추가하기 위해 필요한 코드를 충분히 확인하십시오.

간단히 말해서 … 각 코드는 처음 도착했을 때보 다 더 좋은 상태로 두십시오.


답변

순수한 형식이라면 코드를 어떻게 형식화하고 싶은지 예쁜 프린터를 가르치는 데 시간을 투자하는 것이 좋습니다. 다소 선행 비용이 들지만, 타이머를 2-3 번 사용하는 것이 좋습니다.

실제 리팩토링이라면 아닐 수도 있습니다. 개념적으로 깨끗한 코드는 앞으로 더 쉽게 수정하고 “항상 깨끗하게”하는 것이 다른 냄새 나는 코드가 있기 때문에 무언가를 통과하려는 유혹을 줄입니다.