質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アノテーション

アノテーションとは、特定のコードに対して、メタデータを注釈として付与することを指します。また、付与したメタデータ自体をアノテーションと呼ぶ場合もあります。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

命名規則

命名規則は、プログラミングする際に識別子の名称である文字列を決める表記法のことです。ネーミング規則・ネーミング規約・命名規約とも呼びます。

Q&A

解決済

2回答

3083閲覧

javaのモデルクラスのアクセサがわかりにくい

kometaroimo0214

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アノテーション

アノテーションとは、特定のコードに対して、メタデータを注釈として付与することを指します。また、付与したメタデータ自体をアノテーションと呼ぶ場合もあります。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

命名規則

命名規則は、プログラミングする際に識別子の名称である文字列を決める表記法のことです。ネーミング規則・ネーミング規約・命名規約とも呼びます。

1グッド

1クリップ

投稿2020/09/08 16:53

はじめまして
java springで開発をしています。

モデルクラス(DTO)のアクセサについて質問です。

今の開発現場ではDTOのフィールドはprivateで宣言し、アクセサは@Setter,@Getterとアノテーションで実装しています。

ここで質問です。

実装時に気づいたのですが、アクセサにフォーカスにしてもコメントが無く、設計書は日本語で非常に分かりにくいです。

フィールドの「命名がそもそも良くない」という大問題はあるのですが、文化的に命名を見直すというのは現実的では無いです。

アクセサにフォーカスした時にコメントが表示されると、救いがあるのですが、上述したとおりアクセサはアノテーションで実装しているので、コメントもつけられず困っています。

きっと命名をちゃんとわかりやすくしましょう、という初歩的なことではあるのですが、もしそれ以外に何かアイデアや工夫がありましたらご教示ください。

A-pZ👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

アクセサにフォーカスにしてもコメントが無く、設計書は日本語で非常に分かりにくい

Lombokで自動生成されるメソッドなので、Javadocは生成されませんし、設計書は日本語で非常にわかりにくいのとは別問題だと私は思います。その理由として、アクセサ(getメソッド)は単にフィールドの内容を返すものですから、そのフィールドを参照すれば解決する話であって、そのフィールドと設計書の内容が非常にわかりにくいのは、設計や命名にこそ問題があります。

また、常に @Getter @Setter を使うのではなく、仕方なくWebからのリクエスト情報をバインドする箇所や、データソースから値を取得する際の格納時にフレームワークの都合で用意することはありますが、それ以外はイミュータブルな状態でインスタンスを扱うよう@Valueを適宜使うことを検討します。

投稿2020/09/12 03:32

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

「@Setter,@Getter」というのは、lombokの機能を指しているのだと認識していますが、間違いないですよね?
「コメント」というのは、EclipseやVSCodeなどのIDEにて、フィールドにフォーカスした際に表示されるjavadocのことを指しているのだと認識していますが、間違いないですよね?

上記の内容に間違いがないのであれば、以下の回答を確認してください。
lombokには@Setterや@Getterにjavadocを付与する機能はありません。
Delombokを使用して、ソースコードを変換したのち、javadocを作成する必要があります。

参考:https://stackoverrun.com/ja/q/8889808

解決策としては、
「命名を良くする」というのが一番簡単だと思います。文化を見直す良い機会なのではないですか?
ほかには、privateではなくpublicにするなど。(@Setterや@Getterを使うならカプセル化する意味はあまりないのでは?)

投稿2020/09/10 03:49

編集2020/09/10 03:50
perorin0418

総合スコア90

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kometaroimo0214

2020/09/25 06:28

返信ありがとうございます。また行間をよみとっていただきありがとうございます。 問題解決の軸が違う!というのはごもっともなのですが、現場のいわゆる大手様の文化や商習慣など前提条件がある中で「なんとかならないか」というご相談でした。返信いただきましたURLも参考にさせていただきましたが、なるほどjavadocを付与するというよりも、そもそもカプセル化が不要という議論をすれば、現状課題を解決出来そうに思いました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問