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 patternofReader Monadvoor Dependency Injection. - Willekeurige waarden doorgeven als
implicitargumenten.
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
forbegrip ofmapom 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
recursionencomprehensionss, geen lussen. - Gebruik onveranderlijke collecties. Dit is een gevolg van het gebruik van
valwaar mogelijk. - Focus op gegevenstransformaties, logica in CQRS-stijl en niet op CRUD.
Er zijn goede redenen om een niet-functionele stijl te kiezen:
-
varkan worden gebruikt voor de lokale status (bijvoorbeeld binnen een acteur). -
mutablegeeft betere prestaties in bepaalde situaties.