SlideShare a Scribd company logo
1 of 24
Effective Java 輪読会
Item 45-48
開発部 陳映融 2014/2/19
第8章 プログラミング一般
 項目45 ローカル変数のスコープを最小限にする
 項目46 従来の for ループより for-each ループを選ぶ
 項目47 ライブラリーを知り、ライブラリーを使う
 項目48 正確な答えが必要ならば、float と double を避ける
 項目49 ボクシングされた基本データより基本データ型を選ぶ
 項目50 他の型が適切な場所では、文字列を避ける
 項目51 文字列結合のパフォーマンスに用心する
 項目52 インタフェースでオブジェクトを参照する
 項目53 リフレクションよりインタフェースを選ぶ
 項目54 ネイティブメソッドを注意して使用する
 項目55 注意して最適化する
 項目56 一般的に受け入れられている命名規約を守る
2
Item 45
ローカル変数のスコープを最小限にする
ローカル変数のスコープ
4
 復習:ローカル変数のスコープは宣言のあと、ブロックが終わるま
で
 ローカル変数のスコープを最小化することで、コードの可読性と保
守性が向上し、誤りの可能性が減る
 本質的には項目13 「クラスとメンバーへのアクセスを最小限にする」
と類似
void scopeSample() {
... // 未宣言
int var = 0; // ここからが var のスコープ
{
...
var--; // 内部ブロックもスコープに含まれる
}
var--; // 所在ブロックが終わるまで有効
}
ローカル変数は初めて使うときに宣言
5
 ローカル変数を早めに宣言する場合
 処理を理解しようとする読み手の注意を逸らしてしまう
 たくさんの変数を(一時的に)覚えることで、大事な部分への注意が散らして
しまう
 変数使用された時に型と初期値を思え出せないかも
// ブロックの先頭に宣言するのは C 言語のスタイル、やらないこと
void declarationInCStyle() {
int i = 0, j = 0, k = 0; // ループ制御用
String s1, s2, ... // 文字列変数いろいろ
double d1, d2, ... // 数値変数いろいろ
... // 変数宣言たくさん...覚えきれんわ!
{
...
x = y; // えっと、こいつらの初期値と型は...何だっけ?
}
}
ローカル変数宣言と初期化子
6
 ほとんどローカル変数宣言は初期化子を含んでいるべき
 初期化子を含むことで初期化漏れ防止
 変数を合理的に初期化する情報を揃えてから変数を宣言(&初期化)
 初期化に必要な情報が足りない場合、宣言を先送りすべき
void declarationWithoutInit() {
int var; // まだ使わないけど先に宣言しておこう
... // いろいろ書いたら数ページになって(そこまで書いたらメソッドを分けたほうがいいけ
ど)
var++; // えっと、初期化した...よね?
...
}
void declarationWithInitInfo() {
Variable tooEarly; // 初期化の情報が足りていない ⇒ 早すぎる
... // いろいろ情報収集
Info info = collectInfo(args); // ここに来てやっと情報が揃った
Variable properTime = new Variable(info); // 使用直前に宣言&初期化 ⇒ 適切なタイミング
useVariable(properTime);
...
}
ローカル変数宣言と初期化子
7
 前述規則(ローカル変数宣言は初期化子を含んでいるべき)の例外: try-catch 文
 チェックされる例外を投げるメソッドの戻り値で変数を初期化する場合
 Java 1.7 の AutoCloseable の導入で Closeable も規則適用可能に
 try-with-resources:
static void tryCatchSample() {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(“filePath”)); // 初期化で例外を投げるかも
System.out.println(br.readLine()); // ここにも例外を投げる可能性がある
} catch (IOException ex) {
...
} finally {
if (br != null) br.close(); // try ブロックの外での使用、宣言はブロック外でなければ
}
}
static void tryWithResourcesSample() throws IOException {
try (BufferedReader br =
new BufferedReader(new FileReader(“filePath”))) { // br のスコープは try ブロック内
System.out.println(br.readLine());
}
}
ループでの変数スコープ最小化
8
 for と for-each はループ変数を宣言できる
 変数スコープはループ本体と for 予約語の後の括弧内のコードに限定
 ループごとの冗長な計算を同じ結果が返される場合、ループ変数で回避
// コレクションをイテレートする好ましいイデオム
for (Element e : c) {
doSomething(e);
}
// リリース 1.5 より前のジェネリックがない場合、いまも使えるけど...
for (Iterator i = c.iterator(); i.hasNext(); ) {
doSomething((Element) i.next());
}
// 初期化時に一回だけ処理
for (int i = 0, n = expensiveComputation(); i < n; i++) {
doSomething(i);
}
ループでの変数スコープ最小化
9
 while の場合、だいたいブロックの外で宣言される変数を使用する
 コピー&ペーストや要素変数名の再利用でバグを織り込みやすい
 for ループ使用する場合はコンパイル時エラーで検出可能
Iterator<Element> i = c1.iterator();
while (i.hasNext()) { doSomething((Element) i.next()); }
// バグがあるけど問題なくコンパイルできる
Iterator<Element> i2 = c2.iterator();
while (i.hasNext()) { doSomething((Element) i.next()); } // NoSuchElementException!
for (Iterator<Element> i = c1.iterator(); i.hasNext(); ) {
doSomething((Element) i.next());
}
// コンパイル時エラー - シンボル i は解決できない
for (Iterator<Element> i2 = c2.iterator(); i.hasNext(); ) {
doSomething((Element) i2.next());
}
メソッドを小さくする
10
 メソッドを小さくして、処理をはっきりさせる
 一つのメソッドに複数の処理があって、
一つの処理用のローカル変数が別の処理のコードのスコープ内にある場
合
⇒ メソッドを分ける(一つの処理に対して一つのメソッド)
まとめ
11
 ローカル変数のスコープを最小化することで
 コード可読性と保守性が向上
 誤りの可能性が減る
 ローカル変数のスコープを最小限にする技法
 ローカル変数が初めて使用される時に宣言する
 ローカル変数は初期化子を含んで宣言する
 ループの場合、 while ループより for ループを選ぶ
 ループ終了後にループ変数の内容が必要ない場合に限る
 メソッドを小さくして焦点をはっきりさせる
Item 46
従来の for ループより for-each ループを選ぶ
イテレーション用の変数隠蔽
13
 リリース 1.5 より前のイテレーション
 コレクション、ジェネリックがない場合
 配列の場合
 イテレータやインデックス変数を隠蔽してエラーの機会を排除
 配列上限計算は一度だけなので、パフォーマンス上のペナルティはない
// イテレータ変数を宣言以外の部分で間違えてると、コンパイル時に検出できないかも
for (Iterator i = c.iterator(); i.hasNext(); ) {
doSomething((Element) i.next());
}
// インデックス変数を宣言以外の部分で間違えてると、コンパイル時に検出できないかも
for (int i = 0; i < a.length; i++) {
doSomething(a[i]);
}
// コレクションと配列をイテレートする好ましいイデオム
for (Element e : c) {
doSomething(e);
}
ネストしたイテレーション
14
 for ループでのイテレータ変数の操作で使用ミス例
 next メソッドの過剰な呼び出し
⇒ 外側要素を変数で保持するように修正...
 for-each ループで実装したほうが簡潔
for (Iterator<Suit> i = suits.iterator(); i.hasNext(); )
for (Iterator<Rank> j = ranks.iterator(); j.hasNext(); )
decks.add (new Card(i.next(), j.next()); // i が底をついたら NoSuchElementException
// コレクションと配列をイテレートする望ましいイデオム
for (Suit suit : suits)
for (Rank rank : ranks)
decks.add (new Card(suit, rank));
for (Iterator<Suit> i = suits.iterator(); i.hasNext(); ) {
Suit suit = i.next();
for (Iterator<Rank> j = ranks.iterator(); j.hasNext(); )
decks.add (new Card(suit, j.next());
}
Iterable インタフェース
15
 Iterable インタフェースを実装することで for-each 使用可能に
 要素のグループを実装する際、 Collection を実装しなくても、
Iterable を実装するように
public interface Iterable<E> {
Iterator<E> iterator();
}
まとめ
16
 明瞭性とバグ予防に関して、 for-each ループは for ループより
優れた長所提供し、パフォーマンス上のペナルティはない
 for-each ループを使用できない3つの状況
 フィルタリング:コレクションをイテレートして選択された要素だけ削除
する
⇒ イテレータ使用して remove メソッドを呼び出す
 変換:リストや配列をイテレートして一部か全部の要素の値を置換する
⇒ リストイテレータか配列インデックス変数が必要
 並列イテレーション:複数のコレクションを並列にイテレートする
⇒ イテレータやインデックス変数に対して明示的な制御が必要
Item 47
ライブラリーを知り、ライブラリーを使う
標準ライブラリーを使おう
18
 整数の乱数を生成メソッド例の教訓
 本当にいい random メソッドは、いろいろ知らないと作れないので、
標準ライブラリーではすでにやってくれたから、それを使いましょ
う!
 標準ライブラリーを利用する利点
 専門家の知識と、以前それを利用した人々の経験を利用することになる
 時間を無駄にする必要がなく、目的の課題に集中できる
 自分では何もしなくても、時間と共にパフォーマンスが改善されたりす
る
 自分のコードを主流に置くことになる
標準ライブラリーの知るべき機能
19
 主要リリースごとに機能が追加されて、それを知ることは得るもの
がある
 標準ライブラリーの知るべき機能
 java.lang
 java.util (リリース 1.2 にコレクションフレームワーク追加)
 java.util.concurrent (リリース 1.5 にコンカレンシーユティリティ追
加)
 java.io (ある程度)
 ちなみに、リリース 1.7 で追加された機能(の一部)
 文字列による switch
 ダイアモンド演算子
 例外の機能拡張(リソース付き、安全な再スロー、マルチキャッチ)
まとめ
20
 無駄な努力をしないこと
 かなり共通だと思えることをする前に、まず標準ライブラリーから
使えるものを探す
 一般的には、ライブラリーのコードは自分で書いたものより優れて
いて、時間とともに改善されていく可能性がある
Item 48
正確な答えが必要ならば、float と double を避ける
float 型と double 型は近似計算
22
 科学計算と工学計算のために設計されている
 2進数浮動小数点算数
 広い範囲の大きさに対して正確な近似を行う
 正確な結果を提供しない
⇒ float 型と double 型は、特に金銭計算に適しない
正確な答えを得るには
23
 金銭計算など、正確な答えが必要な場合は、 BigDecimal か int
か long を使用する
 BigDecimal 型を使用
 正確な値は出してくれるけど
 基本データの算数型を使用するより不便(演算子は使えない)
 遅い
 int/long 型を使用
 金額に応じて使い分ける
 小数点がどこかを自分で把握しておく
まとめ
24
 正確な答えを必要とする計算は float や double を使用しない
 代わりに BigDecimal か、 int や long を使用する
 BigDecimal を使用する状況
 システムに小数点を把握させたい
 基本データ型を使用しない不便さとコストを気にしない
 丸めを完全に制御したい
 数が大きい(18桁を超える)
 int や long を使用する状況
 パフォーマンスが重要
 小数点の把握が気にならない
 数が大きすぎない(9桁を超えないならint、18桁を超えないならlong)

More Related Content

What's hot

エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング道化師 堂華
 
エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7Tetsuya Morimoto
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターンMoriharu Ohzu
 
並行プログラミングと継続モナド
並行プログラミングと継続モナド並行プログラミングと継続モナド
並行プログラミングと継続モナドKousuke Ruichi
 
Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理Takuya Tsuchida
 
C#coding guideline その2_20130325
C#coding guideline その2_20130325C#coding guideline その2_20130325
C#coding guideline その2_20130325Yoshihisa Ozaki
 
Javaクラスファイルの読み方
Javaクラスファイルの読み方Javaクラスファイルの読み方
Javaクラスファイルの読み方y torazuka
 
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesShintarou Okada
 
言語処理系入門1
言語処理系入門1言語処理系入門1
言語処理系入門1Kenta Hattori
 
すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!Akihiro Nishimura
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューMoriharu Ohzu
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
Source monitorと複雑度のはなし
Source monitorと複雑度のはなしSource monitorと複雑度のはなし
Source monitorと複雑度のはなしaomori ringo
 
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそDavid Buck
 
【社内輪読会】Effective Java 8章
【社内輪読会】Effective Java 8章【社内輪読会】Effective Java 8章
【社内輪読会】Effective Java 8章Akira Torii
 
知って得するC#
知って得するC#知って得するC#
知って得するC#Shota Baba
 

What's hot (20)

エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング
 
C++0x総復習
C++0x総復習C++0x総復習
C++0x総復習
 
エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7
 
Emcpp item31
Emcpp item31Emcpp item31
Emcpp item31
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
 
並行プログラミングと継続モナド
並行プログラミングと継続モナド並行プログラミングと継続モナド
並行プログラミングと継続モナド
 
Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理
 
C#coding guideline その2_20130325
C#coding guideline その2_20130325C#coding guideline その2_20130325
C#coding guideline その2_20130325
 
Java scriptの基礎
Java scriptの基礎Java scriptの基礎
Java scriptの基礎
 
Javaクラスファイルの読み方
Javaクラスファイルの読み方Javaクラスファイルの読み方
Javaクラスファイルの読み方
 
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
 
言語処理系入門1
言語処理系入門1言語処理系入門1
言語処理系入門1
 
すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
Source monitorと複雑度のはなし
Source monitorと複雑度のはなしSource monitorと複雑度のはなし
Source monitorと複雑度のはなし
 
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそ
 
【社内輪読会】Effective Java 8章
【社内輪読会】Effective Java 8章【社内輪読会】Effective Java 8章
【社内輪読会】Effective Java 8章
 
知って得するC#
知って得するC#知って得するC#
知って得するC#
 
Boost Fusion Library
Boost Fusion LibraryBoost Fusion Library
Boost Fusion Library
 

Viewers also liked

Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44Appresso Engineering Team
 
Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目11, 12Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目11, 12Appresso Engineering Team
 
Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10Appresso Engineering Team
 
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文Appresso Engineering Team
 
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Executionマルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded ExecutionAppresso Engineering Team
 
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShellAmazon Web Services Japan
 

Viewers also liked (18)

Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52
 
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44
 
Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56
 
Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目11, 12Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目11, 12
 
Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10
 
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
 
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68
 
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加
 
JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値
 
Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65
 
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
 
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
 
Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75
 
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62
 
Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78
 
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Executionマルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Execution
 
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
 
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
 

Similar to Effective Java 輪読会 項目45-48

LLVM overview 20110122
LLVM overview 20110122LLVM overview 20110122
LLVM overview 20110122nothingcosmos
 
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半Tetsuya Morimoto
 
.NET Core 3.0 で使える C# 8
.NET Core 3.0 で使える C# 8.NET Core 3.0 で使える C# 8
.NET Core 3.0 で使える C# 8m ishizaki
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強Kiyoshi Ogawa
 
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Takuya Matsunaga
 
2010 icse-an analysis of the variability in forty preprocessor-based software...
2010 icse-an analysis of the variability in forty preprocessor-based software...2010 icse-an analysis of the variability in forty preprocessor-based software...
2010 icse-an analysis of the variability in forty preprocessor-based software...n-yuki
 
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料Tetsuya Hasegawa
 
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料Tetsuya Hasegawa
 
X86opti01 nothingcosmos
X86opti01 nothingcosmosX86opti01 nothingcosmos
X86opti01 nothingcosmosnothingcosmos
 
PHPの今とこれから2022
PHPの今とこれから2022PHPの今とこれから2022
PHPの今とこれから2022Rui Hirokawa
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 TipsTakaaki Suzuki
 
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム)
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム) cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム)
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム) kunihikokaneko1
 
.NET micro FrameWork for TOPPERS (.NET基礎)@基礎勉強会
.NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会.NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会
.NET micro FrameWork for TOPPERS (.NET基礎)@基礎勉強会Kiyoshi Ogawa
 
2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリングkeki3
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)Kazuko Itoda
 
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23Masashi Shibata
 
Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料techscore
 

Similar to Effective Java 輪読会 項目45-48 (20)

LLVM overview 20110122
LLVM overview 20110122LLVM overview 20110122
LLVM overview 20110122
 
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半
 
.NET Core 3.0 で使える C# 8
.NET Core 3.0 で使える C# 8.NET Core 3.0 で使える C# 8
.NET Core 3.0 で使える C# 8
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
 
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
 
Php5.4
Php5.4Php5.4
Php5.4
 
2010 icse-an analysis of the variability in forty preprocessor-based software...
2010 icse-an analysis of the variability in forty preprocessor-based software...2010 icse-an analysis of the variability in forty preprocessor-based software...
2010 icse-an analysis of the variability in forty preprocessor-based software...
 
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
 
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
 
X86opti01 nothingcosmos
X86opti01 nothingcosmosX86opti01 nothingcosmos
X86opti01 nothingcosmos
 
PHPの今とこれから2022
PHPの今とこれから2022PHPの今とこれから2022
PHPの今とこれから2022
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム)
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム) cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム)
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム)
 
.NET micro FrameWork for TOPPERS (.NET基礎)@基礎勉強会
.NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会.NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会
.NET micro FrameWork for TOPPERS (.NET基礎)@基礎勉強会
 
2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
最速C# 7.x
最速C# 7.x最速C# 7.x
最速C# 7.x
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)
 
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
 
Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料
 

More from Appresso Engineering Team

More from Appresso Engineering Team (13)

Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
 
Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59
 
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42
 
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40
 
Effective Java 輪読会 第6章 項目35-37
Effective Java 輪読会 第6章 項目35-37Effective Java 輪読会 第6章 項目35-37
Effective Java 輪読会 第6章 項目35-37
 
Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34
 
Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31
 
Effective java 輪読会 第5章 項目26-29
Effective java 輪読会 第5章 項目26-29Effective java 輪読会 第5章 項目26-29
Effective java 輪読会 第5章 項目26-29
 
Effective java 輪読会 第5章 項目23-25
Effective java 輪読会 第5章 項目23-25Effective java 輪読会 第5章 項目23-25
Effective java 輪読会 第5章 項目23-25
 
Effective java 輪読会 第4章 項目18-22
Effective java 輪読会 第4章 項目18-22Effective java 輪読会 第4章 項目18-22
Effective java 輪読会 第4章 項目18-22
 
Effective Java 輪読会 第4章 項目13-17
Effective Java 輪読会 第4章 項目13-17Effective Java 輪読会 第4章 項目13-17
Effective Java 輪読会 第4章 項目13-17
 
Effective java 輪読会 第2章 項目5,6,7
Effective java 輪読会 第2章 項目5,6,7Effective java 輪読会 第2章 項目5,6,7
Effective java 輪読会 第2章 項目5,6,7
 
Effective java 輪読会 第2章 項目1,2,3,4
Effective java 輪読会 第2章 項目1,2,3,4Effective java 輪読会 第2章 項目1,2,3,4
Effective java 輪読会 第2章 項目1,2,3,4
 

Recently uploaded

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (10)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

Effective Java 輪読会 項目45-48