はじめに 本内容は具体例の紹介のためにRxSwift編とありますがシチュエーションによってはSwift全体で言えることかもしれません。本内容で紹介する内容の効果はケースによりかなり差がでますので、そのケースの見極めのためのTIPSになります。 RxSwiftとは RxSwiftではObservableに抽象化されたオブジェクトに対して宣言的な記述をすることで、その関係性と処理を決めることができます。 一方で内部的な抽象化の表現のためにジェネリクスなどが多く用いられており、メソッドチェーンを多用します。そのため、書き方次第ではコンパイル時間が100倍違うケースも存在します。 TL;DR a == falseと!aの書き方の違いでコンパイル時間が数千倍変わるケースがある。 オペレータ内でBoolの評価は論理値のみで評価する .filter { $0.isOk == false } // Bad
![NO MORE ビルド時間泥棒 ☕️❌【RxSwift編】 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/7c91d2789071d40d6e423b8c308dd269dcf82f4b/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9Tk8lMjBNT1JFJTIwJUUzJTgzJTkzJUUzJTgzJUFCJUUzJTgzJTg5JUU2JTk5JTgyJUU5JTk2JTkzJUU2JUIzJUE1JUU2JUEzJTkyJTIwJUUyJTk4JTk1JUVGJUI4JThGJUUyJTlEJThDJUUzJTgwJTkwUnhTd2lmdCVFNyVCNyVBOCVFMyU4MCU5MSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZWU1MjIyOTIzZGYxZmUxMGUwZTdmYTkzYTRhMDdiMDE%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwcmlub3YmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWY2NDk0NzU4M2IzMGNmN2ZiNjY2NTQzMWY5YzViNDk4%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dcbf5a09286de861a049946128101e894)