나는 현재 Robert Martin의 Clean Code를 읽고 있습니다. 나는 그것이 훌륭하다고 생각하고 OO 코드를 작성할 때 그의 교훈을 마음에 새깁니다. 특히, 의미있는 이름을 가진 작은 함수를 사용하라는 그의 조언은 내 코드 흐름을 훨씬 더 매끄럽게 만든다고 생각합니다. 이 인용문에 의해 요약되는 것이 가장 좋습니다.
[W] e는 마치 현재의 추상화 레벨을 설명하고 다음 레벨에서 다음 TO 단락을 참조하는 TO 단락 세트 인 것처럼 프로그램을 읽을 수 있기를 원합니다.
( 37 페이지 클린 코드 : "TO 단락"은 부정사로 발음 된 문장으로 시작하는 단락입니다. "X를 수행하려면 단계 Y 및 Z를 수행합니다." "Y를 수행하려면 ..."등 ) 예를 들면 다음과 같습니다.
RenderPageWithSetupsAndTeardowns를 사용하기 위해 페이지가 테스트 페이지인지 확인하고, 그렇다면 페이지와 설정을 포함합니다. 두 경우 모두 HTML로 페이지를 렌더링합니다
나는 또한 직업을위한 기능 코드를 작성한다. 이 책에있는 Martin의 예제는 마치 마치 단락 세트 인 것처럼 분명하게 읽히지 만 매우 분명합니다. 그러나 "문단 세트처럼 읽음"이 기능 코드에 바람직한 품질인지 확실하지 않습니다. .
Haskell 표준 라이브러리 에서 예를 들어 보자 .
maximumBy :: (a -> a -> Ordering) -> [a] -> a
maximumBy _ [] = error "List.maximumBy: empty list"
maximumBy cmp xs = foldl1 maxBy xs
where
maxBy x y = case cmp x y of
GT -> x
_ -> y
그것은 마틴의 조언에서 얻을 수있는 한 멀지 만 간결하고 관용적 인 하스켈입니다. 그의 책에있는 자바 예제와는 달리, 나는 그가 요구하는 종류의 케이던스가있는 것을 리팩토링하는 방법을 상상할 수 없다. Clean Code 의 표준으로 작성된 Haskell 은 오래 걸리고 부자연 스럽습니다.
함수형 프로그래밍 모범 사례와 충돌하는 클린 코드 (최소 일부)를 고려하는 것이 잘못 되었습니까? 그가 다른 패러다임에서 말한 것을 재 해석하는 합리적인 방법이 있습니까?
xs
나쁜 이름이지만 i
루프 변수 처럼 함수형 언어에서 일반적입니다 .