“청결 법”관행이 실제로 깨끗하고 유용합니까? [닫은]


11

저는 현재 대기업에서 인턴십을하고 있으며 소프트웨어 제공 구조에 많은 변화가 있습니다 (Agile로 이동).

지난 몇 달 동안 나는 Clean Code관습에 대한 이 종교적 애착과이 이 개발자들을위한 성경과 같은 것으로 나타났습니다 .

이제 깨끗한 코드의 가장 중요한 기능 중 하나는 이해하기 쉬운 이름 지정 및 엄격한 리팩토링을 기반으로하는 자체 설명 코드입니다. 그 뒤에 no commenting규칙 이 따릅니다 .

이 깨끗한 코드는 장기적인 투자로 코드 유지 관리 및 개선을 쉽게 수행 할 수 있지만 ...

Clean Code에 대한 경험과 내가 너무 보수적이거나 일시적인 추세인지에 대한 의견을 공유하겠습니까?


1
많은 좋은 질문은 전문가 경험을 바탕으로 어느 정도의 의견을 생성하지만이 질문에 대한 답변은 사실, 참조 또는 특정 전문 지식이 아닌 의견에 거의 근거한 경향이 있습니다.
gnat

4
나는 그 책에 대해 매우 높은 의견을 가지고 있지 않습니다 (저자에도 불구하고). 일반적으로 너무 독단적이지 않습니다. 대부분의 프로그래밍 권장 사항은 실제로 작동하는 것으로 나타 났지만 절대 사실은 아니므로 너무 걱정하지 마십시오. 계속해서 읽고 더 정확한 느낌을 가지고 가십시오. 그러나 바퀴를 재발 명하지 마십시오. 우리보다 더 나은 솔루션을 이미 찾은 것보다 똑똑한 사람 일 가능성이 있습니다.
DPM

2
70 자 이름을 가진 메소드는 아마도 둘 이상의 일을합니다. SRP 위반이 맞습니까?!
Tombatron

1
깨끗한 코드에 관심이 적은 회사의 개발자 인 지금부터 5 년에서 10 년 사이에 또 ​​다른 생각이 있습니다.이 교의적인 연습에 정말 감사하겠습니다.
Tombatron

3
"의견 없음"하에서 (간결하게) 일한 결과, 나는 그것이 규칙보다 강력한 지침 이 되기를 매우 선호한다 . 일반적으로 모호한 비즈니스 논리에서 주석이 필요한 경우가 있습니다. 호출 된 메소드 CalculateFoonicityMetric()는 정확히 수행중인 작업을 알려주며 잘 작성된 코드는 방법을 보여 주지만 둘 다 왜 그런지 알려주지 않습니다 . 코드는 무엇인지 (이 곱하기, 다른 것으로 나누기, 제곱하기,이 비트 추가하기 ...)에 분명 할 수 있지만 (factor = a * b / c; 음수 foo를 고려하기위한 square, 조정하십시오) 드리프트를 위해 ...). 이유를 설명하는 빠른 의견에 감사드립니다.
anaximander

답변:


17

이 깨끗한 코드는 장기적인 투자로 코드 유지 관리 및 개선을 쉽게 수행 할 수 있지만 ...

물론.

리팩토링은 매우 중요하지만 방법을 이동하는 데 75 %의 시간을 소비하고 적절한 제목을 결정하는 데 많은 시간을 소비하는 것이 생산적인 것으로 보이지는 않습니다.

그러나 대기업은 아마도 수십 년 동안 나쁜 코드를 정리해야 할 것입니다. 그렇게하려면 많은 시간과 노력이 필요합니다.

알아야 할 중요한 것은 당신이 둘 다 맞다는 것입니다. "클린 코드"는 매우 중요하며 클린 코드는 보편적으로 존중받는 방법입니다. 회사가 이제 막 길을 시작했기 때문에 더 많은 경험을 가진 그룹보다 더 많은 책을 보게 될 것입니다. 그들이 잠시 동안 그것을 한 후에는 무엇이 효과가 있고 무엇이 효과가 없는지를 배우기 시작할 것입니다. 일단 그들이 더 잘 이해하면 깨끗한 코드를 유지하지만 70 개의 문자 함수 이름으로 이어지지 않는보다 실용적이고 자연스러운 접근 방식을 따르게됩니다.


4

나는 원래 의견을 쓰고 있었다. 고려해야 할 관점보다 적은 대답을하려고 노력할 것입니다. 그러나 이해하기 쉬운 이름 지정 및 리팩토링과 같은 "클린 코드"관행을 절대적으로 보증합니다.

향후 코드 손상을 방지하기 위해 주석이 필요한 경우가 있으므로 항상 주석 없음 규칙을 싫어했습니다 . 일반적으로 수행중인 작업과 이유로 제한해야합니다. 코드가 예상치 못한 작업을 수행하거나 알고리즘을 교체해야하는 경우에는 드물게 사용하십시오.

코드를 읽거나 유지 관리 할 때 생산성을 고려하십시오. 코드 수명 동안 코드를 작성할 때 생산성보다 더 중요 할 수 있습니다. 이러한 관행이 이러한 작업의 생산성에 도움이됩니까?

경험이 쌓이면 이러한 관행은 심오 해지고 생산성을 저하시키지 않아야합니다. 코드에서해야 할 일을 명확히하기 때문에 올바른 이름을 선택하면 시간이 더 오래 걸릴 수 있습니다. (이러한 설명을 통해 코딩 및 디버깅 속도가 빨라질 수 있습니다.) 이로 인해 필요한 것만 수행하거나 버그가 적은 코드가 생성됩니까? 이것이 생산성에 어떤 영향을 미칩니 까?

올바른 분석법 이름을 선택하는 데 걸리는 시간은 분석법의 목적이 무엇인지 더 잘 이해하는 데 즉시 도움이됩니다. 메소드 이름 "iterateOverCustomers"와 "locateActiveCustomers"를 비교하십시오. 어느 것이 기능의 의도를 전달합니까? 필요한 경우 어느 것이 리팩터링하기가 더 쉬울까요?


3
사람들이 Clean Code 책에 속한다고하는 "주석 없음"규칙은 실제로 책의 어느 곳에도 있지 않다는 점을 지적하고 싶습니다. 반대로, 의견에 대한 전체 장이 있으며,이 중 절반은 많은 유형의 "좋은 의견"과 "나쁜 의견"에 대한 섹션을 설명하는 데 사용됩니다. 문제에 대한 저자의 의견은 실제로 많은 사람들이 그에게 신용을주는 것보다 훨씬 합리적입니다.
에릭 킹

나는 일반적으로 "댓글 없음"규칙에 대해 언급하고있었습니다. 언어 정의에서 주석을 제거하라는 제안이있는 언어로 작업했습니다. 좋은 의견이나 나쁜 의견이 없습니다. 당시 우리는 어떤 경우에 쓰러지는 것이 바람직한 코드 블록에 주석을 달았습니다. 그러한 경우라는 경고가 있었으며 그 시점에서 새로운 코드 블록을 추가하지 않아야합니다.
BillThor

그래, 그건 나에게 매우 극단적 인 것 같습니다.
Eric King
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.