함수는 코드 중복을 최소화하는 데 사용될뿐만 아니라 긴 함수를 작은 함수로 분할하여 가독성을 높이고 코드 자체 주석을 작성하는 데 사용됩니다. 그러나이 이득은 기능 또는 방법 당 LOC 수에 반비례하지 않습니다. 그렇지 않으면 우리는 한 줄 또는 두 줄의 코드 만 포함하는 수많은 함수를 갖게 될 것입니다.
이로 인해 궁금해 졌습니다. 함수 당 최적의 LOC 수가 있습니까? 그렇다면 무엇이며 언어간에 차이가 있습니까?
함수는 코드 중복을 최소화하는 데 사용될뿐만 아니라 긴 함수를 작은 함수로 분할하여 가독성을 높이고 코드 자체 주석을 작성하는 데 사용됩니다. 그러나이 이득은 기능 또는 방법 당 LOC 수에 반비례하지 않습니다. 그렇지 않으면 우리는 한 줄 또는 두 줄의 코드 만 포함하는 수많은 함수를 갖게 될 것입니다.
이로 인해 궁금해 졌습니다. 함수 당 최적의 LOC 수가 있습니까? 그렇다면 무엇이며 언어간에 차이가 있습니까?
답변:
여러 줄 대신에 내가 사용할 기준은 각 함수가 한 가지 작업 만 수행하고 잘 수행해야한다는 것입니다.
오래된 경험 법은 스크롤없이 화면에 기능이 완전히 표시되어야한다는 것입니다.
기본 개념은 한 번에 전체 기능을 볼 수 없으면 기능이 너무 복잡하므로 더 기본적인 부분으로 분할해야한다는 것입니다.
이 규칙은 매우 실용적이고 유용하지만 공식적인 규칙은 함수에서 하나의 논리적 단계 만 유지해야한다는 것입니다. 함수는 기본 작업 만 수행합니다. 작업을 더 많은 기본 조각으로 나눌 수 있으면 기능을 분할해야합니다.
화면이 커지고 글꼴 크기가 작아집니다. 사람들이 서로 다른 크기의 엄지 손가락을 가지면 엄지 손가락 규칙이 제대로 작동하지 않습니다.
간결합니다. 함수가 여러 가지 작업을 수행하는 경우 더 작은 함수로 나누는 것이 좋습니다.
메소드에서 이상적인 코드 줄 수는 가변적입니다. 기본적으로 함수 정의 컨텍스트 내에서 수행해야 할 작업을 수행하기에 충분한 코드 만 작성하려고합니다. 나는 이것을 일종의 단일 책임 원칙 으로 생각 하고 클래스 대신 메소드에만 적용됩니다.
메소드에 많은 논리와 완료해야 할 단계가있는 경우 메소드를 여러 개별 단계로 나누는 것이 좋습니다. 이러한 각 단계는 필요에 따라 새로운 방법으로 추출됩니다.
"그렇지 않으면 우리는 한 줄 또는 두 줄의 코드 만 포함하는 수많은 함수를 갖게 될 것입니다."
각 방법이 적을수록 더 쉽게 정의되고 이해하고 관리하기가 더 쉽습니다. 필요한 경우 수백 가지 방법을 사용하는 데 아무런 문제가 없습니다. 또한 앞에서 언급 한 SRP에 따라 메서드가 더 작고 관리하기 쉬운 조각으로 분리 된 경우 새 클래스를 추출하기가 더 쉬워집니다.
대답은 물론 42 입니다.
주의 사항 : 어떤 기능도 SRP를 위반하지 않거나 스패 니치 조사 에 직면해야합니다 .
몇 줄은 줄의 양을 줄이는 방법을 알려줍니다.
몇 가지 단서가 있습니다.
함수의 목적과 사용법을 설명하는 주석을 작성하는 데 문제가 있으면 너무 깁니다.
함수에서 코드 섹션의 활동을 설명하는 주석을 작성하려는 경우 함수가 너무 깁니다.
다른 함수에서 코드를 붙여 넣는 경우 둘 다 너무 길다 (해당 코드를 별도의 함수로 추출).
클래스 데이터 멤버를 로컬 변수와 구분하기 위해 코딩 규칙이 필요한 경우 함수가 너무 길고 클래스에 멤버가 너무 많습니다.
함수를 읽는 동안 메모를해야하는 경우에는 너무 깁니다.
각각 한두 줄 길이의 함수 톤을 갖는 것이 반드시 나쁜 것은 아닙니다. 그 작은 기능들이 처음에 예상했던 것보다 훨씬 더 많이 재사용되었다는 것을 알았습니다.