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


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

Re: proper use of .java files (layout)

Newsgroups comp.lang.java.programmer
Date 2012-12-17 13:51 -0800
References <e32ed4f5-58a8-4b3b-9868-d856db8141a8@googlegroups.com> <kaksjp$8u7$1@dont-email.me> <20fa5c05-6fcc-47ed-9e80-a44975887928@googlegroups.com> <kao263$pll$1@dont-email.me>
Message-ID <45eb8d50-e812-4d2e-b53b-b0d4da97d982@googlegroups.com> (permalink)
Subject Re: proper use of .java files (layout)
From Lew <lewbloch@gmail.com>

Show all headers | View raw


markspace wrote:
> Lew wrote:
>> markspace wrote:
>>> public class PlayingCard {
>>>     private final int value; // Ace = 1
> 
>> I would make this an enum.
>>
> 
>> "Ace = 1" is not a valid association in the problem domain, and its use
>> as a representation creates risk of an artificial equivalency.

> I was actually thinking about that.  I don't like the idea of trying to 
> encode most of the values of a face card as enums.  Something like this 
> might be a reasonable compromise.

I wouldn't code *any* of the values of the face cards or the pip cards as anything
in the PlayingCard type.

>    public static enum Cards {ACE, DEUCE, KING, QUEEN, JACK 

, TEN, NINE, EIGHT, SEVEN, SIX, FIVE, FOUR, TREY, JOKER,

>   }

And I'd put them in order {JOKER, ACE, DEUCE, ..., }

>    public void set( Cards card, Suit suit ) {

'Card', not 'Cards'.

>      switch( card ) {
> 
>         case ACE: value = 1; break;

That's clumsy. But how will this work for Blackjack?

>         case DEUCE: value = 2; break;
>         case KING: value = 13; break;
>         case QUEEN: value = 12; break;
>         case JACK: value = 11; break;
>      }
>      this.suit = suit;
>    }
> 
>    public void set( int card, Suit suit ) {
>       value = card;

Should not be an 'int', I reiterate.

There is nothing "integery" about the card name.

>       this.suit = suit;
>    }
> 
> I also think it might be valuable to have one implementation of 
> PlayingCard with one internal encoding, then assigning different 

Yes, the "internal encoding" is the enum constant.

> semantics (e.g., ace high or low) in a separate game object.  Trying to 

That. 

> overload PlayingCard too much with too much business logic seems to 

Agreed.

> violate encapsulation.  A simple wrapper class could easily switch the 

Not "switch", assign, and not a "simple wrapper class" but a games rule engine.

> value of an ace;  so could a custom comparator.  Without more 
> requirements from the OP, it's really hard to guess what of the many 
> possible solutions is best.

I was going for modeling a playing card so it would work in any card game.

> So I went with a simple

but feckless 

> implementation of "ace" (ace = 1) and I'm 
> leaving to other logic to decide how to treat that.  You could have 
> other more complicated implementations of PlayingCard, but too much gets 

You've already included too much by having an 'int' value.

> too baroque quickly
^H^H^H^H^H^H^Halready
> , imo, especially if you don't need all that 
> functionality for most use cases.

You don't need the 'int' value for any use cases.

> Another example:  in many standard decks, the names of the suits are not 
> Spades, Hearts, etc. but vary by country.  Again I'm leaving that for 

Silliness. We know from the OP's problem statement that they intend the French suits.

> some other part of the program.  Localization of card names can be done 
> by wrapping this PlayingCard with a GermanPlayingCard, for example.

Wrap, wrap, wrap. You sure are addicted to wrapping. I wouldn't recommend that.

How would a 'GermanPlayingCard' delegate to the standard French model?

I'd use a different type that implements a suitable interface, or just use a different enum.

But I can't really see the refactoring clearly from here. I'd need a candidate implementation 
to refactor.

-- 
Lew

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


Thread

proper use of .java files (layout) infinitum3d@hotmail.com - 2012-12-16 07:38 -0800
  Re: proper use of .java files (layout) Robert Klemme <shortcutter@googlemail.com> - 2012-12-16 16:43 +0100
  Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-16 10:50 -0500
    Re: proper use of .java files (layout) "John B. Matthews" <nospam@nospam.invalid> - 2012-12-16 16:25 -0500
  Re: proper use of .java files (layout) markspace <-@.> - 2012-12-16 08:24 -0800
    Re: proper use of .java files (layout) Lew <lewbloch@gmail.com> - 2012-12-17 10:28 -0800
      Re: proper use of .java files (layout) markspace <-@.> - 2012-12-17 13:17 -0800
        Re: proper use of .java files (layout) Lew <lewbloch@gmail.com> - 2012-12-17 13:51 -0800
        Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-17 20:55 -0500
          Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-17 18:18 -0800
            Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-17 21:28 -0500
              Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-17 21:10 -0800
                Re: proper use of .java files (layout) Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-18 08:53 -0500
                Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-18 09:13 -0800
                Re: proper use of .java files (layout) Patricia Shanahan <pats@acm.org> - 2012-12-18 09:23 -0800
                Re: proper use of .java files (layout) Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-18 13:49 -0500
                Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-18 15:05 -0800
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:11 -0500
                Re: proper use of .java files (layout) Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-18 21:07 -0500
                Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-19 09:33 +0000
                Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-19 10:12 -0800
                Re: proper use of .java files (layout) Lew <lewbloch@gmail.com> - 2012-12-19 13:35 -0800
                Re: proper use of .java files (layout) Leif Roar Moldskred <leifm@dimnakorr.com> - 2012-12-19 15:55 -0600
                Re: proper use of .java files (layout) Lew <lewbloch@gmail.com> - 2012-12-19 14:01 -0800
                Re: proper use of .java files (layout) Leif Roar Moldskred <leifm@dimnakorr.com> - 2012-12-19 16:05 -0600
                Re: proper use of .java files (layout) Patricia Shanahan <pats@acm.org> - 2012-12-19 04:06 -0800
                Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-19 12:24 +0000
                Re: proper use of .java files (layout) Lew <lewbloch@gmail.com> - 2012-12-19 13:36 -0800
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:10 -0500
                Re: proper use of .java files (layout) Joshua Cranmer <Pidgeot18@verizon.invalid> - 2012-12-18 12:14 -0600
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:04 -0500
                Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-19 10:14 -0800
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-19 19:18 -0500
                Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-20 11:05 +0000
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-27 21:43 -0500
                Re: proper use of .java files (layout) Lew <lewbloch@gmail.com> - 2012-12-27 18:49 -0800
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-27 22:10 -0500
                Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-20 09:01 -0800
                Re: proper use of .java files (layout) Patricia Shanahan <pats@acm.org> - 2012-12-20 09:30 -0800
                Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-20 13:35 -0800
                Re: proper use of .java files (layout) Patricia Shanahan <pats@acm.org> - 2012-12-20 14:00 -0800
                Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-21 08:58 +0000
                Re: proper use of .java files (layout) Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-12-21 10:36 -0800
                Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-21 18:43 +0000
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-27 22:05 -0500
                Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-28 09:57 +0000
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-27 21:59 -0500
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-27 21:53 -0500
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-27 21:54 -0500
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-27 21:48 -0500
                Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-27 21:11 -0800
                Re: proper use of .java files (layout) "John B. Matthews" <nospam@nospam.invalid> - 2012-12-28 06:50 -0500
                Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-28 13:46 +0000
                Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-28 09:10 -0800
        Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-18 09:50 +0000
          Re: proper use of .java files (layout) "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-12-18 13:09 +0000
            Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-18 14:05 +0000
        Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-25 15:06 -0800
        Re: proper use of .java files (layout) Patricia Shanahan <pats@acm.org> - 2012-12-26 06:31 -0800
          Re: proper use of .java files (layout) Lew <lewbloch@gmail.com> - 2012-12-26 13:21 -0800
            Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-26 23:38 -0500
            Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-27 08:37 +0000
            Re: proper use of .java files (layout) Robert Klemme <shortcutter@googlemail.com> - 2012-12-27 11:51 +0100
              Re: proper use of .java files (layout) Patricia Shanahan <pats@acm.org> - 2012-12-27 08:46 -0800
                Re: proper use of .java files (layout) Robert Klemme <shortcutter@googlemail.com> - 2012-12-27 18:20 +0100
              Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-27 20:48 -0500
      Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-17 20:58 -0500
        Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-17 18:22 -0800
          Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-17 21:39 -0500
        Re: proper use of .java files (layout) Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-17 21:25 -0500
          Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-17 21:29 -0500
            Re: proper use of .java files (layout) Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-17 21:32 -0500
              Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-17 21:37 -0500
                Re: proper use of .java files (layout) Wayne <nospam@all.invalid> - 2012-12-18 18:45 -0500
                Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:13 -0500
  Re: proper use of .java files (layout) infinitum3d@hotmail.com - 2012-12-16 09:23 -0800
  Re: proper use of .java files (layout) infinitum3d@hotmail.com - 2012-12-16 21:07 -0800
  Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-17 10:32 +0000
    Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-17 21:03 -0500
      Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-18 09:34 +0000
        Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:00 -0500
        Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:01 -0500
  Re: proper use of .java files (layout) infinitum3d@hotmail.com - 2012-12-18 06:32 -0800
    Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-18 15:05 +0000
      Re: proper use of .java files (layout) Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-18 11:07 -0500
        Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-18 16:27 +0000
          Re: proper use of .java files (layout) Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-18 11:44 -0500
            Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-18 17:21 +0000
          Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-18 09:21 -0800
            Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-18 17:39 +0000
              Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-18 10:40 -0800
                Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-18 19:05 +0000
                Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-18 15:15 -0800
              Re: proper use of .java files (layout) Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-18 14:12 -0500
                Re: proper use of .java files (layout) lipska the kat <lipskathekat@yahoo.co.uk> - 2012-12-18 19:39 +0000
                Re: proper use of .java files (layout) Gene Wirchenko <genew@telus.net> - 2012-12-18 15:17 -0800
        Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:07 -0500
          Re: proper use of .java files (layout) Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-18 21:11 -0500
            Re: proper use of .java files (layout) Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 22:24 -0500
    Re: proper use of .java files (layout) markspace <-@.> - 2012-12-18 10:35 -0800

csiph-web