Это нарушение принципа единой ответственности (SRP)

Сделайте методы getSummary а также getMovementType нарушают SRP, поскольку знают слишком много (Context)? Эти методы используются вRecyclerView.Adapter.

abstract class Movement(
    val movementId: Int = 0,
    val created: Date = Date(),
    val createdBy: String = "",
    val movementActive: String = Constants.ACTIVE,
    var quantity: Double = 0.0,
    var material: Material = Material()
) {
    abstract fun getSummary(context: Context): String
    abstract fun getMovementType(context: Context): String
}


data class Entry(
    val id: Int = 0,
    var observation: String = "",
    var warehouse: Warehouse = Warehouse()
) : Movement() {

    override fun getSummary(context: Context) =
        context.getString(R.string.title_warehouse) + ": ${warehouse.name}. " +
        context.getString(R.string.title_material) + ": ${material.name}. " +
        context.getString(R.string.quantity) + ": $quantity. " +
        context.getString(R.string.observation) + ": $observation. " +
        context.getString(R.string.user) + ": $createdBy"

    override fun getMovementType(context: Context) = context.getString(R.string.title_entry)
}

1 ответ

Нет, это не так.

Какой бы метод не знал (контекст в вашем случае), SRP собирается "взять на себя единственную ответственность".

Я вижу, что ваши методы возвращают только некоторые значения из контекста. Не позволяйте им делать что-либо еще (например, устанавливать что-то куда-то или что-то куда-то отправлять), и вы следуете SRP

Другие вопросы по тегам