Scala Language
Best practices
Zoeken…
Opmerkingen
Geef de voorkeur aan vals, onveranderlijke objecten en methoden zonder bijwerkingen. Reik eerst naar hen. Gebruik vars, veranderlijke objecten en methoden met bijwerkingen wanneer u een specifieke behoefte en rechtvaardiging daarvoor hebt.
- Programmering in Scala , door Odersky, Spoon en Venners
Er zijn meer voorbeelden en richtlijnen in deze presentatie van Odersky.
Hou het simpel
Maak eenvoudige taken niet te ingewikkeld. Meestal heeft u alleen nodig:
- algebraïsche gegevenstypen
- structurele recursie
- monad-achtige api (
map
,flatMap
,fold
)
Er zijn veel ingewikkelde dingen in Scala, zoals:
-
Cake pattern
ofReader Monad
voor Dependency Injection. - Willekeurige waarden doorgeven als
implicit
argumenten.
Deze dingen zijn niet duidelijk voor nieuwkomers: gebruik ze niet voordat je ze begrijpt. Het gebruik van geavanceerde concepten zonder echte behoefte verdoezelt de code, waardoor deze minder onderhoudbaar is.
Pak niet teveel in één uitdrukking in.
- Vind betekenisvolle namen voor rekeneenheden.
- Gebruik
for
begrip ofmap
om berekeningen samen te combineren.
Laten we zeggen dat je zoiets hebt:
if (userAuthorized.nonEmtpy) {
makeRequest().map {
case Success(respone) =>
someProcessing(..)
if (resendToUser) {
sendToUser(...)
}
...
}
}
Als al uw functies een van Either
of een ander type Validation
retourneren, kunt u het volgende schrijven:
for {
user <- authorizeUser
response <- requestToThirdParty(user)
_ <- someProcessing(...)
} {
sendToUser
}
Liever een functionele stijl, redelijk
Standaard:
- Gebruik
val
, nietvar
, waar mogelijk. Hiermee kunt u naadloos profiteren van een aantal functionele hulpprogramma's, waaronder werkverdeling. - Gebruik
recursion
encomprehensions
s, geen lussen. - Gebruik onveranderlijke collecties. Dit is een gevolg van het gebruik van
val
waar mogelijk. - Focus op gegevenstransformaties, logica in CQRS-stijl en niet op CRUD.
Er zijn goede redenen om een niet-functionele stijl te kiezen:
-
var
kan worden gebruikt voor de lokale status (bijvoorbeeld binnen een acteur). -
mutable
geeft betere prestaties in bepaalde situaties.