Very interesting comment about the notation for package-level scoping. When I worked with Java, most of the devs I worked alongside also used package-level access for more complicated private methods in order to unit test, but I've never seen that pattern used in Scala. How do you generally test private methods in Scala? Would an inner class work? Path-dependent types in Scala seem to make this approach more elegant…
I use ScalaTest's PrivateMethodTester for testing private methods.
Real world feedback from a Java dev using Scala
11–17 of 17 posts
Re: Real world feedback from a Java dev using Scala
#12That's quite similar to how it is with C# and F#. Writing C# code just feels _so_ verbose and cumbersome to do even the most trivial tasks. And yes, the F# compiler is around 1/8th the speed of the C# compiler, at best - possibly much worse.
Does F# have live compilation like C# right now? (If I type invalid C# code, then it tells me right away by underlining the invalid code.)
Re: Real world feedback from a Java dev using Scala
#13I'm in the same shoes with OP. Here's how my Scala skill progresses: In the beginning, I wrote Scala "the Java way", sans semi-colons. Then I omit dots and parenthesis whenever possible ( foo.do(bar) -> foo do bar ). Then I learn to use immutable declaration ( var -> val ) and learn that expressions like this: var i = 0 if (something) { // Additional logic i = 1 } Can be made immutable like this: val i = { if (someth…
final int i;
if (condition) {
// logic
i = 1;
} else {
i = 0;
}
and javac will produce an error if you forget the second branch of the conditional as this would allow an uninitialized `i`.Although for clarity's sake I'd probably invert the condition so the "default" case is easier to see.
That also works for instance members, javac will allow setting them in a constructor or an initialization block, and will verify that they are set (and not set twice so you can't set the member in a constructor and an initialization block)
Re: Real world feedback from a Java dev using Scala
#14I wrote a lengthy email describing a year's worth of experience to scala, and here is an excerpt:
If we think that one of the goals of our developers (jr, mid and even sr) is to fully understand as much of their execution environment and stack as possible, the sheer bulk of the language and its standard libraries becomes worrysome. I could probably re-write java.util.concurrent and java collections from whole cloth if necessary, but I could NOT re-write the Scala collection libraries.
Re: Real world feedback from a Java dev using Scala
#15Doc continues to be a challenge, but there's a lot of good stuff at http://docs.scala-lang.org/ including an in-depth guide to collections that the author might find helpful.
I think being able to community add to the API docs would be very helpful. For beginners http://dcsobral.blogspot.com/2011/12/using-scala-api-documen... may be helpful in learning how to navigate the docs buuut what really helps are examples especially with scala's sometimes long and hard to parse type signatures. In general I think a site for language docs where people can add comments/examples/content would be extr…
Re: Real world feedback from a Java dev using Scala
#16I'm in the same shoes with OP. Here's how my Scala skill progresses: In the beginning, I wrote Scala "the Java way", sans semi-colons. Then I omit dots and parenthesis whenever possible ( foo.do(bar) -> foo do bar ). Then I learn to use immutable declaration ( var -> val ) and learn that expressions like this: var i = 0 if (something) { // Additional logic i = 1 } Can be made immutable like this: val i = { if (someth…
Re. SSA, I used to use it by default in Java when I still worked with that language, you don't have to switch to java to have it. Although it is significantly more verbose than in Scala (let alone in e.g. Erlang). Even for the shape you show here it can be done, Java has basic initialization guarantees so you can write: final int i; if (condition) { // logic i = 1; } else { i = 0; } and javac will produce an error if…
Re: Real world feedback from a Java dev using Scala
#17Scala is quite complex, not just the base language, but the standard libraries, the ability to comprehend code by just looking at the lines (implicits!), and the eventual full implications of features as carried out to the logical conclusion by std libs, etc. I wrote a lengthy email describing a year's worth of experience to scala, and here is an excerpt: If we think that one of the goals of our developers (jr, mid a…