Разделение по файлам
Классы/интерфейсы/объекты располагаются в своем файле (два класса в одном файле не приветствуется). В файле рядом с основным объявлением (класс/интерфейс/объект) могут находиться различные extension методы, относящиеся к этому классу. Например в файл класса сущности доменного уровня ещё объявляется экстеншен маппинга сетевой сущности в доменную:
Например:
class ScheduleDeviceDomain(
val id: Int,
val name: String,
val timezone: TimeZoneDomain?,
val deviceParameters: List<DeviceParameterDomain>
)
internal fun DeviceFullResponse.toScheduleDeviceDomain() = ScheduleDeviceDomain(
id = this.id,
name = this.name,
timezone = this.timezone?.toDomain(),
deviceParameters = this.parameterList?.map(Parameter::toDomain).orEmpty()
)