2016-11-12 4 views
0

ISO/IEC 5218には、次の言葉:ISO/IEC 5218を守っていれば私の 'Person'クラスはint sexですか?

ISO/IEC 5218情報技術 - 人間の男女の表現のためのコードは、言語に依存しない一桁を通じて人の男女の表現を定義する国際規格でありますコード。データベースアプリケーションなどの情報システムで使用できます。 ISO/IEC 5218で規定されている4つのコードは、0 =知られていない、1 =男性、2 =女性、9 =適用されないコードです。

出典:Wikipedia

これを考慮して、性別を数字として扱うべきですか?このロジックを使用して、私のPersonコンストラクタはそのようになります:

public class Person { 
    private String name; 
    private int sex; 

    public Person(String name, int sex) { 
     this.name = name; 
     this.sex = sex; 
    } 
} 

は、私は個人的にPerson p = new Person("Mike", 1)を持つことは少し混乱であると信じていますが、私はいくつかの方法で、ISO/IECに従うことをしたいと思います。これは正しいのでしょうか、別のアプローチをとるべきでしょうか?

答えて

2

私はあなたに同意します。このようにセックスを表現すると、改善するのではなく混乱が生じます。他のアプリケーション、データセンター、マイクロサービス、などとデータを交換する場合は、ISO/IEC 5218に従うことが必要な場合もあれば、そうする必要がある場合もあります。。私はあなたがPersonクラスの中でそれを表現する方法が実装の詳細であると言います。

しかし、この方法でISO/IEC 5218を使用することを選択した場合は、例えば、いくつかの文体のトリックのいずれかを使用して従うことが、コードは非常に簡単に行うことができます...まあ

public class Person { 

    public static final int SEX_MALE = 1; 
    public static final int SEX_FEMALE = 2; 

    private String name; 
    private int sex; 

    public Person(String name, int sex) { 
     this.name = name; 
     this.sex = sex; 
    } 
} 

Person p = new Person("Mike", Person.SEX_MALE); 
+0

、これが実装の詳細であれば、市場で最も一般的なのは何ですか? 'Person'は単純な' String male '/' String female'や 'char M' /' char F'、 'Person.MALE' /' Person.FEMALE'などを期待していますか?私はあなたのアプローチが本当に好きでした。私はそれを刺激し、レースに使用することができました。 – JChris

+1

業界のベストプラクティスとして、私は異なる(スマートな)人々があなたに異なる答えを与えると確信しています。私がこのシナリオについて知っているもの(多くはない)を与えられただけで、私は列挙としての性別のモデリングに傾くでしょう。 –

+0

Enumは素晴らしい選択肢になるでしょう。あなたはそれを最初に勧めているわけではありません。同僚は同じことを言って、セックスとレースに使うことができます。私はそれと一緒に行くだろうと思う。 – JChris