LINEのAndroidアプリを作っています。
こんにちは。コミュニケーションアプリ LINE のクライアントを開発している玉木です。 この記事では、DroidKaigi 2022 の企業ブースで行った Code Review Challenge の 5 問目の解説をします。Code Review Challenge についてはこちらを参照してください。 出題タイトル: Coroutine's hard-to-understand trap that is easy to use for us 5 問目では、以下のようなコードが出題されました。 class MyContentProvider : ContentProvider() { private val singleThreadCoroutineDispatcher: CoroutineDispatcher = Executors.newSingleThreadExecutor().asCoroutineDispatcher() // Do not request again if succeeded once. privat
iOS/Androidエクスペリエンス開発チーム
こんにちは。コミュニケーションアプリ LINE のクライアントを開発している安藤です。 この記事では、DroidKaigi 2022 の企業ブースで行った Code Review Challenge の 4 問目の解説をします。Code Review Challenge についてはこちらを参照してください。 出題タイトル: What layout state class was really needed? 4 問目では、以下のようなコードが出題されました。 data class StickerLayoutState( val stickerID: StickerID, val stickerName: String, val stickerImage: String, val stickerType: StickerType, val creatorName: String, val creatorImage: String, val reviewPageIndex: Int, val reviewPageTo
Developer Experience Development
こんにちは。コミュニケーションアプリ LINE のクライアントを開発している石川です。 この記事では、DroidKaigi 2022 の企業ブースで行った Code Review Challenge の 3 問目の解説をします。Code Review Challenge についてはこちらを参照してください。 出題タイトル: Truth in deep nests 3 問目では、以下のようなコードが出題されました。 class ProfileImageRepository( private val context: Context, private val metadataDao: ProfileImageMetadataDao = ProfileImageMetadataDao(), private val apiClient: RemoteApiClient = RemoteApiClient(context), private val ioScheduler: CoroutineContext = Dispatchers.IO ) { pri
LINEコミュニケーション基盤開発チーム
こんにちは。コミュニケーションアプリ LINE のAndroidクライアントを開発している池永です。 この記事では、DroidKaigi 2022 の企業ブースで行った Code Review Challenge の 2 問目の解説をします。Code Review Challenge についてはこちらを参照してください。 出題タイトル: Split by object, not condition 2 問目では、以下のようなコードが出題されました。 class PlayerPresenter( private val loadingView: View, private val playButton: View, private val pauseButton: View, private val progressView: TextView, private val player: Player, private val lifecycleScope: CoroutineScope ) { private var isPlayi
LINEコミュニケーションサービス開発チーム
こんにちは。コミュニケーションアプリ LINE のクライアントを開発している千北です。 この記事では、DroidKaigi 2022 の企業ブースで行った Code Review Challenge の 1 問目の解説をします。Code Review Challenge についてはこちらを参照してください。 出題タイトル : Everything is something 1 問目では、以下のコードが出題されました。 sealed class ContactType { object Friend : ContactType() object Bot : ContactType() } class friend_item_Presenter( private val friendNameProvider: FriendNameProvider, private val coroutineScope: CoroutineScope ) { fun updateViews(itemId: String) { coroutineS
LINE Engineering Blog official account
2022年10月5日(水)〜7日(金)の3日間にわたって開催された、DroidKaigi 2022にてLINEはゴールドスポンサーを務めました。 会期中はLINEのブースにたくさんの方にお越し頂き、誠にありがとうございました。 本ブログでは、イベント当日2日間実施した「Code Review Challenge」の解説をはじめ、LINEのコードレビューの取り組みや文化についてご紹介いたします。 「Code Review Challenge」に参加してくださった方も、そうでない方も、ぜひ本ブログで再チャレンジしてみて下さい。 Code Review Challengeの概要 DroidKaigi 2022のイベント当日、「Bad Code」を「Good Code」に変える、Code Review Challengeを実施しました。この問題は、LINEの社内でおこなっているレビュー会で紹介されたBad Codeの書き方を参考に、エンジニアが一から考えたオリジナルの問題※になります。 2日間、来場される方に何度も楽しんでいただけるように全部で5つの問題を出題しました。 Schedule