Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Спор по поводу типизации, традиций и всего подобного (http://www.flasher.ru/forum/showthread.php?t=139965)

orcpochta 18.05.2010 19:42

Цитата:

Сообщение от udaaff (Сообщение 909149)
А зачем это понимать? :)

когда придерживаешься каких-то правил улучшается читабельность кода, а тут еще и сразу однозначно видно, что есть обертка

iNils 18.05.2010 19:45

Цитата:

Сообщение от orcpochta (Сообщение 909151)
а тут еще и сразу однозначно видно, что есть обертка

А зачем это знать?

orcpochta 18.05.2010 19:48

Цитата:

Сообщение от iNils (Сообщение 909152)
А зачем это знать?

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

gldrawworld 18.05.2010 19:53

Цитата:

Сообщение от iNils (Сообщение 909135)
Оказывается сколько у нас генераторов хаоса.

я уже давно это понял …*причем очень самоуверенных …*

Цитата:

Сообщение от Psycho Tiger (Сообщение 909145)
Ну значит ваша точка зрения неправильная.

мда …*

iNils 18.05.2010 19:54

Для этого есть панель Outline.
Переменной для аксессора вообще может не быть.
Иногда в коде нужно использовать не аксессор, а саму переменную, и добавление или удаление аксессора приводит у лишним манипуляциям по поиске и замене.

orcpochta 18.05.2010 20:00

Цитата:

Сообщение от iNils (Сообщение 909155)
Для этого есть панель Outline.

она есть не везде))

Код AS3:

Переменной для аксессора вообще может не быть.

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


Код AS3:

Иногда в коде нужно использовать не аксессор, а саму переменную, и добавление или удаление аксессора приводит у лишним манипуляциям по поиске и замене.

это уже вопрос планирования

Psycho Tiger 18.05.2010 20:01

Удаф, ты вроде часов 5 назад спать собирался? )

iNils, т.е. твоё мнение совпадает с моим - писать каждый приват и протектед с "_"?

iNils 18.05.2010 20:24

Цитата:

она есть не везде))
Детские инструменты мы не трогаем.
Цитата:

зачем запутывать код? можно использовать методы вместо таких аксессоров
Зависимость _ от аксессеров это и есть запутывание. А написание setX (getX () + 5) только мешает.

Psycho Tiger, угу.

orcpochta 18.05.2010 20:31

Цитата:

Сообщение от iNils (Сообщение 909165)
Зависимость _ от аксессеров это и есть запутывание. А написание setX (getX () + 5) только мешает.

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

iNils 18.05.2010 20:35

Цитата:

Скажите это ребятам из Adobe - у них все (или большинство) свойства через аксессоры построены, было бы логично, разрабатывая классы, придерживаться тех же принципов, какие использовались при написании стандартных классов этого языка - это раз
А это тут каким боком, когда обсуждают не аксессоры, а связь _ с аксессорами?


Цитата:

Если вы там намекали про свойства базовых стандартных классов - типа x и y в спрайтах
Это был абстрактный пример.

orcpochta 18.05.2010 20:42

Цитата:

Сообщение от iNils (Сообщение 909172)
А это тут каким боком, когда обсуждают не аксессоры, а связь _ с аксессорами?

таким боком, что если следовать правилам инкапсуляции:
практически все переменные приватные => отпадает надобность их идентифицировать через "_" => эту метку можно перенаправить на идентификацию другой особенности свойства => вполне логично обозначить переменную, имеющую аксессор через _param, а сам аксессор через param - все наглядно и никакой путаницы)))

iNils 18.05.2010 20:53

Ваш вывод спотыкается еще в самом начале. Есть еще локальные переменные и аргументы метода.
Но самое плохое, что такое использование "_" противоречит общепринятому, что приводит к хаосу.

orcpochta 18.05.2010 21:08

Цитата:

Сообщение от iNils (Сообщение 909175)
Ваш вывод спотыкается еще в самом начале. Есть еще локальные переменные и аргументы метода.

а какие с ними проблемы? их сразу видно, ни разу не сталкивался с проблемой, что не могу сказать какая это переменная - слишком надумано

Цитата:

Но самое плохое, что такое использование "_" противоречит общепринятому, что приводит к хаосу.
Какому общепринятому? Возьмем столпов в своих областях:
1) AS3 - Колин Мук - не употребляет "_" для приватных переменных Где-то рассказывает, что для зааксессоренного свойства можно употреблять "_".
2) Java - Брюс Эккель (Thinking in Java) - не использует "_" для приватных переменных.
3) C++ - Герберт Шилдт (Полный справочник по С++ - лучшая книга на мой взгляд по С++) - не использует "_" для приватных свойств.
4) С++ - Бьерн Страуструп (!) (создатель С++) - не использует "_" для приватных свойств.

Так в чем же противоречие общепринятому и где хаос?

Psycho Tiger 18.05.2010 21:14

Цитата:

практически все переменные приватные
Это плохо. Помимо паблика существует ещё и протектед, который очень зря Вы упускаете из виду.
Цитата:

а какие с ними проблемы? их сразу видно, ни разу не сталкивался с проблемой, что не могу сказать какая это переменная - слишком надумано
Это счастье мелких проектов, которые пишут в одиночку. Когда Вы работаете в команде, или в конце проекта вы не помните реализацию половины классов - только на уровне "принимает то-то, даёт то-то" Ваши слова теряют истинность.

iNils 18.05.2010 22:02

Цитата:

а какие с ними проблемы? их сразу видно, ни разу не сталкивался с проблемой, что не могу сказать какая это переменная - слишком надумано
Тоже самое я могу сказать про необходимость _ для переменной с аксессором. Как вы там сказали "открыли вы свой класс через некоторое время, пробегаетесь взглядом по переменным и сразу видите, где, что есть"

Цитата:

Какому общепринятому? Возьмем столпов в своих областях:
У каждого языка свои особенности оформления (скажем у c# переменные начинаются с прописной), поэтому ссылка на яву или си не показатель. Остается представитель AS3 Колин Мук, может он и не использует _ (я как то не слежу за этим). Но задача Мука рассказать про язык и его применение, а не про варианты оформления кода. Мук может вообще относится к противникам такого использования, и тд и тп.

gloomyBrain 18.05.2010 22:43

Цитата:

Когда Вы работаете в команде, или в конце проекта вы не помните реализацию половины классов - только на уровне "принимает то-то, даёт то-то" Ваши слова теряют истинность.
Про класс, который писал не я, мне неохота что-то знать, кроме того что он принимает в конструктор и что делает своими методами. Как он это делает - мне все равно. По крайней мере пока из него ошибки не падают и ведет он себя адекватно.
Я уверен, что многие используют сторонние библиотеки (например, Tween*что-то-там* или *что-то-там*3D), но мало кто сильно ковырял их исходный код, а уж тем более правил или тестировал на читабельность.
Если говорить об инкапсуляции - это именно она. Если говорить о стиле написания кода в команде - главное чтобы он был одинаков. А to "_" or not to "_" - это частности

Zebestov 19.05.2010 00:00

ответ башорга на всю эту чепуху про типизацию:

Anarhia WD: а мы тут готовим... )
Yashko: еду?
Anarhia WD: не знаю, посмотрим )

эти типы тоже не типизируют :D

Котяра 19.05.2010 12:23

Цитата:

Сообщение от iNils (Сообщение 909182)
..поэтому ссылка на яву или си не показатель. Остается представитель AS3 Колин Мук, может он и не использует _ (я как то не слежу за этим). Но задача Мука рассказать про язык и его применение, а не про варианты оформления кода. Мук может вообще относится к противникам такого использования, и тд и тп.

Мук часто пишет в Ява синтаксисе (он не только флэшер), например встречал именование функций с большой буквы, сеттеры/геттеры часто описывает как setX()/getX,
интерфейсы обзывает как SmthDoable а не как ISmth - т.е. не особо соблюдает конвенции..
Лично я ставлю "_" только перед переменными имеющими геттер/сеттер - причём ставлю не сам, а так генерит флэшдевелоп - чаще всего они приватные.
Просто приватные переменные - не подчёркиваю, т.к. может возникнуть ситуация, когда понадобится обернуть в геттеры/сеттеры.
А по поводу визуального разделения local/public/private/protected - можно наверное даже сделать плагинчик, который задаст им различные стили в CSS - только не вижу особого смысла в этом.

iNils 19.05.2010 12:52

Цитата:

Лично я ставлю "_" только перед переменными имеющими геттер/сеттер - причём ставлю не сам, а так генерит флэшдевелоп - чаще всего они приватные.
Просто приватные переменные - не подчёркиваю, т.к. может возникнуть ситуация, когда понадобится обернуть в геттеры/сеттеры.
Напомнило
Цитата:

"Шла я как-то на прием к гинекологу,увидела 400 долларов.Поднимать не стала-примета плохая.Потеряешь больше,чем найдешь.И вот результат:у меня лапочка-дочка.Наша радость.Ей уже 3 годика:)"
Причинно-следственные связи отсутствуют.

Котяра 19.05.2010 14:22

Цитата:

Сообщение от iNils (Сообщение 909250)
Напомнило
Причинно-следственные связи отсутствуют.

Я хотел сказать что геттер/сеттер - тоже могут быть приватными (например, для проверки валидности данных в сеттерах) - поэтому и разделяю через "_" только холдеры данных геттеров.
Причём обращения к _someVar - в коде класса стараюсь делать только в сеттерах/геттерах someVar (если другое не предусмотренно логикой класса)

Другого смысла в "_" не вижу. Если приватная переменная используется вне класса- она недоступна в автокомплите и подсвечивается ошибка прекомпиляции или при компиляции.
Внутри класса - всё равно: приват/не приват, а вот отделить холдеры от сеттеров - смысл есть.

Добавлено через 12 минут
Цитата:

Сообщение от gloomyBrain (Сообщение 909187)
Я уверен, что многие используют сторонние библиотеки (например, Tween*что-то-там* или *что-то-там*3D), но мало кто сильно ковырял их исходный код, а уж тем более правил или тестировал на читабельность.

Я, наверное, из меньшинства) Всегда читаю код, хотя бы для проверки на доверие.. т.е. можно ли доверять этому фрэймворку.. Очень бесит box2D )

Psycho Tiger 19.05.2010 14:37

Цитата:

Сообщение от gloomyBrain (Сообщение 909187)
Про класс, который писал не я, мне неохота что-то знать, кроме того что он принимает в конструктор и что делает своими методами. Как он это делает - мне все равно. По крайней мере пока из него ошибки не падают и ведет он себя адекватно.
Я уверен, что многие используют сторонние библиотеки (например, Tween*что-то-там* или *что-то-там*3D), но мало кто сильно ковырял их исходный код, а уж тем более правил или тестировал на читабельность.
Если говорить об инкапсуляции - это именно она. Если говорить о стиле написания кода в команде - главное чтобы он был одинаков. А to "_" or not to "_" - это частности

Я вроде именно это и сказал. Про "_" речь не шла, речь шла о
Цитата:

что не могу сказать какая это переменная - слишком надумано
есть неверно.

iNils 19.05.2010 14:58

Цитата:

а вот отделить холдеры от сеттеров - смысл есть.
Ну так объясните его мне.

orcpochta 19.05.2010 15:08

Цитата:

Сообщение от iNils (Сообщение 909311)
Ну так объясните его мне.

просьба из серии "объясните мне смысл ставить '_' перед приватными свойствами"

я кстати, вразумительных доводов в пользу "_" перед приватными свойствами так и не услышал))

iNils 19.05.2010 16:11

Да нет. Это из серии, почему нужно писать "мозг", когда и "моск" тоже сойдет. Потому, что "мозг" было раньше.
Конечно вам никто не запрещает и запретить не может писать как вам хочется, но если есть стандарты, пускай и негласные, то стоит их придерживаться в публичных вещах.

Добавлено через 1 минуту
Тему я закрываю. Спорить о типизации смысла не вижу. Ответ очевиден.


Часовой пояс GMT +4, время: 10:17.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.