eclipse を使った java 開発 111126 杉浦
TRANSCRIPT
![Page 1: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/1.jpg)
1
Eclipse を使ったJava 開発
杉浦 彰Twitter: @urasandesu
Blog: http://urasandesu.blogspot.com/
![Page 2: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/2.jpg)
2
はじめに
既に、 VB や C++ などの、他のプログラミング言語を使った開発を行ったことがある人向けの資料です。
Eclipse を使った基本的な Java 開発を行うための導入資料となります。
ソフトウェア構成管理の一部である、テスト自動化についても触れています。
![Page 3: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/3.jpg)
3
Java http://java.com/en/オブジェクト指向プラットフォーム非依存(互換性重視)
ネットワーク機能を標準でセキュリティ開発のしやすさ(枯れた構文、 GC、マルチスレッド向け言語仕様)
![Page 4: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/4.jpg)
4
Eclipse http://www.eclipse.org/統合開発環境( IDE) 元は IBM が開発→ OSS 化豊富なプラグインデバッグ・ステップ実行コード編集支援(自動補完、自動追加、自動生成)
![Page 5: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/5.jpg)
5
インストール
なにはともあれ、開発環境
![Page 6: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/6.jpg)
6
Eclipse 3.7 Indigo(EE) 32bit 版
– eclipse-jee-indigo-SR1-win32.zip 64bit 版
– eclipse-jee-indigo-SR1-win32-x86_64.zip
適当なフォルダへ解凍 これだけ?
– これだけ。– コンパイラは同梱されてる。– ベンダにより微妙に挙動が違うのはよくある話。
最終的には標準的な環境で試すのが吉。
![Page 7: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/7.jpg)
7
Hello, world!!
さっそく動かして見る
![Page 8: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/8.jpg)
8
1. Eclipse を起動し、ワークスペースを指定。
![Page 9: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/9.jpg)
9
2. Welcome 画面。とりあえず閉じる。
![Page 10: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/10.jpg)
10
3. Package Explorer ビューで右クリック、[New]→[Project] を選択。
![Page 11: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/11.jpg)
11
4. New Project ダイアログが開いたら、 [Java Project] を選択し、 [Next] ボタンをクリック。
![Page 12: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/12.jpg)
12
5. New Java Project ダイアログが開いたら、[Project name] に “HelloWorld” を入力し、[Finish] ボタンをクリック
![Page 13: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/13.jpg)
13
6. Package Explorer ビューにできたHelloWorld プロジェクトの中にある src フォルダを右クリック、 [New]→[Class] を選択。
![Page 14: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/14.jpg)
14
7. New Java Class ダイアログが開いたら、[Name] に “Main” を入力し、 [Finish] をクリック。
![Page 15: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/15.jpg)
15
8. Main.java をダブルクリックして開き、以下のようなコードを入力。
public class Main {
public static void main(String[] args) {
System.out.println("Hello, world!!");
}
}
![Page 16: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/16.jpg)
16
9. 一通り入力が終わったら保存。 Problems ビューにビルドエラーが検出されていないことを確認。
![Page 17: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/17.jpg)
17
10. Package Explorer ビューの Main.java を右クリック、 [Debug As]→[Java Application]。
![Page 18: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/18.jpg)
18
11. 実行結果が Console ビューに表示される。
![Page 19: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/19.jpg)
19
せっかくなら・・・
環境のカスタマイズ自分やメンバのお好みで
![Page 20: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/20.jpg)
20
フォントの種類やサイズを変える [Window] – [Preferences]
[General] – [Appearance] – [Colors and Fonts]
![Page 21: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/21.jpg)
21
行番号を表示 /列ガイドを表示 [Window] – [Preferences]
[General] – [Editors] – [Text Editors] – [Show line numbers]
[General] – [Editors] – [Text Editors] – [Show print margin] [Print margin column] に桁数を入力
![Page 22: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/22.jpg)
22
シンタックスハイライトをカスタマイズ [Window] – [Preferences]
[Java ] – [Editor] – [Syntax Coloring]
![Page 23: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/23.jpg)
23
タブ派 v.s. スペース派 [Window] – [Preferences]
[Java ] – [Code Style] – [Formatter] – [Edit] ボタンクリック
[Profile name] にわかりやすい名前を入力 [Indentation] タブの [Tab policy] を変更
![Page 24: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/24.jpg)
24
1 行に入る文字数 [Window] – [Preferences]
[Java ] – [Code Style] – [Formatter] – [Edit] ボタンクリック
[Profile name] にわかりやすい名前を入力 [Line Wrapping] タブの [Maximum line width] を変更
![Page 25: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/25.jpg)
25
設定のインポート /エクスポート
インポート– [File] – [Import]
[General] – [Preferences] – [Next] ボタンクリック [From preference file] に他のマシンからエクスポートした設定ファイルを指定し、 [Finish]
エクスポート– [File] – [Export]
[General] – [Preferences] – [Next] ボタンクリック [Export all] チェックボックスをチェック [To preference file] にエクスポートする設定ファイルパスを指定し、 [Finish]
![Page 26: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/26.jpg)
26
他にも色々?
Eclipse の真骨頂
![Page 27: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/27.jpg)
27
例えば、静的解析ツール
バグの元になりやすそうなパターンを指摘– 無効な引数– 変数の初期化し忘れ– コメントの有無
Eclipse で使える静的テストツール - @IT– http://www.atmarkit.co.jp/fjava/rensai3/eclipsetst02/eclipsetst02_1.html
![Page 28: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/28.jpg)
28
Checkstyle
代表的な静的解析ツールを使ってみるプラグインの導入方法も
![Page 29: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/29.jpg)
29
Checkstyle
http://checkstyle.sourceforge.net/ Java のための静的解析ツール 主にコーディング規約が遵守されてるかどうか– 空白スペースの記述位置– クラス名、メソッド名、定数、変数などの命名規則
– Sun のコーディング規約があらかじめ提供される
![Page 30: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/30.jpg)
30
あと、プラグイン Eclipse に新しい機能を付けられる 柔軟性は非常に高い
– Java 以外の言語でも Eclipse を利用可能に!– C+
+、 PHP、 Perl、 C#、 D、 TeX、 Python、Ruby、 JavaScript、 COBOL…
簡単な導入機能– ただし、 Eclipse 3.4 以降
Checkstyle もこれに対応したプラグインを配布– http://eclipse-cs.sourceforge.net/
![Page 31: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/31.jpg)
31
1. [Help] メニューの [Install New Software]
![Page 32: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/32.jpg)
32
2. Install ダイアログが開いたら、[Add] ボタンをクリック
![Page 33: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/33.jpg)
33
3. Add Repository ダイアログが開いたら、[Name] にわかりやすい名前入力し、 [Archive] ボタンをクリック
![Page 34: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/34.jpg)
34
4. ダウンロードした zip ファイルを指定し、[OK] ボタンをクリック
![Page 35: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/35.jpg)
35
5. [Select All] ボタンをクリックし、 続けて [Next] ボタンをクリック
![Page 36: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/36.jpg)
36
6. [Next] ボタンをクリック
![Page 37: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/37.jpg)
37
7.License Agreement を確認し、 [Finish] ボタンをクリック
![Page 38: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/38.jpg)
38
8.Warning ダイアログが出てもそのまま進める
![Page 39: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/39.jpg)
39
9.Eclipse の再起動を促されるので、再起動
![Page 40: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/40.jpg)
40
10.試しに最初のプログラムをチェックしてみる。 – 右クリック [Checkstyle] – [Check Code
with Checkstyle]
![Page 41: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/41.jpg)
41
11.指摘たくさん!
![Page 42: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/42.jpg)
42
12. プロジェクトや個人で使いたいものに絞り込む。 [Window] – [Preferences]
[Checkstyle] デフォルトの Check Configuration をコピーするなどして、使うチェックだけにカスタマイズ
![Page 43: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/43.jpg)
43
ソフトウェア構成管理はじめの一歩
急に JUnit に入ってもアレかと・・・すみません・・・前置き長いかもです
![Page 44: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/44.jpg)
44
例えばこんな問題
しっかり直したはずの不具合が、いつの間にか復活してる!
このバージョンのマスタがあったはずなのだけど、どこに行った?
追加したはずの機能が、他の人の手違いで上書き /削除されてしまった!
特定の PC にしか最新版のソースがない、特定の人しかビルド /リリースできない・・・。
ある機能の実装を担当していた人が突然いなくなってしまった!
![Page 45: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/45.jpg)
45
例えば、「しっかり直したはずの不具合が~」
何が起こった?(他に影響はない?) いつから? どのリリースから?(仕向け地毎 /機器毎にカスタマイズしてる場合とか)
誰が?(我々?それとも別会社?) なぜそれが入り込んだ?
再発防止策、作ってよ?
不具合が出ちゃったものはしょうがないけど、
ちゃんと説明してよね!
![Page 46: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/46.jpg)
46
これらの問題を解決するために
ソフトウェア構成管理Software Configuration Management: SCM
構成管理=構成管理=品質管理+変更履歴管理品質管理+変更履歴管理
![Page 47: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/47.jpg)
47
品質管理と変更履歴管理
品質管理–要求 /障害の管理–リリース計画
変更履歴管理–作業記録–複数メンバによる共同作業時の決め事
![Page 48: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/48.jpg)
48
ただ・・・ 例えば、不具合を不具合管理用の帳票で
↓ 過去に似たようなもの直したはずだから、参考にしたい・・・でも、どこにあるの?
そもそも帳票の最新版はどれ?
不具合管理帳票の変更管理表過去に修正した不具合の一覧表それらの文書をまとめる管理表
・・・あれ?
![Page 49: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/49.jpg)
49
自動化、しましょうか・・・
脱・属人性方法論があるのであれば、なるべく
![Page 50: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/50.jpg)
50
品質管理ツール
要求 /障害の管理– Mantis/Trac/Redmine
リリース計画–継続的インテグレーション
Continuous Integration: CIビルド自動化( xmake/xant)テスト自動化( xUnit)
![Page 51: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/51.jpg)
51
変更履歴管理ツール
第 1 世代– SCCS/RCS
第 2 世代– CVS/SVN/VSS
第 3 世代– Bazaar/Git/Mercurial
![Page 52: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/52.jpg)
52
寄り道
品質管理とか変更履歴管理とか、他の部分のための社内勉強会もあるといいですね。
オープン系は結構情報出てくるんですけど、基幹系はこの辺りどうなってるんでしょう?xUnit の類に COBOLUnit ってツールもあるみたい?
– COBOL→Java 載せ換えみたいなプロジェクトでこの辺りの話はあるのか~とか。
– せっかく載せかえるのだから、バッチ処理の負荷分散とか並列処理とか~とか。
![Page 53: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/53.jpg)
53
JUnit
今回は、テスト自動化ということで
![Page 54: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/54.jpg)
54
JUnit
http://www.junit.org/ Java 向けのユニットテスト(単体テスト)自動化フレームワーク
Smalltalk の SUnit を元にケント・ベックらが中心となって開発
Eclipse EE には標準で同梱
![Page 55: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/55.jpg)
55
1. Package Explorer を右クリック→ [New]→[JUnit Test Case]
![Page 56: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/56.jpg)
56
2. New JUnit Test Case ダイアログが開いたら、Name にわかりやすい名前を入れ、 [Finish] ボタンをクリック
![Page 57: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/57.jpg)
57
3. 実行。 [Debug As]→[JUnit Test]
![Page 58: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/58.jpg)
58
4. JUnit ビューが自動的に表示される。まだ失敗。
![Page 59: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/59.jpg)
59
5. テストを追加。 標準出力に Hello, world!! が出力されるんだっけ
。public class MainTest { @Test public void test() { // 設定 ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos); System.setOut(ps); // 実行 Main.main(new String[] {}); // 検証 Assert.assertEquals("Hello, world!!\r\n", baos.toString()); }}
![Page 60: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/60.jpg)
60
6. もう一度実行→成功した!
![Page 61: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/61.jpg)
61
機能を追加してみる
引数に与えた文字列を計算させる。イメージ
$> java Main + 1 1
Result: 2
![Page 62: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/62.jpg)
62
7. テストの修正。public class MainTest { @Test public void test_main01Add() { // 設定 ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos); System.setOut(ps); // 実行 Main.main(new String[] {"+", "1", "1"}); // 検証 Assert.assertEquals("Result: 2\r\n", baos.toString()); }}
![Page 63: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/63.jpg)
63
8. 実行。もちろん失敗する。
![Page 64: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/64.jpg)
64
9.機能の変更。これでいいかな?
public class Main {
public static void main(String[] args) {
if (args[0].equals("+")) {
int x = Integer.parseInt(args[1]);
int y = Integer.parseInt(args[2]);
System.out.println(
String.format(
"Result: %d", x + y));
}
}
}
![Page 65: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/65.jpg)
65
10.再度実行。O.K.!!
![Page 66: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/66.jpg)
66
でも、ほんとにこれで大丈夫?
引数に何も与えられない場合は?引数が空の場合は?引数の数が足らない場合は?多すぎる場合は?
引数が数字じゃない場合は?
![Page 67: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/67.jpg)
67
不安をテストに
怪しいのは非対称なパターン、異常系テストが書けないのは、仕様や設計が不明確なことも多々– “+”以外はなんかないの?
聞いて見ると、“ -”, “*”, “/” も必要だった!–整数の演算しかないの?
聞いて見ると、小数点付きの数や 16 進数の計算も必要だった!
実は、文字列の結合もしたいという要望もあった!
![Page 68: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/68.jpg)
68
自動化しておくことで
仕様の変更や機能の追加に対しては・・・– 前にあった機能と実は競合してた、みたいなことが早めにわかる
– 処理の流れを整理したい、というときに安心してできる(リファクタリング)
– 新しく入った人に、勉強も兼ねて安全に触ってもらえる
一通り完成した後の保守でも・・・– 不具合対応が、もし他の場所に影響していた場合に検出しやすくなる(デグレの検出)
![Page 69: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/69.jpg)
69
演習!
習うより慣れろ、です※演習資料は、 TDDBC for C++ で使われたものを利用させていただき
ましたhttp://www.slideshare.net/imagire/tdd-boot-camp-for-c
![Page 70: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/70.jpg)
70
ハマりやすいところをいくつか
プリミティブ型(値型)と参照型– ラッパー型と Auto Boxing/Unboxing の動き
Integer i = null; // コンパイル可!int ii = i; // 実行時に NullPointerException!
演算子のオーバーロードはありません– String の同値比較は、 equals メソッドで
「リソースの確保は初期化時に( Resource Acquisition Is Initialization: RAII)」できません( Java 6 まで)– 例外安全にするには、 finally 文や Rent パターン
– Java 7 からは拡張 try 文が使える
![Page 71: Eclipse を使った java 開発 111126 杉浦](https://reader031.vdocuments.site/reader031/viewer/2022013121/5595a07d1a28ab14448b466b/html5/thumbnails/71.jpg)
71
Java を使ったプロジェクトならではの問題も?
変な規約– 設計書に書かれたクラスしか作ってはいけない!
初期のころの不具合やパフォーマンスの問題が未だに信じられている?
古いバージョンしか使えない– Java 4、 Java 5 は現役!
社内フレームワークがバージョンアップに付いて行けていない?
15 年前に出た言語なので、他にもありそう– ただ、未だに一番人気がある言語という地位を守っている事実!
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html