Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サブ資料⑦Javaに関する補足
Search
Recruit
PRO
August 10, 2023
Technology
1
810
サブ資料⑦Javaに関する補足
2023年度リクルート エンジニアコース新人研修の講義資料です
Recruit
PRO
August 10, 2023
Tweet
Share
More Decks by Recruit
See All by Recruit
Azure Functions HTTPトリガーにおけるタイムアウトでハマったこと
recruitengineers
PRO
2
150
実務につなげる数理最適化
recruitengineers
PRO
6
690
うちにも入れたいDatadog
recruitengineers
PRO
2
380
リクルートのデータ基盤 Crois 年3倍成長!1日40,000コンテナの実行を支える AWS 活用とプラットフォームエンジニアリング
recruitengineers
PRO
2
330
Splunk Enterpriseで S3のデータを直接検索してみた!
recruitengineers
PRO
2
150
Looker APIを使い倒す ユーザーフィードバックを基にした継続的改善サイクル
recruitengineers
PRO
3
57
Kaggleふりかえり会〜LLM 20 Questions & ISIC 2024
recruitengineers
PRO
2
230
Balancing Revenue Goals and Off-Policy Evaluation Performance in Coupon Allocation
recruitengineers
PRO
2
51
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
390
Other Decks in Technology
See All in Technology
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
190
C++26 エラー性動作
faithandbrave
2
710
権威ドキュメントで振り返る2024 #年忘れセキュリティ2024
hirotomotaguchi
2
740
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
小学3年生夏休みの自由研究「夏休みに Copilot で遊んでみた」
taichinakamura
0
150
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
160
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
統計データで2024年の クラウド・インフラ動向を眺める
ysknsid25
2
840
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
1
160
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
440
Amazon Kendra GenAI Index 登場でどう変わる? 評価から学ぶ最適なRAG構成
naoki_0531
0
100
Featured
See All Featured
Building Applications with DynamoDB
mza
91
6.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Building Your Own Lightsaber
phodgson
103
6.1k
4 Signs Your Business is Dying
shpigford
181
21k
Become a Pro
speakerdeck
PRO
26
5k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.3k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
The Cult of Friendly URLs
andyhume
78
6.1k
Embracing the Ebb and Flow
colly
84
4.5k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Transcript
1 ページ サブ資料⑦:Javaに関する補⾜ Javaプロジェクトにおけるパッケージ名の付け⽅ パッケージ名の命名規則としては、まずインターネットのドメインを反対にした⽅式(会社や組 織のインターネットドメイン名を使⽤する)が⼀般的 https://www.recruit.co.jp/ の場合 jp.co.recruit.[サービス名(プロジェクト名)].[モジュール名]... ※"www"は省くことが多い
その他サービスのドメインを使⽤する場合 Coin+ https://coinplus.jp/ の場合 jp.coinplus.[モジュール名]... リクルートエージェント https://www.r-agent.com/ の場合 com.r-agent.[モジュール名]... 他のプロジェクトのソースコードをライブラリやフレームワークとして参照するような場合、 パッケージ名が他のプロジェクトのパッケージ名と重複するのを避けるため ⼀般的な規則 サービス名のドメインを使⽤する場合 命名規則の理由 JavaBeanとは JavaBeanは、Javaの特定のルールに従って書かれたオブジェクトを指し、 データをカプセル化し、⼀貫性のある⽅法でアクセスするための⽅法を提供する JavaBeanクラスは、以下のルールに従って設計される ・クラスはパブリックであり、引数を持たないデフォルトコンストラクタを持つ必要がある。 ・クラスのフィールド(プロパティ)はプライベートである必要がある ・フィールドにアクセスするための公開されたゲッター(getter)およびセッター(setter)メ ソッドを提供する必要がある。なお、ゲッターは"get"または"is"で始まる命名規則に従い、セッ ターは"set"で始まる命名規則に従う JVMとは JVM(Java Virtual Machine)は、Javaプログラミング⾔語の実⾏環境を提供する仮想マシンで Javaプログラムがコンパイルされたバイトコードを実⾏し、プラットフォームやOSに依存せ ずに動作する
2 ページ アノテーションとは アノテーション(Annotation)は、Javaプログラミング⾔語において、プログラムにメタ データを追加するための仕組みでコンパイラや実⾏時の環境に対して情報を提供し、特定の 動作や処理を実現するために使⽤される。 アノテーションは「@」記号を使って宣⾔し、プログラムの要素(クラス、メソッド、 フィールドなど)に直接付与される。アノテーションはJVMに認識され、コンパイル時や実 ⾏時にその情報を利⽤することができる。 Javaでデフォルトで定義されているものに加えて、カスタムで定義できるため、多くのフ
レームワークでさまざまなアノテーションが作られ、使⽤されている 例: @Bean @Service POJO 【Plain Old Java Object】とは 読み⽅は(ポジョ)。何でもない普通のJavaオブジェクトを意味する⽤語 キャメルケースとスネークケース Javaのコードでは⼀般にキャメルケースが採⽤されるのに対し、MySQLやPostgreSQLなどの 多くのRDBではスネークケースが⽤いられることが多い。そのため、両⽅に変換しても違和 感の無い(なるべく簡潔な)命名が望ましい キャメルケース:fictPay スネークケース:fict_pay 定数の作法 Javaの定数はstatic finalで全て⼤⽂字でアンダースコア(_)で区切って、書く static final String FICT_PAY = "Fict PAY";
3 ページ 可変⻑引数 引数の型の直後に「...」(ピリオド3つ)を付けると、そのメソッドを呼び出す側はその型 の引数をいくつでも書けるようになる。ただし、可変引数は各メソッドにつき1つだけ、そ のメソッドの最後の引数にだけ、指定可能。 Optionalクラス Optionalクラス(java.utilパッケージ)は、nullチェックを簡単化し、NullPointerExceptionの発 ⽣を未然に防ぐためのクラス 例)
例)void func(String... s) {} func("xxxx", "yyyy", "zzzz"); メソッド定義側で型と引数名の間に…を⼊れて書く メソッド呼び出し側は引数を通常通りカンマ区切りで定義する 異なる複数の型の引数を指定したい場合は、最後の引数として可変⻑引数を定義することができる 例)void func(int i, byte b, String... s) {} 可変⻑引の後に別の引数を定義することはできない(コンパイルエラー) 例)void func(String... s, int i ) {} ※コンパイルエラー import java.util.Optional; ...中略... Optional<String> name = hoge.getNameById("A001"); System.out.println(name.orElse("存在しません").trim()); Optional<String>は、nullであるかもしれないStringを意味し、Optional<String>オブジェクトか ら値を取得するには、orElseメソッドを利⽤する。orElseメソッドの引数には値がnullの場合 に採⽤するデフォルト値を指定する(ここでは「存在しません」の⽂字列)。 Optionalを使⽤すると以下のようなnullチェックを省略できる if(name == null) { System.out.println("存在しません"); } else { System.out.println(name.trim()); }