문맥
에서 클린 코드 , 35 페이지, 그것은 말한다
이는 if 문, else 문, while 문 등의 블록은 한 줄 길이 여야 함을 의미합니다. 아마도 그 라인은 함수 호출이어야합니다. 이렇게하면 둘러싼 함수가 작게 유지 될뿐만 아니라 블록 내에서 호출 된 함수의 이름이 잘 설명 될 수 있으므로 다큐멘터리 값도 추가됩니다.
나는 완전히 동의합니다.
나중에 40 페이지의 함수 인수에 대해 설명합니다.
함수에 대한 이상적인 인수 수는 0입니다 (나일론). 다음은 하나 (모나 딕)가오고 그 뒤에는 2 (이차)가옵니다. 가능한 경우 세 가지 주장 (삼국 법)을 피해야합니다. 3 개 이상 (다 극적)은 매우 특별한 타당성을 요구하므로 어쨌든 사용해서는 안됩니다. 인수는 어렵다. 그들은 많은 개념적 힘을 취합니다.
나는 완전히 동의합니다.
발행물
그러나 나는 종종 다른 목록에서 목록을 작성하는 것을 발견하고 두 가지 악 중 하나와 함께 살아야합니다.
어느 내가 블록에 두 줄을 사용하여 , 결과에 추가하는 것은, 하나를 만들기위한 하나
public List<Flurp> CreateFlurps(List<BadaBoom> badaBooms)
{
List<Flurp> flurps = new List<Flurp>();
foreach (BadaBoom badaBoom in badaBooms)
{
Flurp flurp = CreateFlurp(badaBoom);
flurps.Add(flurp);
}
return flurps;
}
또는 항목을 추가 할 목록 의 함수 에 인수를 추가하여 "한 인수를 더 악화시킵니다".
public List<Flurp> CreateFlurps(List<BadaBoom> badaBooms)
{
List<Flurp> flurps = new List<Flurp>();
foreach (BadaBoom badaBoom in badaBooms)
{
CreateFlurpInList(badaBoom, flurps);
}
return flurps;
}
의문
내가 보지 못하는 (단점) 장점이 있습니까? 또는 특정 상황에서 그러한 이점이 있습니까? 이 경우 결정을 내릴 때 무엇을 찾아야합니까?
f(g(x))
스타일 가이드에 맞지 않으면 스타일 가이드를 고칠 수 없습니다. 내 말은, sqrt(x*x + y*y)
네 줄로 나뉘 지 않습니까? 그리고 그것은 두 개의 내부 중첩 수준 (gasp!)에 대한 세 개의 중첩 된 하위 표현식입니다! 목표는 단일 연산자 설명이 아닌 가독성 이어야합니다 . 나중에 원한다면, 당신을위한 완벽한 언어가 있습니다 : 어셈블러.
mov
명령어 만 사용 jmp toStart
하고 끝에는 하나만 사용하여 Turing-complete 컴퓨터를 만들 수 있습니다 . 누군가 실제로 그것을 정확하게 수행하는 컴파일러를 만들었습니다 : D
rlwimi
PPC에 대한 악명 높은 지시는 말할 것도 없습니다 . (이것은 왼쪽 단어 즉시 마스크 삽입 회전을 나타냅니다.)이 명령은 5 개의 피연산자 (2 개의 레지스터 및 3 개의 즉각적인 값)를 가져야하며 다음과 같은 작업을 수행했습니다. 즉, 2 개의 다른 즉시 피연산자에 의해 제어되는 1 비트의 단일 런으로 생성되고 다른 레지스터 피연산자의 마스크에서 1 비트에 해당하는 비트는 회전 된 레지스터의 해당 비트로 대체되었습니다. 매우 멋진 수업 :-)
flurps.Add(CreateFlurp(badaBoom));
?