Please enable JavaScript.
Coggle requires JavaScript to display documents.
5/2~5/6 (H氏によるライフゲームのコードレビュー (メソッドの名称が統一されていない あるいは機能を明確にしていない (codicの使用,…
5/2~5/6
H氏によるライフゲームのコードレビュー
配列の要素の数を表しているものなどは、
絶対に書き換えられない保証をつけるべき
final修飾子
メインメソッド内ではなく、フィールドで変数を宣言することによって、引数を節約できる
while文では条件がtrueでもループを抜ける処理を入れる
カウント用の変数は、桁あふれを考慮した方がベター
桁あふれによるバグが原因の死亡事故も起きている
メソッドの名称が統一されていない
あるいは機能を明確にしていない
動詞+名詞
codicの使用
https://codic.jp/engine
ラムダ式
三項演算子
(<条件式>) ? <true時出力> : <false時出力>
使いすぎると可読性が下がってしまうため、多用は厳禁
オーバーライド
同じシグネチャのメソッドを上書きする事
あああああ
overrideアノテーション
オーバーライドするメソッドにつけ、オーバーライドしていることを示す
Java SE5.0で追加
正確にオーバーライドできていなければコンパイルエラーとなる
アノテーションをつけることで、正確性を保つ
superキーワード
スーパークラスへの参照
スーパークラスのメンバにアクセスする際に使用する
super.<フィールド名> / super.<メソッド名>
自クラスのメンバにアクセスする際には
thisキーワードを使用
ポリモーフィズム
#
のために用いられることが多い
オーバーライドの禁止
メソッドにfinal修飾子がついている場合、オーバーライドができない
オーバーライドのルール
戻り値
元のメソッドと同じか、そのサブタイプであること
アクセス修飾子
元のメソッドと同じか、より広い範囲からアクセス可能であること
例外
元のクラスと同じ
良いコードを書くための習慣
読む
Google Code Search
Koders
書く
写経
コピペは×
道具を磨く
エディタ/統合開発環境
ビルドの自動化
知る
書籍
原典とHow to本の2冊買い
リファレンスや仕様書などのドキュメント
Webサイト
RSS/フィードリーダー
Google Reader
livedoor reader
聞く
コードレビュー
GitHubなど
ブログを書く
勉強会への参加
成果の発表
オブジェクト指向の三大機能
カプセル化
5/1参照
継承
親クラスのメソッドやフィールドを引き継いだクラスを作成すること
親クラス=スーパークラス
親クラスを引き継いだクラス
=サブクラス
extendsキーワード
extends クラス名
でクラスを引き継ぐ
基本的にはスーパークラスから書き始める
スーパークラスのメンバはサブクラスでそのまま利用できる
但し、privateなものは利用できない
継承のメリット
複数のクラスで共通するメンバをスーパークラスにまとめることができる
サブクラスになればなるほど細分化・具体化される
汎化と特化
汎化
サブクラスを作成する事
より具体的にする
特化
スーパークラスを作成する事
より抽象的にする
is-aとhas-aの関係
A is a B(= AはBである)
AとBは継承関係
Aがサブクラス
Bがスーパークラス
A has a B(=AはBを持っている)
クラスとそのフィールドの関係
Aがクラス
Bがフィールド
単一継承と多重継承
多重継承
C++などでは複数のクラスを継承できる
単一継承
Javaでは1つのクラスしか継承できない
継承の禁止
クラスにfinal修飾子がついている場合、そのクラスのサブクラスを作ることができない
スーパークラスのコンストラクタは継承されない
サブクラスでコンストラクタを定義しなければいけない
スーパークラスのコンストラクタを利用するには、
super()
#
キーワードを使用する
super()は記述していなくても暗黙的に呼び出される
明示的に記述する場合、サブクラスのコンストラクタ内の先頭に記述しなければいけない
objectクラス
すべてのスーパークラス
extendsを記述していない場合、
objectクラスのサブクラスとみなされる
ポリモーフィズム
TDD
テスト駆動型開発