Страницы

Поиск по вопросам

понедельник, 3 февраля 2020 г.

Стоит ли void метод отмечать как статический?

#java #ооп


Стоит ли в Java void методы помечать как static, если объекты в данном проекте используются
для хранения определенного состояния между вызовами метода, которое в свою очередь
определяется возвращаемым значением?
    


Ответы

Ответ 1



Вся статика, как вы наверняка знаете, относится к классу, а не к конкретному экземпляру. С моей точки зрения, методы могут/должны быть статичными, когда они не привязаны к состоянию (например, создание выдержки из текста не предусматривает сохранение каких-либо значений, только анализ входных данных и возврат новых), а свойства - когда они не относятся к состоянию, а нужны для хранения каких-либо относительно постоянных вещей, не относящихся к состоянию (например, логгера). Исходите из семантики, а не из требований сложившейся архитектуры.

Ответ 2



void или нет - вообще не имеет значения. Если хранимое состояние единственно - используйте для хранения объект-синглтон и вызывайте методы на нем. Использовать при этом статические методы, которые будут внутренне обращаться к синглтону теоретически возможно, но делать так не нужно. Если возможных носителей состояния много - создавайте экземпляры, храните состояние в каждом и на нем же вызывайте методы. Пример - класс Random. static нужно использовать только в случае, если состояния нет и экземпляр ни по каким иным причинам не нужен.

Комментариев нет:

Отправить комментарий