Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #6561

Re: A question about some long java code that has getters/setters

Path csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail
From Eric Sosman <esosman@ieee-dot-org.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: A question about some long java code that has getters/setters
Date Mon, 25 Jul 2011 21:35:16 -0400
Organization A noiseless patient Spider
Lines 68
Message-ID <j0l5mk$15l$1@dont-email.me> (permalink)
References <d94f5902-8b2e-484f-8095-9ce034e916d4@t8g2000prm.googlegroups.com> <1672e2f1-a963-4fcf-b651-41b69432c9d7@p29g2000pre.googlegroups.com> <m21uxehzrj.fsf@softwarematters.org> <j0kvh1$1eq$1@dont-email.me>
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
Injection-Date Tue, 26 Jul 2011 01:36:21 +0000 (UTC)
Injection-Info mx04.eternal-september.org; posting-host="f8igmItKsWs6nM5YanFxAA"; logging-data="1205"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/Bwq5yldzfWcq7tJyG/04q"
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11
In-Reply-To <j0kvh1$1eq$1@dont-email.me>
Cancel-Lock sha1:Ffpz73mWqT21eyx9ro8VwbTJChQ=
Xref x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:6561

Show key headers only | View raw


On 7/25/2011 7:50 PM, markspace wrote:
> On 7/25/2011 1:27 PM, Patrick May wrote:
>> It encourages a style of programming where
>> objects have too much knowledge about each other.
>
>
> This is an interesting idea. However, I think it might be short sighted,
> or at least incomplete.
>
> For example, I've just been working on a project which involves sending
> commands over a network. There are up to four parameters for all
> commands, and it might be better style to perhaps only create some
> number of constructors which only allow valid combinations of these four
> parameters.
>[... uses "vanilla" constructor plus mutators ...]

     Another approach -- which may or may not make sense in your
situation, but might be worthy of consideration -- is to make Command
immutable, with one constructor that takes a single argument of the
mutable CommandBuilder class.

	public class Command {
	    private final int tweedeldum;
	    private final Control[] tweedledee;
	    ...
	    public Command(CommandBuilder builder) {
	        if (builder.isValid()) {
	            tweedledum = builder.tweedledum;
	            tweedledee = builder.tweedeldee.clone();
	            ...
	        } else {
	            throw new IllegalArgumentException(
	                builder.toString());
	        }
	    }
	}

	public class CommandBuilder {
	    private int tweedledee = 42;
	    private Control[] tweedledum = new Control[0];
	    ...
	    public CommandBuilder setTweedledee(int tweedledee) {
	        this.tweedledee = tweedledee;
	        return this;
	    }
	    public CommandBuilder setTweedledum(Control[] tweedledum) {
	        this.tweedledum = tweedledum;
	        return this;
	    }
	    ...
	}

	...

	Command makeItSo = new Command(
	    new CommandBuilder().setTweedledee(97));
	Command avastYeScurvySpalpeens = new Command(
	    new CommandBuilder().setTweedledum(getControls())
	        .setTweedledee(-86));

     True, the validation and exception-throwing still happen at
run-time -- but it happens at Command construction, instead of later
on when the Command is used and the source of the bad parameters may
be more of a mystery.

-- 
Eric Sosman
esosman@ieee-dot-org.invalid

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

A question about some long java code that has getters/setters Chad <cdalten@gmail.com> - 2011-07-22 16:12 -0700
  Re: A question about some long java code that has getters/setters Arne Vajhøj <arne@vajhoej.dk> - 2011-07-22 19:28 -0400
  Re: A question about some long java code that has getters/setters Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-07-22 23:31 +0000
  Re: A question about some long java code that has getters/setters markspace <-@.> - 2011-07-22 16:51 -0700
  Re: A question about some long java code that has getters/setters lewbloch <lewbloch@gmail.com> - 2011-07-23 09:02 -0700
    Re: A question about some long java code that has getters/setters blmblm@myrealbox.com <blmblm.myrealbox@gmail.com> - 2011-07-23 17:41 +0000
      Re: A question about some long java code that has getters/setters lewbloch <lewbloch@gmail.com> - 2011-07-23 11:42 -0700
      Re: A question about some long java code that has getters/setters Arne Vajhøj <arne@vajhoej.dk> - 2011-07-23 17:59 -0400
        Re: A question about some long java code that has getters/setters Steve Sobol <sjsobol@JustThe.net> - 2011-07-23 23:39 -0700
          Re: A question about some long java code that has getters/setters blmblm@myrealbox.com <blmblm.myrealbox@gmail.com> - 2011-07-25 19:44 +0000
          Re: A question about some long java code that has getters/setters lewbloch <lewbloch@gmail.com> - 2011-07-26 09:03 -0700
    Re: A question about some long java code that has getters/setters Arne Vajhøj <arne@vajhoej.dk> - 2011-07-23 19:26 -0400
      Re: A question about some long java code that has getters/setters lewbloch <lewbloch@gmail.com> - 2011-07-26 09:00 -0700
    Re: A question about some long java code that has getters/setters Patrick May <patrick@softwarematters.org> - 2011-07-25 16:27 -0400
      Re: A question about some long java code that has getters/setters markspace <-@.> - 2011-07-25 15:14 -0700
      Re: A question about some long java code that has getters/setters lewbloch <lewbloch@gmail.com> - 2011-07-25 15:56 -0700
        Re: A question about some long java code that has getters/setters Patricia Shanahan <pats@acm.org> - 2011-07-25 17:00 -0700
          Re: A question about some long java code that has getters/setters Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-07-25 21:17 -0400
      Re: A question about some long java code that has getters/setters markspace <-@.> - 2011-07-25 16:50 -0700
        Re: A question about some long java code that has getters/setters Gene Wirchenko <genew@ocis.net> - 2011-07-25 18:30 -0700
          Re: A question about some long java code that has getters/setters Patricia Shanahan <pats@acm.org> - 2011-07-25 18:41 -0700
          Re: A question about some long java code that has getters/setters lewbloch <lewbloch@gmail.com> - 2011-07-26 09:05 -0700
          Re: A question about some long java code that has getters/setters Gene Wirchenko <genew@ocis.net> - 2011-07-26 10:48 -0700
            Re: A question about some long java code that has getters/setters Gene Wirchenko <genew@ocis.net> - 2011-07-26 11:56 -0700
              Re: A question about some long java code that has getters/setters Patricia Shanahan <pats@acm.org> - 2011-07-26 13:34 -0700
                Re: A question about some long java code that has getters/setters lewbloch <lewbloch@gmail.com> - 2011-07-26 14:21 -0700
            Re: A question about some long java code that has getters/setters lewbloch <lewbloch@gmail.com> - 2011-07-26 14:20 -0700
        Re: A question about some long java code that has getters/setters Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-07-25 21:35 -0400
        Re: A question about some long java code that has getters/setters Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-07-26 06:59 -0300
    Re: A question about some long java code that has getters/setters Jukka Lahtinen <jtfjdehf@hotmail.com.invalid> - 2011-07-26 12:19 +0300
      Re: A question about some long java code that has getters/setters lewbloch <lewbloch@gmail.com> - 2011-07-26 09:08 -0700
        Re: A question about some long java code that has getters/setters Jukka Lahtinen <jtfjdehf@hotmail.com.invalid> - 2011-07-27 15:56 +0300
          Re: A question about some long java code that has getters/setters lewbloch <lewbloch@gmail.com> - 2011-07-27 14:14 -0700

csiph-web