Kotaro666-dev / android-project-refactoring

Apache License 2.0
1 stars 0 forks source link

プログラム構造をリファクタリング #5

Closed github-actions[bot] closed 1 year ago

github-actions[bot] commented 1 year ago

本プロジェクトは様々な原則に違反しています。下記のリストを参考にプログラムをリファクタリングしましょう。

Kotaro666-dev commented 1 year ago

DRY原則

Don't Repeat Yourself

重複したコードを作らないようにする原則。

注意点

DRY原則を過度に行ってしまうことで、余計な依存関係を生まないように注意する

Kotaro666-dev commented 1 year ago

CQS 原則

コマンドクエリ分離原則

基本的な考えは、オブジェクトのメソッドを明確に2つのカテゴリに分類するというものである。 問い合わせ:結果を返し、システムの状態を変更しない(副作用がない) コマンド:システムの状態を変更し、値を返さない

参考資料

https://bliki-ja.github.io/CommandQuerySeparation/

Kotaro666-dev commented 1 year ago

単一責任の原則

1つのクラスは1つだけの責任を持たなければならない。 すなわち、ソフトウェアの仕様の一部分を変更したときには、それにより影響を受ける仕様は、そのクラスの仕様でなければならない。

参考資料

https://www.ogis-ri.co.jp/otc/hiroba/others/OOcolumn/single-responsibility-principle.html

Kotaro666-dev commented 1 year ago

インターフェイス分離の原則

「クライアントに、クライアントが利用しないメソッドへの依存を強制してはならない」というインターフェースを作る際の原則

参考資料

http://www.code-magagine.com/?p=17341

Kotaro666-dev commented 1 year ago

驚き最小の原則

要は、人間やユーザーやプログラマが最も自然だと思える名前を選択するべきといこと。

参考資料

http://www.code-magagine.com/?p=14135

Kotaro666-dev commented 1 year ago

メモ

以下のように diffCallback を CustomAdapter クラス内に内包させることができる

Path: src/main/kotlin/jp/co/yumemi/android/code_check/SearchScreenFragment.kt

companion object {
        val diffCallback = object : DiffUtil.ItemCallback<item>() {
            override fun areItemsTheSame(oldItem: item, newItem: item): Boolean {
                return oldItem.name == newItem.name
            }

            override fun areContentsTheSame(oldItem: item, newItem: item): Boolean {
                return oldItem == newItem
            }

        }
    }
Kotaro666-dev commented 1 year ago

対応内容が develop にマージされましたので、本ISSUE をクローズします。