попробуйте установить изображение для зажима вместо повторения.
это даст результат черных рамок, но у вас не будет этой странной текстуры
Если Вы идете ТЕЛО принципы, каждый класс должен иметь одну причину изменить (т.е. сделать одну вещь). Поэтому конструктор обычно не читал бы файл, но у Вас будет отдельный класс, который создает объекты из файла.
Так мало, как необходим для завершения инициализации объекта.
, Если можно говорить о части (приблизительно 5 строк моя инструкция) конструктора как блок логики или определенного процесса, вероятно, лучше разделить его на отдельный метод для ясности и организационных целей.
, Но каждому его собственное.
Смотрите на это ТАК вопрос . Даже при том, что другой - для C++, понятия все еще очень похожи.
Как сказанный Knuth, "Преждевременная оптимизация является корнем всего зла".
, Насколько необходимо вставить consructor? Все Вы должны. Это - "нетерпеливый" подход. Когда - и только когда - производительность становится проблемой, делают Вы рассматриваете оптимизацию ее (к "ленивым" или "очень обеспокоенным" подходам).
Конструкторы должны быть просто достаточно длинными, но больше =)
, Если Вы определяете несколько перегруженных конструкторов, не копируйте код; вместо этого, консолидируйте функциональность в одного из них для улучшенной ясности и простоты обслуживания.
Конструкторы должны создать самый минимальный, универсальный экземпляр Вашего объекта. Как универсальный? Выберите тестовые сценарии, которые каждый экземпляр или объект, который наследовался классу, должны передать, чтобы быть допустимыми - даже если "допустимый" только средство перестало работать корректно (программно исключительная ситуация).
Википедия имеет хорошее описание:
http://en.wikipedia.org/wiki/Constructor_ (computer_science)
Доступный объект А является целью конструктора, допустимого не обязательно полезный - который может быть сделан в методе инициализации.
Моя обычная практика - то, что, если весь конструктор должен сделать, установлен некоторые поля на объекте, это может быть произвольно длинно. Если это становится слишком длинным, это означает, что дизайн класса повреждается так или иначе, или данные должны быть упакованы в некоторых более сложных структурах.
, Если с другой стороны, входным данным нужна некоторая более сложная обработка прежде, чем инициализировать поля класса, я склонен давать конструктору обработанные данные и перемещать обработку в статический метод фабрики.
Ваш класс, возможно, должен быть инициализирован к определенному состоянию, прежде чем любая полезная работа сможет быть сделана с ним.
Рассматривают это.
public class CustomerRecord
{
private Date dateOfBirth;
public CustomerRecord()
{
dateOfBirth = new Date();
}
public int getYearOfBirth()
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateOfBirth);
return calendar.get(Calendar.YEAR);
}
}
Теперь, если Вы не инициализируете dateOfBirth участника, varialble, любой последующий вызов getYearOfBirth (), приведет к NullPointerException.
Так инициализация абсолютного минимума, которая может включить
, чтобы гарантировать, что класс ведет себя правильно, когда это - участники, вызываются позже, все, что должно быть сделано.