生産中のKotlin、何を手に入れ、何を失ったのか?

コトリン グーグルがコトリンを新しい愛する妻にしてから十分な時間が経ちました。 そして、この発表の直後、私たちのチームはKotlinで完全に新しいプロジェクトを開始しました。 明確にします:テストや単なる内部プロジェクトではなく、1か月あたり60万人以上のアクティブユーザーがいるライブアプリケーション用の新しいモジュールです。 これからどのような経験を学びましたか? 何を勝ち取り、何を失ったのか?



まず第一に、ビルド時間、Javaとの完全な相互作用、およびパフォーマンスに関するJetBrainsの約束を繰り返しません。 Kotlinコードがほぼ同じ速度であり、オーバーヘッドがリソースからの典型的なPNG画像のサイズを超えないことは事実です。 しかし、なぜKotlinが必要なのか、その違いは何ですか?



ファン係数



明らかに、コトリンは最初に学ばなければなりません。 学習曲線はK2の山のように見えませんが、平坦でもありません。同僚の1人は、Kotlinでタスクを完了するのに約2倍の時間がかかることに気付きましたが、誰も不満を言いませんでした。 それどころか、誰もが生産中のすべてのホイッスルを備えた新しいクールなおもちゃを使用する機会に満足していました。 さらに、最高の候補者を引き付けるために、インタビュー中にKotlinで書いていることに言及することに同意しませんでした。 したがって、このカテゴリでの明確な勝利は、コトリンを100ポイント上回っています。



スピード



新しい言語での作業は、構文の研究だけでなく、書き込み、読み取り、リファクタリング、テストなどの組み合わせです。 これについてもう少し詳しく見ていきましょう。



書き込み速度



Kotlinに多少なりとも快適に感じるには、平均で約2週間かかりました。 また、Javaよりも速く書き込みを開始するのに約2週間かかりました。 ScalaとGroovyの経験があった人は、Kotlinの作者がそれらに大いに触発されていたので簡単でした。 IDEからのサポートはまだ完全ではありません。多くの便利で馴染みのあるJavaリファクタリングと自動置換は現在は機能しません。 しかし、この問題にもかかわらず、最終的には速度の面でまだ少しプラスになっています。 ただし、このカテゴリでのKotlinの弱い勝利は、Android Studio 3.0の最終バージョンからより多くを期待しています(執筆時点では、まだベータ版を使用していました)。



読み取り速度



Kotlinのコードはかなり短いですが、GitHubでプルリクエストを逆アセンブルするには時間がかかります。 なぜそう まず、GoogleもJetBrainsも本格的なスタイルガイドを用意していなかったため、チームメンバーは「美」について議論する時間をより多く費やし始めました。 公式のコード例でさえ、すべてが同じというわけではありません。 第二に、いくつかの新しい構成(Java用)が不利に使用される可能性がありますが、Javaでは、そのように書くことはできません。 合計:わずかですが、この方向の損失はありますが、物議を醸す事件の約99%がすでに合意に達しているため、近い将来に改善が見込まれます。



ツールとライブラリ



ひどい真実は、CheckstyleとLintはまだKotlinにとってまったく役に立たないということです。私たちはそれらを積極的に使用しますが、ライブラリにはほとんど問題がなく、同じDaggerは問題なく動作します。 また、Kotlin-Xを入手し、Ankoをプロジェクトにドラッグします。 ここでも、Kotlinの損失があり、Kotlin-Xを使用したAnkoは錠剤を甘くすることができますが、近い将来、スタイルチェッカーの作業が劇的に改善されるとは考えていません。



テスト中



そして、ここで私たちは突然有利になりました。 Kotlinには新しいテストツールやライブラリは付属していませんが、新しい言語機能、特に型推論、拡張、具体化された型により、テストクラスのボイラープレートの量が大幅に削減されました。 IDEが純粋なJVM単体テストであるかのようにEspressoを実行しようとすることがあり、明らかにタスクに対処できなかったとしても、ここでの明確な勝利です。



自己啓発



新しいプログラミング言語は、新しいキーワードの束だけではありません。これらは、馴染みのあるパターンを書き換える新しい方法です。これらは、いくつかの新しいパラダイムであり、コードで思考を考え、表現する新しい方法です。 Kotlinを勉強して、別の言語で書く方法を学んだだけでなく、古い言語のコードのより良い部分を作成する方法を理解しました。 そして、私たちは間違いなく快適ゾーンの境界を越えて自分自身をプッシュしました。それは正直なところ、一種のファン要因でもありますが、ファン要因はそれだけの価値があります!



追伸 当初、この記事は企業ブログ用に英語で書かれていましたが、著者の名前の「偶然の一致」が偶然ではないように、ロシア語で存在することにしました。



All Articles