Допустим создал локальную переменную - var prop: Type = 5;
Что нужно нажать чтобы сгенерировался сеттер и геттер? И если Вы знаете горячие клавиши для генерации ещё чего-либо, то расскажите о них, а то я вообще ни одной не знаю.
p.s. в последующем подобные вопросы (аля подскажите хоткеи) буду удалять, так как они подпадают в категорию "ответ легко ищется поисковиком". В конце концов есть мануал.
vasIvas: ну методы в духе getSomething/setSomething, так же как и геттеры/сеттеры это полный эквивалент публичных свойств. То есть оно никак не способствует соблюдению принципа открытости/закрытости и нарушает инкапсуляцию.
В целом же это нормально, это распространенная практика, это просто в конце концов, для некоторых ситуаций это нужно, но лучше стараться не использовать это добро.
Сергей Протько: тут как посмотреть. Многие утверждают, что на публичные свойства аксессоры не нужны. Типа зачем на свойство, которое предполагается изменять ещё и аксессоры. Мне помнится Вы говорили что много лет писали на as3, так вот я на его примере и объясню.
В as3 многие так считают только из-за того, что они в раза три-четыре медленнее чем обычное свойство класса. И наверное в каком-то подобном языке программисты и начали рассуждать на тему "когда использовать, а когда нет". Потому-что других причин я просто не вижу в отказе от них. Ведь аксессоры не просто так же придуманы, по канонам ооп они должны быть везде и не только для инкапсуляции или помещения туда какой-то логите, типа сделать какую-то проверку на можно или нет сейчас менять.
Они ведь ещё и для расширяемости предназначены. Ведь Вы не пишите -
constructor(){
this.prop = new Class();
}
Вы пишите -
constructor(class: Class){
this.prop = class;
}
А для чего так, для какой-то мефической поддержки в будущем. И ведь никто не скажет что второй вариант плохо и обязывает заводить ещё одну сущность, которая будет инициализировать этот класс. А точку остановы ведь тоже на свойстве не поставишь.
По этому в js говорить что сеттеры-геттеры плохо, это просто неправильно. Вот методы setMethod и getMethod, это да, уже аморально.
vasIvas: я много лет назад писал на as3 но мало, я считаю что аксесоры, публичные свойства и т.д. это все нарушение инкапсуляции и принципа открытости закрытости. Я их не использую.