Я работаю над проектом Java по прошествии некоторого времени, используя C ++ и C #, и у меня есть сомнения относительно лучших практик для инициализации поля в конструкторах.Предположим, у меня есть простой класс Point.В C ++ моя инициализация поля в конструкторе будет выглядеть следующим образом:
class Point {
public:
// Default constructor
Point(double x, double y) : x(x), y(Y) { }
protected:
// Coordinates
double x, y;
};
В C # ...
class Point {
// Coordinates, with automatic properties
public double X { get; protected set; }
public double Y { get; protected set; }
// Default constructor
Point(double x, double y) {
X = x;
Y = y;
}
}
В Java ... лучшие практики будут предлагать определять методы получения / установки дляполя, которые должны быть доступны снаружи.Но желательно ли использовать их и внутри класса?Сомнение возникает из-за того, что Eclipse, кажется, устраивает преобразование каждого this.field = field
в коде класса в setField(field)
для полей, которые имеют методы получения / установки, даже если чтение / запись происходит изнутри кода класса (поэтому я бы не сталнужно использовать интерфейс класса).
Это в основном добавляет вызов функции для каждого доступа.Теперь, кроме случая, когда установка поля включает в себя какую-то другую операцию (например, проверки, обработку и т. Д.), Имеет ли это какой-то смысл?Здравый смысл подсказывает, что использование методов получения / установки аналогично использованию свойств C #, но здесь я специально задаю вопрос об автоматических свойствах C # , которые включают только базовый доступ, без какой-либо обработки.Таким образом, вопрос: есть ли польза в вызове методов получения / установки без дополнительной обработки изнутри кода класса?
СпасибоTunnuz