前回の話の続きです。読みやすいコードってどういうコードなのかって考えると「頭をできるだけつかわずにコードを読める」というのが読みやすいコードかなと思います。その一つとして変数は可能な限り定数宣言しておくとコードの読みやすさが変わってきます。Kotlinだとvar変数はあとから中身が変わるので、コードを読む上では「覚えていかないといけない」変数になるため頭を使うことになります。一方でval変数はあとで中身が変わらないのでコードを読む上では「一旦は覚えておかなくてもよい」変数になるので、頭をあまり使わないで済みます。
// ViewBinding    
private var _viewBinding: FragmentBinding? = null
private val viewBinding get() = _viewBinding!!

val変数で表現できる場合は可能な限りvalを使うようにしましょう。例えばダイヤログなどは引数を取らない場合は表示するか非表示にするかしか使われないので、下記のように変数にしてしまいましょう。

// https://github.com/afollestad/material-dialogsを利用
private val dialog: MaterialDialog by lazy {
     MaterialDialog(requireContext()).apply {
         cancelOnTouchOutside(false)
         title(R.string.title)
         message(R.string.message)
         positiveButton(android.R.string.ok) {
             startActivity(
                 Intent(
                     Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
                     Uri.parse("package:" + requireActivity().packageName)
                 )
             )
         }
         negativeButton(android.R.string.cancel) {
             dismiss()
        }
    }
}

// 表示非表示時はshow() or dismiss()
dialog.show()
dialog.dismiss()

// 変数にしないと毎回長いコードを読むことになる
MaterialDialog(requireContext()).apply {
    cancelOnTouchOutside(false)
    title(R.string.title)
    message(R.string.message)
    positiveButton(android.R.string.ok) {
        startActivity(
            Intent(
                Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
                Uri.parse("package:" + requireActivity().packageName)
            )
        )
    }
    negativeButton(android.R.string.cancel) {
        dismiss()
    }
}.show()
MaterialDialog(requireContext()).apply {
    cancelOnTouchOutside(false)
    title(R.string.title)
    message(R.string.message)
    positiveButton(android.R.string.ok) {
        startActivity(
            Intent(
                Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
                Uri.parse("package:" + requireActivity().packageName)
            )
        )
    }
    negativeButton(android.R.string.cancel) {
        dismiss()
    }
}.dismiss()

// 通知関連の変数も処理の途中で用意するのではなく、定数に置いておけばコードの見通しは良くなります
private val notificationManager by lazy { (requireContext().getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager) }
private val notificationManagerCompat by lazy { NotificationManagerCompat.from(requireContext()) }
private val notificationCompatBuilder by lazy { NotificationCompat.Builder(requireContext(), getString(R.string.checker_notification_channel_id)) }

このように関数内で初期化する必要が無い変数は可能な限りval変数で定義することをおすすめします。