If all that eero had was
optional semicolon, indentation as scope, optional parentheses around condition, message passing without square brackets and type inference
I think it is a huge improvement over Objective-C because they are used all the time.
I want to use switch to eero, but after reading the documentation, the list is pretty long. i have to remember a bunch of new stuff.
I think just changing @selector(someMethod:) to |someMethod| isn't really worth it. Even though it is more concise, It just increases effort for adoption.
Here are things that I think are really useful and things that I rather not have changed from objective c (even if eero makes more sense).
Optional semicolons +100
Off-side rule (indentation indicates block scope) +100
Optional parentheses around conditions +30
Message passing without square brackets +100
Objective-C keywords without ’@’ -10
Logical and bitwise operators and, or, not, etc. +10
The goto statement is illegal -10
Built-in symbol search on names with the “NS” prefix -10
User-defined prefix namespaces -10
Variables and literals +0
Object declarations are assumed to be pointers +10
Local type inference +30
No variable shadowing +0
NSString literals using single quotes +0
No ’@’ needed for array and dictionary literals +0
Mutable array and dictionary literals -10
Variable definitions using type inference and nil or Nil -10
Selector and protocol literals -10
NSRange literals (and expressions) using ‘..’ or ’…’ -10
NSRange variables and literals in for in loops -10
Underscores permitted in numeric literals +0
Stricter enum type checking +0
Method parameter type names are not enclosed in parentheses -10
Method parameters have default variable names -10
Method return type specified by trailing return, void by default if omitted -10
Methods are instance methods by default +10
Optional parameters and default arguments -10
Default return expression -10
No curly braces needed around member-variable declarations +10
Declarations of properties of the same type can be grouped together +0
Built-in equality and inequality comparison operators -10
Built-in ’+’ (binary version) and ’«’ string operators -10
Binary operators (effectively, operator overloading) -10
Array and dictionary subscript operators with integer and object indexes -10
Object subscript operators with NSRange indexes -10
Converting primitive data types to objects (boxing) +10
Converting objects to primitive data types (unboxing) +10
Blocks enhancements
Compact blocks -10
Nested functions (const blocks) -10
The switch statements
No fall-through +20
Comma-separated lists of cases +10
Case-value ranges -10
I think decreasing the number of differences between objective c and eero makes sense and only adopting differences that make a big impact in everyday coding would make the transition to eero easier.
I know this would make eero not as pure and clean, but It would still be a lot better than objective c.