PROPOSAL: Auto-assignment Parameters (original) (raw)

Marek Kozieł develop4lasu at gmail.com
Fri Mar 27 15:20:01 PDT 2009


2009/3/27 Mark Mahieu <markmahieu at googlemail.com>:

On 27 Mar 2009, at 00:22, Marek Kozieł wrote:

We can also consider: { private String name; public this setName (String this.name){}; public this.name String getName(){}; } While we have quite similar idea, they work really great with each other. I just still wander if that should go so far. I think you're right to question whether this would be going too far.  Looking at the getter method, I don't see a clear gain over the way it would currently be written, ie, public this.name String getName() {} doesn't strike me as a definite improvement on: public String getName() { return name; } So far, the only extension to the proposal which looks like it might be reasonable, is simply to allow it for method parameters in general.  I'm not convinced that it would be worthwhile, but for the sake of illustration here's the example again if that option were taken: private String name; public void setName(String this.name) {} public String getName() { return name; } In this variation, the method name, field, and type are each mentioned once for the getter, and once for the setter, with no need to mention extra variables.  Improving on that would almost certainly require language support for properties in general, which isn't what this proposal is about (and isn't in scope for Coin). Thanks for sharing your thoughts. Regards, Mark

I was thinking about that and found few conclusions about syntax: [returned field] returnedType methodName (Type assignedField, ...);

MAJOR DISADVANTAGE: We have few ways to obtain same target.

ADVANTAGE(s): (input) decreased a number of variables. (return) if we have 5 return statement in method's body, we do not have to write "return this.SomeVariable" 5 times, and this is good. We have to notice that value is returned once while we might be forced to write it 5 / 10 / 15 ... times.

INTERACTIONS: public this.name String getName(){ if ( name==null ) return; synchronized (some){ //determine name operations return; } // other operations ... };

Let's focus on second return statement. Return need to be executed in synchronized block to prevent unexpected events.

-- Pozdrowionka. / Regards. Lasu aka Marek Kozieł

http://lasu2string.blogspot.com/



More information about the coin-dev mailing list