クライアントライブラリからAPIに渡される「オブジェクトを転送する」(ゲッター/セッターだけのPOJO)があるこのシナリオで、転送オブジェクトに名前を付ける最良の方法は何ですか?
package com.x.core;
public class Car {
private String make;
private String model;
public Car(com.x.clientapi.Car car) {
this.make = car.getMake();
this.model = car.getModel();
}
}
この例では、メインクラスと転送オブジェクトの名前は両方ともCar
です。それらは異なるパッケージにありますが、同じ名前を持っていると混乱していると思います。転送オブジェクトに名前を付ける方法に関するベストプラクティスはありますか?
通常、クラス名の最後に「DTO」を追加し、すべてのDTOを独自のパッケージに配置します。あなたの例では、com.x.core.dto.CarDTOと呼びます。
[〜#〜] d [〜#〜]ata[〜#〜] t [ 〜#〜]ransfer[〜#〜] o [〜#〜]bject クラスは後に続く必要があります 名前規則Java言語仕様 で定義されています:
クラスタイプの名前は、大文字と小文字を区別せず、大文字と小文字を区別して、説明的な名詞または名詞句にする必要があります。
ClassLoader SecurityManager Thread Dictionary BufferedInputStream
[...]
クラス名の末尾に[〜#〜] dto [〜#〜]またはDtoはあまり意味がなく、クラス自体についてはあまり語りません。クラスの目的を説明する名前の使用を検討してください。
使用できる名前の候補の完全なリストは次のとおりです。
注1:頭字語またはすべての大文字の単語を単語として扱うかどうかは、あなた次第です。 Java API を確認すると、 ZipInputStream
/ GZIPInputStream
のようなつまずきが見つかります。両方のクラスは 同じパッケージ にあり、名前の規則は一貫していません。 HttpURLConnection
は頭字語とも一貫性を示しません。
注2:上記の一部の名前は、これから借りたものです 記事Richard Dingwall (元の記事はもう入手できないようですので、 ここにキャッシュされたコピーがあります Web Archiveから)。
DTOやDAOなどを追加すると、DRYに違反します。 FQNは、特に同じものであれば特に問題ありません。
この種の行動を示すクラスにはベストプラクティスや慣習があるとは思わない。個人的には、クラス名のいずれかのWordオブジェクトが好きではありません。 Poko.Carのような資格を使用するか、Car(POJOの場合)CarDa(データアクセスの場合)CarBiz(ビジネスドメインクラスの場合)のような命名規則を使用できます。
または、クラス名のWordオブジェクトを気にしない場合は、CarDto(車のデータ転送オブジェクト)のようなものを選びます