Intereting Posts
Переопределение активателя имущества Котлина приводит к двум JPA @Id Аргументы по умолчанию Kotlin: запретить вызовы с нулевыми аргументами Невозможно однозначно идентифицировать макет при добавлении вложенных фрагментов с помощью фрагментации Android Kotlin Dagger2 предоставляет gson: Параметр, указанный как непустой, равен null Kotlin Hibernate OneToOne fetchtype.LAZY немедленно запускает все запросы «Объект» не является частью схемы для этого Царства Kotlin: проверьте, был ли инициализирован ленивый val Почему == и равные производят разные результаты? Внутренние записи (столбцы) в объекте помещения BadCredentialsException: не удалось получить токен доступа с безопасностью загрузки Oauth2 на GAE Чтение нескольких строк из одной линии в Котлине? Повторная установка + повтор RxJava с другой ссылкой Адаптер, дублирующий просмотр Recycler Общие понятия Котлина: несоответствие типов в параметре общей карты Стереть внутренний статус объекта в тесте

Объявление поля POJO, значение init или null

В моем POJO я обычно объявляю поля, подобные этому

class SampleModel { var field1: String? = null var field2: Int? = null <more fields here> } 

Если я объявлю подобное, мне нужно будет проверить, является ли поле нулевым или нет.

Но если так:

 class SampleModel { var field1 = "" var field2 = 0 <more fields here> } 

Я могу использовать его напрямую.

Имеет ли значение использование декларации? Как с точки зрения памяти, производительности или чего-либо, что нужно делать хорошей практике?

Допустим, у меня есть 100 полей. Затем я использую Моши или Гсона для десериализатора.

В конце концов даже за пределами соображений производительности качество кода. Если поля в действительности не будут иметь нулевое значение в ваших случаях использования, я бы не использовал типы с нулевым значением. Вы заставляете себя делать дополнительную работу (хотя Котлин делает это несколько легче), чтобы удовлетворить сценарий, который кажется, что вы говорите, не представляется возможным?

На другой стороне; если в этом сценарии не было поля в сериализованном виде, вы не можете сразу его поймать, потому что поле в классе имеет значение по умолчанию. Если вы уверены в данных, предоставляемых, хотя это не должно быть проблемой.

IMO, память и производительность не должны учитываться при выборе между этими двумя подходами. Это зависит от того, как вы хотите, чтобы класс вел себя так. Использовать значение по умолчанию (подход 2) или значение null (подход 1). Это имеет значение, когда вам нужно обращаться с логикой этого класса.