Suche senden
Hochladen
Effective Java 読書会1
•
Als PPTX, PDF herunterladen
•
3 gefällt mir
•
2,423 views
Hiroaki Murayama
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 33
Jetzt herunterladen
Empfohlen
オブジェクト指向ワークショップ 201507版
オブジェクト指向ワークショップ 201507版
Mao Ohnishi
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
Deep Learning JP
凝集度と責務
凝集度と責務
Toshinori Chiba
Student Cup 2020 2nd(?) solution LT
Student Cup 2020 2nd(?) solution LT
HogeBona
全探索
全探索
HCPC: 北海道大学競技プログラミングサークル
凝集度と責務
凝集度と責務
Toshinori Chiba
F#のコンピュテーション式
F#のコンピュテーション式
pocketberserker
メタプログラミングってなに?
メタプログラミングってなに?
KazukiWata
Empfohlen
オブジェクト指向ワークショップ 201507版
オブジェクト指向ワークショップ 201507版
Mao Ohnishi
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
Deep Learning JP
凝集度と責務
凝集度と責務
Toshinori Chiba
Student Cup 2020 2nd(?) solution LT
Student Cup 2020 2nd(?) solution LT
HogeBona
全探索
全探索
HCPC: 北海道大学競技プログラミングサークル
凝集度と責務
凝集度と責務
Toshinori Chiba
F#のコンピュテーション式
F#のコンピュテーション式
pocketberserker
メタプログラミングってなに?
メタプログラミングってなに?
KazukiWata
マンガ作家の海外展開を支援するプラットフォームの開発
マンガ作家の海外展開を支援するプラットフォームの開発
Hiroaki Murayama
GitHubワークショップ
GitHubワークショップ
Hiroaki Murayama
春休み企画
春休み企画
Hiroaki Murayama
KLabインターンシップ成果報告会
KLabインターンシップ成果報告会
Hiroaki Murayama
画像処理入門
画像処理入門
Hiroaki Murayama
趣味プログラマの先輩からのアドバイス
趣味プログラマの先輩からのアドバイス
Hiroaki Murayama
バージョン管理勉強会
バージョン管理勉強会
Hiroaki Murayama
WordPressで始めるphp入門
WordPressで始めるphp入門
Hiroaki Murayama
WebAPIではじめるphp入門
WebAPIではじめるphp入門
Hiroaki Murayama
Hakodate - simple framework
Hakodate - simple framework
Hiroaki Murayama
HSPでおいしいスープを飲む方法
HSPでおいしいスープを飲む方法
Hiroaki Murayama
iOS勉強会
iOS勉強会
Hiroaki Murayama
enchant.js勉強会
enchant.js勉強会
Hiroaki Murayama
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
Weitere ähnliche Inhalte
Mehr von Hiroaki Murayama
マンガ作家の海外展開を支援するプラットフォームの開発
マンガ作家の海外展開を支援するプラットフォームの開発
Hiroaki Murayama
GitHubワークショップ
GitHubワークショップ
Hiroaki Murayama
春休み企画
春休み企画
Hiroaki Murayama
KLabインターンシップ成果報告会
KLabインターンシップ成果報告会
Hiroaki Murayama
画像処理入門
画像処理入門
Hiroaki Murayama
趣味プログラマの先輩からのアドバイス
趣味プログラマの先輩からのアドバイス
Hiroaki Murayama
バージョン管理勉強会
バージョン管理勉強会
Hiroaki Murayama
WordPressで始めるphp入門
WordPressで始めるphp入門
Hiroaki Murayama
WebAPIではじめるphp入門
WebAPIではじめるphp入門
Hiroaki Murayama
Hakodate - simple framework
Hakodate - simple framework
Hiroaki Murayama
HSPでおいしいスープを飲む方法
HSPでおいしいスープを飲む方法
Hiroaki Murayama
iOS勉強会
iOS勉強会
Hiroaki Murayama
enchant.js勉強会
enchant.js勉強会
Hiroaki Murayama
Mehr von Hiroaki Murayama
(13)
マンガ作家の海外展開を支援するプラットフォームの開発
マンガ作家の海外展開を支援するプラットフォームの開発
GitHubワークショップ
GitHubワークショップ
春休み企画
春休み企画
KLabインターンシップ成果報告会
KLabインターンシップ成果報告会
画像処理入門
画像処理入門
趣味プログラマの先輩からのアドバイス
趣味プログラマの先輩からのアドバイス
バージョン管理勉強会
バージョン管理勉強会
WordPressで始めるphp入門
WordPressで始めるphp入門
WebAPIではじめるphp入門
WebAPIではじめるphp入門
Hakodate - simple framework
Hakodate - simple framework
HSPでおいしいスープを飲む方法
HSPでおいしいスープを飲む方法
iOS勉強会
iOS勉強会
enchant.js勉強会
enchant.js勉強会
Kürzlich hochgeladen
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
Kürzlich hochgeladen
(9)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
Effective Java 読書会1
1.
2.
この読書会の目的 Effective-Javaを読み進める 講師が内容をまとめて、情報共有する まともに読まずに読んだ気にする
3.
Effective Javaについて
Effective Java 第二版 Javaのお作法が書いている本 「Javaやってるなら一度は読ん でなきゃモグリだよねww」っ て言われる本 定価3780円 ライブラリにも置いてます
4.
この読書会の進め方 Effective-Javaの内容(章ごと)をまとめる 内容は講師が決めて良い。 次回の読書会の講師はその読書会中に決める 全部理解しなくてもいい。わかったところだけでOK
5.
6.
項目45 ローカル変数のスコープを最小限にする ローカル変数のスコープを最小にする最も強力な方 法は、ローカル変数が初めて使用されたときに宣言
すること。 ほとんどすべてのローカル変数宣言は、初期化子を 含んでいるべき。 とくにループ変数では、そうであるべき。
7.
項目45 ローカル変数のスコープを最小限にする イテレータを用いるとき
スコープの大きいローカル変数はバグを引き起こしやすい コンパイルが通ってしまう
8.
項目45 ローカル変数のスコープを最小限にする そんなものより、for使おうぜ
これだとコンパイル時にエラーになる↓
9.
項目46 従来のforループよりfor-eachループを選ぶ でも、そんなものよりfor-each使おうぜ
コレクションをイテレートするならこれ! すごいシンプル!Iteratorとは一体何だったんだ!
10.
項目46 従来のforループよりfor-eachループを選ぶ 6面ダイスのサイコロを2つ転がして、表示される ダイスの組み合わせをすべて表示したい
これにはバグがある
11.
項目46 従来のforループよりfor-eachループを選ぶ 6種類しか表示されない Why?
iとjが並行してイテレートされている 内側のforの前にiをコピーする必要がある
12.
項目46 ローカル変数のスコープを最小限にする for-eachならこれでできる
ループ変数とは何だったんだ
13.
項目46 ローカル変数のスコープを最小限にする ただし、以下の3つの時は従来のfor文を使うしか無い
フィルタリング・変換 元のコレクションを書き換える場合 並列イテレーション 同時にイテレーションやインデックス変数を動かす場合 Java 1.5以前のJavaを利用するとき ジェネリクスやfor-eachが使えない場合
14.
項目46 ローカル変数のスコープを最小限にする
15.
項目47 ライブラリを知り、ライブラリを使う 1〜9のランダムなIntegerを受け取って、与えられた
数を返すプログラムを作成。ただし、同じ数はカウン トしてはいけない。
16.
項目47 ライブラリを知り、ライブラリを使う ああ、それSetで同じ事できるよ
自分で書くより汎用的!バグも少ない! Javaプログラマなら、java.lang、java.util、java.ioの中身は良 く知ってて当然ですよね
17.
項目48 正確な答えが必要ならば、floatとdoubleを避ける floatとdoubleは2進不動小数点を使う
これらでは正確に小数点を表現することができない /(^o^)\ナンテコッタイ 正確に値を入力するにはintで計算し、10^nで割る。
18.
項目49 ボクシングされた基本データより基本データ型を選 ぶ
基本データ型 int, float, boolean …. 参照型 String, List, Vector ….. ボクシングされた基本データ すべての基本データ型の代用の参照型のこと int → IntegerのIntegerのこと。
19.
項目49 ボクシングされた基本データより基本データ型を選 ぶ
違いは3つある 基本データ型は値のみを持つが、ボクシングされた基本データは値 以外のアイデンティティ(参照先アドレス)を持っている。 値は同じでも違うインスタンスということ ==使わない 基本データ型はnullを受け付けないので注意 基本てデータ型はボクササイズされた基本データ型より効率がいい
20.
項目49 ボクシングされた基本データより基本データ型を選 ぶ
間違ってもこんなことはしないように
21.
項目50 他の型が適切な場所では、文字列を避ける 文字列では、他の値型に対する代替としては貧弱です
1,2,3などはint, yes/noみたいなものはboolean 文字列は、列挙型に対する代替としては貧弱です Enum>>>>>>>>>>文字列 第30項目で説明がります 文字列では、集合型に対する代替としては貧弱です めんどくさくてもClassを定義しましょう
22.
項目51 文字列連結のパフォーマンスに用心する Stringの結合は超遅い
O(n^2)の時間が必要 文字列連結にはStringBuilderを使おう StringBuilderにはappendという連結するのメソッドがある ループを100回しただけで、85倍の差が出る…らしい 未実証なので後でやると面白いかも
23.
項目52 インターフェースでオブジェクトを参照する 参照はなるべくインタフェースで受けましょう
元のクラスが修正されたときに、インタフェースが同じであれば編集する 部分が少なくて済みます。
24.
項目53 リフレクションよりインタフェースを選ぶ Java.lang.reflectに関する項目 インスタンスにインタフェースを使う
型が明示的だから、分かりやすい。 型がわからないときは使えない
25.
項目53 リフレクションよりインタフェースを選ぶ このような記述よりも インタフェースで受け取る(ここではGalはインターフェースじゃないが…)
26.
項目54 ネイティブメソッドを注意して使用する JNI(Java Native
Interface)というのがある CやC++で書かれたメソッドを呼び出す機能 プラットフォーム固有の機構にアクセスしたい時 古いコードへアクセスしたい時 パフォーマンスを高めたい
27.
項目54 ネイティブメソッドを注意して使用する ネイティブメソッドは使うな!
Java 1.3以前は利用されていたが、現在はJVMは早くなっており、必要ない 安全じゃない 保守が大変 場合によってはパフォーマンスが悪くなってしまう
28.
項目55 注意して最適化する 最適化とは(ソースコードレベル)
コードの可読性や安全性を犠牲にして、パフォーマンスを向 上させること リファクタリングとは違う コンパイラの最適化ともちょっと違う
29.
項目55 注意して最適化する 原則として最適化を行わないこと 最適化は悪の根源
速いプログラムよりも良いプログラムを書くこと
30.
項目56 一般的に受け入れられている命名規約を守る
修飾子名 例 パッケージ com.google.inject, jp.ac.fun.b1008241.MyClass クラス、インターフェース Timer,FutureTask, LinkedHashMap メソッド、フィールド remove, getValue, isEqual 定数フィールド GAME_CLEAR, SUCCESS, MAX_INTEGER ローカル変数 I, xref, houseNumber 型パラメータ T, E, K, V, X
31.
項目56 一般的に受け入れられている命名規約を守る なにか動作するメソッド名は動詞で始める
makeValue, drawImage, append Booleanはis/hasで始める isEmpty, hasNext, isEnabled アクセサはget/setで始める getType, setValue
32.
まとめ 項目45 ローカル変数のスコープを最小限にする
項目46 従来のfor文よりfor-each文を使う 項目47 ライブラリーを知り、ライブラリーを使う 項目48 正確な答えが必要ならば、float,doubleを避ける 項目49 ボクシングされた基本データ型より基本データ型を選ぶ 項目50 他の型が適切な場所では、文字列を避ける 項目51 文字列連結のパフォーマンスに用心する
33.
まとめ 項目52 インタフェースでオブジェクトを参照する
項目53 リフレクションよりインタフェースを選ぶ 項目54 ネイティブメソッドを注意して使用する 項目55 注意して最適化する 項目56 一般的に受け入れられている命名規則を守る
Jetzt herunterladen