2016/01/17 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Kotlin】BooleanフィールドはisXXXという命名が推奨されている

【Kotlin】BooleanフィールドはisXXXという命名が推奨されている

カテゴリ: ,




らしいです。
元々はKotlinのbooleanのアクセスって変じゃない?って話で。

Kotlinの勉強会に行ってきて、その時の懇親会でJetBrainsの@yanex_ruさんと@ngsw_taroさんの間でそういう話が繰り広げられました。
(勉強会のレポはまた別で書こうかな)




@yanex_ruさんはJetBrainsでKotlinコンパイラとKotlinのAndroid対応をやっているそうです。




話題として、Kotlinのbooleanのプロパティアクセス変じゃない?ってなってたのは2点です。

1.JavaのbooleanのクラスフィールドがKotlinからisXxxというプロパティとしてアクセスされる

JavaとKotlinでフィールド名が変わっちゃうのは違和感ありますよ、って主張ですね。


ソースで言うと、こういうことです。

Java
public class JavaBooleanSample {


    private boolean hoge;
    private boolean fuga;

    public boolean isHoge() {
        return hoge;
    }

    public void setHoge(boolean hoge) {
        this.hoge = hoge;
    }
}


Kotlin
    val sample = JavaBooleanSample()
    // setterアクセス
    sample.isHoge = false
    // getterアクセス
    sample.isHoge


2.KotlinのbooleanプロパティはJavaからgetXxx、setXxxと見える

KotlinでbooleanのフィールドはisXxxになって欲しいのにsetXxx、getXxxになっちゃうよって話です。
ソースで言うと、こんな感じです。

Kotlin
class KotlinBooleanSample {
    var hoge  = true
}

Java
public class AccessToKotlinBooleanAccessor {
    public static void main(String... args) {
        KotlinBooleanSample sample = new KotlinBooleanSample();

        // Kotlinではvar hoge = true
        sample.getHoge();
        sample.setHoge(true);
    }

}






こういうことなんだそうです。

Kotlin
class KotlinBooleanSample {
    var isFuga = true
}


Java
public class AccessToKotlinBooleanAccessor {
    public static void main(String... args) {
        KotlinBooleanSample sample = new KotlinBooleanSample();

        // Kotlinではvar isFuga = true
        sample.isFuga();
        sample.setFuga(true);
}





つまり、Kotlinではbooleanのフィールド変数は
isXxxと宣言するのが正しい。
そしてJavaのフィールドのxxxはKotlinからはisXxxとしてアクセスされる、という仕様らしいです。




@yanex_ruさんによると
・isXxxというアクセスが英語の文法的に自然
・Javaとの相互互換性を考えると、やりやすい

といった理由らしいです。(懇親会でさらっと聞いたので間違ってたらすみません)


確かに、よくよく考えてみるとJavaがbooleanのアクセサメソッドの命名規約を特別扱いしてるとも考えられますもんね。
と考えるとKotlinがこういった対応をとるのは自然なのかなぁとか思いました。




一応作って検証しました。




ちなみにですが、こんなことをすると競合するのかコンパイルエラーになりました

class KotlinBooleanSample {
    var isFuga = true  // コンパイルエラー
    var fuga = true  // コンパイルエラー
}




今まで、KotlinはなんでJavaから見る時にbooleanのアクセサをgetXxx、setXxxって
しちゃうのかなぁと思ってたんですが、謎が解けてスッキリしました。

他の言語でもこういうアプローチとってたりするらしいですね。

言語を作ってる人の話を聞くのは貴重でした。
楽しい勉強会でした!






2016/01/09 このエントリーをはてなブックマークに追加 はてなブックマーク - 「プロジェクトを成功に導く 人を動かす調整力」を読んだ

「プロジェクトを成功に導く 人を動かす調整力」を読んだ

カテゴリ:


この本を読みました。結構すんなり読めたかも。

プロジェクトを成功に導く 人を動かす調整力
プロジェクトを成功に導く 人を動かす調整力


良い本だったので、僕なりに思うところ、興味を持ったところをピックアップしてみようと思います。
あんまり書きすぎると本の中身を並べるだけになるので難しいですね。
ちょっとでも興味持ったら買って読んでみてほしいです!

特に中堅の人、中間管理職、現場リーダー、マネージャーの人など。


2015/12/27 このエントリーをはてなブックマークに追加 はてなブックマーク - チームリーダとかやってみて最近気をつけてること

チームリーダとかやってみて最近気をつけてること

カテゴリ:



夏ぐらいから初めて開発メンバーのちっこいチームのリーダーをやったんだけど、
一応気をつけた事とかをメモしておこうという試みです。


開発チーム・・・自分含め4人ぐらい。


さよなら2015年、おいでませ2016年

カテゴリ:



もう僕は、すっかり年末モードになりました。
年を越す前に今年を振り返っておきたいと思います。




ざっくりハイライトです。



GA