Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.chainon-marquant.org!nntpfeed.proxad.net!feeder1-1.proxad.net!proxad.net!feeder1-2.proxad.net!74.125.46.80.MISMATCH!postnews.google.com!news2.google.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Sun, 08 Jan 2012 17:56:11 -0600 Date: Sun, 08 Jan 2012 15:56:02 -0800 From: Patricia Shanahan User-Agent: Thunderbird 1.5.0.2 (Windows/20060308) MIME-Version: 1.0 Newsgroups: comp.lang.java.programmer Subject: Re: Best Way to Pass Info Between Objects? References: <4dWdnRF6pOQcUJTSnZ2dnUVZ_vidnZ2d@earthlink.com> <54qdnTd-nYZBj5fSnZ2dnUVZ_q2dnZ2d@earthlink.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Message-ID: Lines: 77 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 75.11.53.36 X-Trace: sv3-Pv2wSBmTOK+ErTY0FLN/FC7/io9jZcDhXJpVd4Ot72gpSy6LXznCsnzCqaZSy4/Ma85/7oDiABHlbea!BxFibUKJ/1rKxCveeQa2OJleCq9SvK3q6t7KgPjJJLRB71yqFwrCgjOKB7UXQbxdQFMzrm+FZNz1!tq46pwpqdT0b7TmICqUiCEtXyJppAeNk7WWDxQpaXEI= X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 4831 Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:11120 Martin Gregorie wrote: > On Sun, 08 Jan 2012 14:04:05 -0800, Patricia Shanahan wrote: > >> On 1/8/2012 10:22 AM, Novice wrote: >>> Patricia Shanahan wrote in >>> news:4dWdnRF6pOQcUJTSnZ2dnUVZ_vidnZ2d@earthlink.com: >>> >>>> On 1/8/2012 8:41 AM, Novice wrote: >>>>> Sorry, that's probably not the best of subject lines but I'm having >>>>> trouble coming up with a concise one.... >>>>> >>>>> I'm trying to reason out the best way to pass information from an >>>>> instantiating class to an instantiated class. So, let's say class Foo >>>>> invokes class Bar to do something. Bar needs some specific >>>>> information from Foo to do its job. What is the best way to pass this >>>>> information from Foo to Bar? >>>> ... >>>>> I'm not sure if there is a generally agreed-upon formula here or >>>>> whether it is more a case of individual style and preference. I'd be >>>>> very interested in your comments on this subject. Right now, I feel >>>>> like I'm being pretty inconsistent in my techniques and would like to >>>>> standardize them along the best possible lines. >>>>> >>>>> >>>> Here is one programming process approach that often simplifies these >>>> questions: Write the Bar unit tests in parallel with designing Bar. >>>> >>>> If the Bar design works well for both unit testing and use by a Foo, >>>> it will probably be a reasonably robust module that does not need to >>>> be changed too often because of changes to other modules. >>>> >>>> Patricia >>>> >>>> >>> Thanks everyone for the suggestions. Obviously, I'm going to need to >>> increase the size of my Java library and allocate some time for reading >>> all all of these things.... >>> >>> But in the meantime, are there any general rules I can use to make >>> these decisions for code I am developing now? Or do I really need to >>> master several books first? >>> >>> >> That is why I suggested unit test during design, as a complement to the >> book recommendations. I have no problem with the books that have been >> proposed, but it will take time to read, absorb, and apply them. You can >> apply unit test during design immediately. >> > +1 > > ..but don't forget that the unit tests *must* be written from the > specifications and *NEVER* from looking at the code. A good half-way > house, which I use a lot, is to write what's effectively an abstract > class with the entire class specification spelled out in the class- and > method-level comments, with just enough meat in the methods, i.e. return > statements, to allow the resulting source file to be compiled. Then I > generate the javadocs and use only these as the basis for writing the > unit tests. > > Actually, I've usually completed and compiled the class before I write > the unit tests, but I'd suggest you write the tests first until you get > into the required 'no peeking' frame of mind needed for writing the tests > from the specifications and only the specifications. There are two > additional benefits: (1) you get into the habit of writing worth-while > class and method documentation and (2) this forces you to think about how > your new class will actually be used. This will probably improve both the > design and documentation if you alter the design to overcome usability > problems as you find them. > > +1 I actually typed a paragraph along these lines, but decided to stick to the idea of unit tests as a way of encouraging good module design. Patricia