Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #38227
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Exit from loop? |
| Date | 2018-04-04 19:51 -0400 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <pa3od9$roj$1@gioia.aioe.org> (permalink) |
| References | <6f19094e-c652-44e0-8a7d-fb3b7791c372@googlegroups.com> <pa38s0$35o$1@gioia.aioe.org> <cdaa9694-0267-45d2-80f4-5362ac858ceb@googlegroups.com> |
On 4/4/2018 3:44 PM, Eric Douglas wrote:
> On Wednesday, April 4, 2018 at 3:26:15 PM UTC-4, Arne Vajhøj wrote:
>> On 4/4/2018 3:05 PM, Eric Douglas wrote:
>>> Does it cause any problems to exit from loop, or is it considered bad form?
>>>
>>> ie can you do this?
>>>
>>>
>>> public static int randomMethod() {
>>> int i = 0;
>>> int tries = 0;
>>> for (int ctr = 0; ctr < 100; ctr++) {
>>> i = java.util.concurrent.ThreadLocalRandom.current().nextInt(1, 10);
>>> tries++;
>>> if (i == 3) {
>>> return tries;
>>> }
>>> }
>>> return tries;
>>> }
>>>
>>> or should you do this?
>>>
>>> public static int randomMethod() {
>>> int i = 0;
>>> int tries = 0;
>>> for (int ctr = 0; ctr < 100; ctr++) {
>>> i = java.util.concurrent.ThreadLocalRandom.current().nextInt(1, 10);
>>> tries++;
>>> if (i == 3) {
>>> break;
>>> }
>>> }
>>> return tries;
>>> }
>>>
>>> This is of course a simple sample, where the value getting
>>> assigned in the loop, and/or the value returned from the method are normally
>>> complex objects.
>>
>> Between those two I would probably do the last, but
>> I see no big problems with the first.
>>
>> If I had the choice I would probably use a do while loop.
>>
>> int ctr = 0;
>> X o = new X();
>> do {
>> o.something();
>> ctr++;
>> } while(ctr < 100 && ThreadLocalRandom.current().nextInt(1, 10) != 3);
>
> It's just a question of exiting from the middle of the structure, not necessarily which structure.
> There are coding preferences to always exit from a single point, but
> if the language doesn't care, sometimes it's easier to exit in the
> middle of the loop structure if there's nothing you need to do after the
> loop. If it's bad for the language ie messing with the garbage
> collector, we should always exit properly with the break.
The first example has two returns from the method.
The second example has two exits from the loop.
My suggestion has two conditions for exit from loop.
I think that first->second->my goes to better code.
And if one has strong religious beliefs about code then
one should really focus on getting this right.
But if one is pragmatic/practical oriented, then I would
say that all 3 are very readable and there is no reason to
spend time on such a non-issue.
Arne
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Exit from loop? Eric Douglas <e.d.programmer@gmail.com> - 2018-04-04 12:05 -0700
Re: Exit from loop? Arne Vajhøj <arne@vajhoej.dk> - 2018-04-04 15:25 -0400
Re: Exit from loop? Eric Douglas <e.d.programmer@gmail.com> - 2018-04-04 12:44 -0700
Re: Exit from loop? Arne Vajhøj <arne@vajhoej.dk> - 2018-04-04 19:51 -0400
Re: Exit from loop? Martin Gregorie <martin@mydomain.invalid> - 2018-04-05 10:46 +0000
Re: Exit from loop? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-04-06 18:19 +0200
csiph-web