Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Голосуем за приватные свойства в кофескрипте (https://javascript.ru/forum/offtopic/60918-golosuem-za-privatnye-svojjstva-v-kofeskripte.html)

Mаxmaxmаximus 30.01.2016 18:59

Erolast, пожалуйста, приведи какой нибудь аргумент ад рем
http://ru.wikipedia.org/wiki/Ad_hominem


Приватное свойство не будет доступно из вне инстанса так как у свойств будет использоваться префикс, который человек обязан будет не использовать из вне. этот префкс либо пробел либо _, таким образом достигается инкапсуляция внутренних свойств внутри класса. второе: свойство не будет доступно классам наследникам так как будет использоваться уникальный для класса префикс в стиле Math.random(), таким образом будут 2 префикса, один для защиты от доступа из вне обьекта _ второй для защиты доступа из дочерних классов

пример такого свойства this['_EventEmitter_5344355_events'] = []

первый префикс _ второй префикс "EventEmitter_5344355_"


таким образом достигается инкапсуляция.


что до протектед свойств для них достаточно просто префикс защищающий от доступа извне инстанса добавлять, то есть просто _


суть: по скольку все эти свойства физически часть this то не будет ни утечек памяти, от них легко будет наследоваться и оверрайдить, будет сохраняться контекст и.т.п. так же для пущей красоты можно устанавливать эти свойства энумерабле false чтобы они еще и не итерировались извне


какие у тебя контраргументы? я внетерпении. правда


вообще есть еще способ с WeekMap, но его не везде эмулируешь и мы не получаем вообще ни какого плюса. так как в кофескрипте и так использовались служебные переменные а тут просто будут использоваться служебные свойства, и я не вижу ни единого минуса этого испоьлзования. кто нить знает хотя бы ОДНО слабое место моей идеи? ХОТЯ БЫ ОДИН недостаток?

Erolast 31.01.2016 07:51

Цитата:

пожалуйста
Окей.

Во-первых, ты не прав в том, что тебе ответил создатель кофескрипта. Создатель - Jeremy Ashkenas, vendethiel - просто контрибьютор с парой десятков коммитов

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

Цитата:

Приватное свойство не будет доступно из вне инстанса так как у свойств будет использоваться префикс, который человек обязан будет не использовать из вне. этот префкс либо пробел либо _, таким образом достигается инкапсуляция внутренних свойств внутри класса. второе: свойство не будет доступно классам наследникам так как будет использоваться уникальный для класса префикс в стиле Math.random(), таким образом будут 2 префикса, один для защиты от доступа из вне обьекта _ второй для защиты доступа из дочерних классов
Цитата:

устанавливать эти свойства энумерабле false чтобы они еще и не итерировались извне
В таком виде, как по мне, вполне пойдет.

Только два момента:
1) на гитхабе ты про рандомную прибавку к имени свойства ничего не говорил;
2) зачем вообще трахаться со всеми этими префиксами/суффиксами, когда можно просто заюзать символы из ES6? Заодно гарантировано исключается возможность коллизии.
class EventEmitter
  eventListeners = Symbol()
 
  constructor: ->
    @[eventListeners] = []

  getEventListeners: -> @[eventListeners]
 
eventEmitter = new EventEmitter()
console.log eventEmitter; #empty object
console.log eventEmitter.getEventListeners(); #array

Mаxmaxmаximus 31.01.2016 11:55

Цитата:

Сообщение от Erolast
на гитхабе ты про рандомную прибавку к имени свойства ничего не говорил;

1) говорил вот скриншот с доказательствами

2) зачем вообще трахаться со всеми этими префиксами/суффиксами, когда можно просто заюзать символы из ES6? Заодно гарантировано исключается возможность коллизии.

я думал и про символы и про викмап, но они же типа кококо за старые браузеры, в старых нет викмапа и символов, но что если полифил на символы?


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

for i in [1,2,3]
private[i+'trololo'] = 11

как тогда обратиться к private.i2 ?? где хранить его символ и когда его создавать? и как узнать какую строку вернет выражение в аксессоре [] ?

Цитата:

Сообщение от Erolast
Во-первых, ты не прав в том, что тебе ответил создатель кофескрипта.

у кофескрипта не один создатель а все кто контребьютеры. следовательно я прав и верно употребил слово. я так его и задумывал ты просто недопонял. в данном случае "создатель" не указывает на кого то ИЗ НИХ. в данном случае создатель указывает на выборку из всех людей человечества, людей котоыре разрабатывают кофи. ты просто недопонял и это снова моя правота. это чувак с которым я часто списываюсь и он если бы дал свое добро на эту идею то она была бы реализована и вписана в билд 100%. и не важно сколько он лично коммитов сделан, с автором кофескрипта он трется.

Цитата:

Сообщение от Erolast
Во-вторых, ты не прав в том, что считаешь, что они вообще тебе чем-то обязаны.

Не, я так не считаю, следовательно я снова прав. во вторых я дал им идею, бесплатно помог им УЛУЧШИТЬ ИХ ПРОДУКТ, и я охуеваю от тупости когда они без какой либо причины отказываются. в конце я им так и написал что мы заебались вас ждать и я пилю свой форк с блекджеком, es7, генераторами итераторами и шлюхами.

Mаxmaxmаximus 01.02.2016 15:58

https://github.com/jashkenas/coffeescript/issues/4195

Mаxmaxmаximus 01.02.2016 16:13

ну посмотрите, этот мудак опять ничего не смог противопоставить и признал что мои аргументы верны но просто закрыл тикет https://github.com/jashkenas/coffeescript/issues/4195

следовательно я перехватываю управление кофескриптом в свои руки раз им рулят такие неадекватные мудаки. ну а хули делать) опенсорс.

Mаxmaxmаximus 01.02.2016 20:21

Когда кофескрипт пилят мудаки


Mаxmaxmаximus 01.02.2016 20:22


Lemme 01.02.2016 21:50

Mаxmaxmаximus, google translate тебя затралировал. =)

Decode 01.02.2016 22:53

:lol: :lol: :lol:

Mаxmaxmаximus 02.02.2016 12:23

Цитата:

Сообщение от Lemme
google translate тебя затралировал. =)

Нет) так я через него и писал, все одобрено. Я типа под хача кошу


Часовой пояс GMT +3, время: 02:43.