Scala Language
모범 사례
수색…
비고
vals, 불변의 객체 및 부작용없는 메소드를 선호합니다. 그들에게 먼저 도달하십시오. vars, 변경 가능 객체 및 부작용이있는 메소드를 사용할 필요가있을 때이를 사용하십시오.
- Odersky, Spoon, Venners에 의한 Scala 프로그래밍
단순하게 유지하십시오.
간단한 작업을 지나치게 복잡하게하지 마십시오. 대부분의 경우 다음과 같은 경우에만 필요합니다.
- 대수 데이터 유형
- 구조 재귀
- 모나드 같은 API (
map
,flatMap
map
,fold
)
스칼라에는 다음과 같이 복잡한 것들이 많이 있습니다.
- 의존성 주입을위한
Cake pattern
또는Reader Monad
. - 임의의 값을
implicit
인수로 전달합니다.
이 점을 처음 접하는 사람들에게는 명확하지 않습니다. 이해하기 전에 사용하지 마십시오. 실제 필요없이 고급 개념을 사용하면 코드를 난독 화하여 유지 관리하기가 쉽지 않습니다 .
하나의 표현에 너무 많이 넣지 마십시오.
- 계산 단위의 의미있는 이름을 찾습니다.
- 사용
for
지능형 또는map
함께 계산을 결합 할 수 있습니다.
다음과 같은 것을 가정 해 봅시다.
if (userAuthorized.nonEmtpy) {
makeRequest().map {
case Success(respone) =>
someProcessing(..)
if (resendToUser) {
sendToUser(...)
}
...
}
}
모든 함수가 Either
또는 다른 Validation
과 같은 유형을 리턴하면 다음과 같이 작성할 수 있습니다.
for {
user <- authorizeUser
response <- requestToThirdParty(user)
_ <- someProcessing(...)
} {
sendToUser
}
합리적으로 기능적 스타일 선호
기본적으로:
- 사용
val
,하지var
가능한 한. 따라서 작업 분배를 포함한 여러 기능 유틸리티를 완벽하게 활용할 수 있습니다. - 루프가 아닌
recursion
및comprehensions
사용하십시오. - 불변의 콜렉션을 사용하십시오. 가능할 때마다
val
을 사용하는 것은 비천한 일입니다. - 데이터 변환, CRQ가 아닌 CQRS 스타일 논리에 중점을 둡니다.
비 기능적 스타일을 선택해야하는 좋은 이유가 있습니다.
-
var
는 로컬 상태 (예 : 액터 내부)에 사용될 수 있습니다. -
mutable
은 특정 상황에서 더 나은 성능을 제공합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow