2 ms·
As a reader, faced with: Dictionary<string, KeyValuePair<int, string>> contrivedExample = new Dictionary<string, KeyValuePair<int, string>>(); And Dictio
by jddj 7y ago
As a reader, faced with:
Dictionary<string, KeyValuePair<int, string>> contrivedExample = new Dictionary<string, KeyValuePair<int, string>>();
And
DictionaryOfStringsWithKeyValuePairs contrivedExample = new DictionaryOfStringsWithKeyValuePairs();
And
var contrivedExample = new Dictionary<string, KeyValuePair<int, string>>();
I'd definitely prefer the latter.
--
Edit: rephrased to be less presumptuous
- matt2000 7y agoI hear you, but the current state of affairs in Java (I know this isn't quite Java, but just for illustration) is more like: Dictionary<string, KeyValuePair<int, string>> contrivedExample = new Dictionary<>(); Which seems ok to me? And we don't enter the slippery slope of allowing variables without types, and hoping people just use it where appropriate.
- balfirevic 7y agoC# developer here, which has local variable type inference. It is appropriate in 95% of places. It hasn't caused an apocalypse yet. It has, in fact, been great!
- hibbelig 7y agoI think if it avoids having to repeat the type then type inference helps. And especially that last Java example, there I feel it is useful: for (var x : someMap.entrySet()) { String key = x.getKey(); Entity value = x.getValue(); ... } Here, the reader just needs look at the next two lines to understand the type of x. In the article, the key and value types were long and complicated, and they asked us to refactor. But in the above example, the types are very simple, yet still it's better than for (Map.Entry<String, Entity> x : someMap.entrySet()) { String key = x.getKey(); Entity value = x.getValue(); ... } I feel in this example, the type in front of x doesn't help me, as a reader.