scala - How to determine to use trait to 'with' or class to 'inject'? -


i'm puzzled choose trait or class when writing scala code.

at first, have controller with several traits:

class mycontroller extends controller                     transactionsupport                     jsonconvertersupport                     loggersupport 

in these traits, defined methods , fields can used in mycontroller directly.

but friend says: when extends or with trait, should be a trait.

look @ mycontroller, controller, isn't transactionsupport, not jsonconvertersupport, not loggersupport, should not with them.

so code becomes:

class mycontroller(transupport: transactionsupport,                     jsonconverter: jsonconvertersupport,                     loggersupport: loggersupport) extends controller 

but don't feel code, seems strange.

i see traits used heavily in scala code, when should use or use classes inject?

i'll refer interfaces should adjectives. though traits may play part of class (and, therefore, nouns , respect "is-a" relationship), when used mixins they'll tend play part of interfaces.

as "adjective", trait add qualifying property whatever extending. example, may comparable or serializable.

it can bit hard find adjective fit -- adjective use loggersupport? -- don't feel overly constrained that. aware wrong thing of traits "is-a" relationship.

i try avoid using traits replace "has-a" relationships, though.


Comments

Popular posts from this blog

c++ - How to add Crypto++ library to Qt project -

jQuery Mobile app not scrolling in Firefox -

How to use vim as editor in Matlab GUI -