at 渋谷Java
- @numa08
- 新宿で働いてる
- 新卒ですよ
- 同期に先輩って呼ばれる
- 主にAndroidとiOS
- 変数への再代入を許さない
- クラスの継承を許さない
- オーバーライドを許さない
- 変数への再代入を許さない
final int hoge = 0;
hoge = 1; //ここでコンパイルエラー
最初にアサインしたプロジェクトの話。
-
Androidのプロジェクト
-
Activity(画面)だけで50近く←わかる
-
View(ボタンとか画像とか)を全てフィールド変数として宣言している←え?
-
フィールド変数の宣言だけで100行以上←ふぁっ!?
-
Activityだけで1000行以上←▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂
-
なんだかよくわからない変数名
-
もちろん全部finalしてない
-
ついでにprivateもしてない
-
フィールドと、getterとsetterしかないクラス
-
フィールドも100個近く・・・
-
今は使わないものもある
-
どれが使うやつかそうでないか判別不能
( ◠‿◠ )
楽しい!!
✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
-elseを使わない
-setterを使わない
Fee fee = null;
if(customer.isChild()){
fee = Fee.CHILD_FEE;
} else {
fee = Fee.ADULT_FEE;
}
private Fee calcFee(Customer customer){
if(customer.isChild){
return Fee.CHILD_FEE;
}
return Fee.ADULT_FEE;
}
final Fee fee = calcFee(customer);
//finalできた!
final Map<Boolean, Fee> feeis =
new HashMap<Boolean, Fee>{{
put(Customer.IS_CHILD,Fee.CHILD_FEE);
put(Customer.IS_ADULT,Fee.ADULT_FEE);
}}
final Fee fee = feeis.get(customer);
//finalできた!!
private interface CalcFee{ public Fee calc(Customer c);}
final Fee fee = new CalcFee(){
public Fee calc(Customer customer){
if(customer.isChild){return CHILD_FEE;}
return ADULT_FEE;
}
}.calc(customer);
//finalできた!!(しろめ)
(´,,•ω•,,`)わわっ!finalできてますね!!
(๑´╹‸╹`๑)早期リターンでメソッド増えましたね
(๑´╹‸╹`๑)Mapでジェネリクスを使うと、オートボクシングが・・・
(๑´╹‸╹`๑)interfaceってそうやって使うもの?
ヾ(๑╹◡╹)ノ"あ、でもfinal「は」できてますね!
-elseを使わない -setterを使わない
public class Profile{
private final String name;
private final int age;
public Profile(String name, String age){
this.name = name;
this.age = age;
}
}
final Profile me = new ProfileBuilder()
.setName("numa08")
.setAge(24)
.setCity(Chofu)
.setSex(Male)
.create();
public class Profile{
public Profile changeCity(City city){
return new ProfileBuilder()
.setName(this.name)
...
.setCity(city).create();
}}
final Profile newProfile = oldPfofile.changeCity(Shibuya);
(´,,•ω•,,`)わわっ!またfinalできてますね!!
(๑´╹‸╹`๑)コンストラクタが肥大化しましたね・・・
(๑´╹‸╹`๑)ビルドパターンとか知ってる人いるんですか?
(๑´╹‸╹`๑)オブジェクトの変えちゃうって、大富豪ですね
ヾ(๑╹◡╹)ノ"あ、でもfinal「は」できてますね!
- むやみにfinalつけるとGCとかどうなの?
- 変なinterfaceの使い方すると可読性下がるだけだよね
- ビルドパターンとか、オブジェクトの変更とかいいけど、コード量増えたね
- 本当にそれでメンテ性とか上がったの?
val hoge = 1
hoge = 2 //コンパイルエラー
val fee = ((cusomer:Customer) => {
if(customer.isChild){
FEE_CHILD
} else {
FEE_ADULT
}
})(customer)//無名関数ってやつですね
val fee = if(customer.isChilde){
FEE_CHILD
} else {
FEE_ADULT
}
主に麹町でScalaについて勉強をしたい人が集まって、ゆるふわな感じでScalaを勉強する集まり。
次回は8/3(土)
きてね!