PDA

Просмотр полной версии : Спор по поводу типизации, традиций и всего подобного


wvxvw
16.05.2010, 14:03
Жуть какая... :) Прям 1C :) Ну, кроме всего прочего - return - это не функция, не нужны там скобки, а вот функциям нужны возвращаемые типы.

YarikMudry
16.05.2010, 16:24
Ну что касается ретурна, привык я так. А функциям не обязательно ставить подпись возвращаемого типа. Это кому как больше нравится. В конкретно этой функции и так понятно что возвращается строка. Вида "Каталог(Каталог()Каталог(Каталог()))" В общем древовидная структура имеющая корневым каталогом экранныхобъект заданный в параметрах. http://vkontakte.ru/app1865199_46242160
Вот собственно ещё сырой пример работающий только со спрайтами. Вначале создаётся 100 вложенных случайным образом спрайтов, затем верхний из них отдаётся на растерзание вышеуказанной функции и из этого безобразия составляется деревце. Когда разберусь с типами можно будет составлять иерархию экранных объектов для реальных приложений... Про выход за пределы экрана не говорите, потом поставлю скрол рэкт и 2 скрол бара... Сейчас не до этого.

Похоже мне нужны просто getQualifiedClassName () и getQualifiedSuperclassName(). Сейчас буду эксперементировать...

Psycho Tiger
16.05.2010, 16:31
А функциям не обязательно ставить подпись возвращаемого типа. Это кому как больше нравится.
А ещё можно трусы на голове носить. Нормальные компиляторы это не скомпилируют.

YarikMudry
16.05.2010, 16:50
Сколько криков слышал по поводу того как ПРАВИЛЬНО давать идентификаторы, как ПРАВИЛЬНО писать то-то и то-то. Компилятор компилирует это необходимо и достаточно, остальное вопрос стиля и привычки. Кто-то делает отступы, кто-то нет, кто-то пишет "{" в той же строчке что и объявление функции, кто-то на следующей. Обсуждать такие мелочи это обычный холивар)))

HotIceCream
16.05.2010, 17:09
Сколько криков слышал по поводу того как ПРАВИЛЬНО давать идентификаторы, как ПРАВИЛЬНО писать то-то и то-то. Компилятор компилирует это необходимо и достаточно, остальное вопрос стиля и привычки. Кто-то делает отступы, кто-то нет, кто-то пишет "{" в той же строчке что и объявление функции, кто-то на следующей. Обсуждать такие мелочи это обычный холивар)))

ты не прав. в as можно указывать тип переменных :* при этом если нужно он станет к примеру Number, компилироваться будет нормально, но при этом скорость работы будет намного больше, если прописать явно тип. Тоже самое и с функциями. И тут стиль и привычка совсем не причем.

ps в flash develop без указания типа функции ты не скомпилируешь.

YarikMudry
16.05.2010, 17:21
Беру свои слова обратно. Но частично. По поводу быстродействия согласен, но ИМХО, это уже стоит делать когда всё готово, когда нужно просто вылизать код. Туда же точную расстановку идентификаторов доступа и т.п. Можно конечно сразу, а можно как-нибудь в другой раз. В cs3 всё нормально компилится, потому и говорю что без разницы. Тем более когда я код без особых раздумий создаю, сейчас у меня эта функция возвращает стринг, потом что-то ещё, потом может вообще решу что не нужно ничего возвращать... И если я буду расставлять каждой функции тип возвращаемого значения а потом забывать про него, то это ошибка и потерянное время ибо комп очень медленно у меня компилирует.

КорДум
16.05.2010, 17:32
Да правильно. Зачем тогда вообще все функции выносить отдельно. Нужно все лепить в одно место! Все в одном классе, прям в конструкторе. Зачем проводить кастомизацию? Без типизации, вообще - зачем? - компилятор сам догадается!
А как же традиции? Встретил я как-то очень хорошую фразу, что плохие программисты выходят чаще всего из тех, кто не чтит традиции.

HotIceCream
16.05.2010, 17:44
YarikMudry Вместо того что бы "вылизывать" можно сначала все продумать - в том числе и то, что будет возвращать функция, а уже потом приступать к работе. Это куда более продуктивно, чем если " код без особых раздумий создавать" (вы же заботитесь о "потерянном времени")

YarikMudry
16.05.2010, 18:00
Да правильно. Зачем тогда вообще все функции выносить отдельно. Нужно все лепить в одно место! Все в одном классе, прям в конструкторе. Зачем проводить кастомизацию? Без типизации, вообще - зачем? - компилятор сам догадается!
А как же традиции? Встретил я как-то очень хорошую фразу, что плохие программисты выходят чаще всего из тех, кто не чтит традиции.

Про лепить в одно место речи не было. Традиции как таковые не нужны особенно глупейшая из них первую программу на каком либо языке писать с функциональностью вывода на экран строки "Hello world".
Традиция это бездумное необоснованное повторение чего либо. Ежели есть смысл делать так, а не иначе, то это уже целесообразность)))
Во время проектирования как я уже говорил необходимо и достаточно чтобы компилятор не ругался и работал как надо. Остальное не так уж и важно. Это уже потом можно вылизывать код расставляя доступ к функциям, классам, раскидывать по пакетам, проводить типизацию...
Всё оно желательно, но не обязательно по крайней мере в черновом варианте. Зачастую как раз наоборот мешает, отвлекает, является источником лишних ошибок...

Psycho Tiger
16.05.2010, 18:13
Пристрелите меня.

wvxvw
16.05.2010, 18:21
Немного не красиво скопировалось, но лучше не будет.
А по сути, чем пререкаться - задумались бы. Кроме того, ВКонтакте - редкостное *****, на него не то, что ссылаться, просто вспоминать без улыбки нельзя.

HotIceCream
16.05.2010, 18:26
YarikMudry все же, какой размер максимальный был у проекта который ты делал?

VVall
16.05.2010, 18:34
Традиции как таковые не нужны особенно глупейшая из них первую программу на каком либо языке писать с функциональностью вывода на экран строки "Hello world".
Вещь первой необходимости при отладке любой программы - возможность вывода отладочной информации из программы куда-либо. Особенно это нужно при освоении новой платформы. Также для большинства программ вывод на экран необходим в принципе, для взаимодействия с пользователем. Традиции тут не при делах, это рациональный первый шаг. Он даже автоматизирован в некоторых инструментах, в том же VC.

КорДум
16.05.2010, 18:40
Да правда, зачем сразу по-нормальному писать. Давайте все сразу в кадрах. Черновой же вариант.

Psycho Tiger
16.05.2010, 18:42
ВКонтакте - редкостное *****
Подпишусь под каждым словом. Речь про API, естественно. Как соц. сеть меня вполне устраивает.

gldrawworld
16.05.2010, 18:42
мда ну и программисты пошли …*

wvxvw
16.05.2010, 19:00
По поводу типизации, вот, представьте, стоите вы на футбольном поле у ворот противника, и к вам круглое летит... вы его "подправили" головой в ворота, а круглое оказалось пудовой чугуниевой гирей... А все порому, что тип летящего круглого объекта заранее не был известен.
Что до традиций, ну так вы выработали свою традицию, но только она ни на чем не основывалась, более того, как оказалось была ошибочной. От того, что вы что-то неправильно сделаете много раз, правильнее оно не станет... А традиции вообще - ну это как грабли, кто-то наступил, поставил знак - "тут не ходить", ну, нужно конечно понимать почему тут не ходить, но даже если слепо поверить написаному, на первых порах хуже не будет.

gldrawworld
16.05.2010, 22:19
По поводу типизации, вот, представьте, стоите вы на футбольном поле у ворот противника, и к вам круглое летит... вы его "подправили" головой в ворота, а круглое оказалось пудовой чугуниевой гирей... А все порому, что тип летящего круглого объекта заранее не был известен.
Что до традиций, ну так вы выработали свою традицию, но только она ни на чем не основывалась, более того, как оказалось была ошибочной. От того, что вы что-то неправильно сделаете много раз, правильнее оно не станет... А традиции вообще - ну это как грабли, кто-то наступил, поставил знак - "тут не ходить", ну, нужно конечно понимать почему тут не ходить, но даже если слепо поверить написаному, на первых порах хуже не будет.

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

NoCD
17.05.2010, 06:58
Типизация = Объяснение новичкам не писать в клипах. Аналогично. Если код компилируется и делает свое дело, то о типизации задумываются в последнюю очередь. Если же проект ресурсоемок в плане быстродействия, то конечно, нужно обязательно делать типизацию. Многим лень ее делать. Если планируется устраиваться в какую нибудь контору, то приходится следовать традициям.
К то му же лояльность компилятора к типизации, помогает быстрее понять язык программирования, а все остальное зависит от самого программиста.

Lou
17.05.2010, 12:15
Зачастую как раз наоборот мешает, отвлекает, является источником лишних ошибок...
Типизация помогает избежать(!) скрытых ошибок. И здорово, наверное, копаться в своем коде через пару месяцев, пытаясь вспомнить, что же все эти * возвращают на самом деле...

CrazyFlasher
17.05.2010, 12:20
2Oleg: а мне за слово "г*вно" + подарили :(

proxiServer
17.05.2010, 12:42
Типизация - нужна.
Кодстайл - нужен.
Традиции - тоже не просто так.

Вменяемых аргументов против этого не вижу в этой теме.

wvxvw
17.05.2010, 13:10
CrazyFlasher
Тебе за орфографию и флейм :)

Molecula
17.05.2010, 16:51
У меня срач в шкафу.

Furinax
17.05.2010, 17:34
Так можно думать если только работаешь сам на себя и делаешь что-то несерьезное.
Если же работаешь на кого-то с условием поддержки и (что чаще) добавления новых функций проекта, который ты выполнил, то соблюдение традиций и умение писать код, в котором хотя бы ты сам можешь разобраться - единственный путь к тому, чтобы потом просто не плюнуть на то что сделал и начать новое. А если и в новом плюнуть на типизацию и прочее, то вы наступите на те же грабли.

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

Zebestov
17.05.2010, 19:20
особенно покорило:
Если код компилируется и делает свое дело, то о типизации задумываются в последнюю очередь.
слово то какое придумали: "типизация", ага? именно так и представляется себе такой неподъемный труд, эстимация конкретно этой составляющей проекта: "на типизацию уйдет 9 часов не иначе".

Psycho Tiger
17.05.2010, 19:24
Типизация = Объяснение новичкам не писать в клипах. Аналогично. Если код компилируется и делает свое дело, то о типизации задумываются в последнюю очередь. Если же проект ресурсоемок в плане быстродействия, то конечно, нужно обязательно делать типизацию. Многим лень ее делать. Если планируется устраиваться в какую нибудь контору, то приходится следовать традициям.
К то му же лояльность компилятора к типизации, помогает быстрее понять язык программирования, а все остальное зависит от самого программиста.
Да ну. Обьяснение не писать в клипах, как и объяснение не писать в кадрах - это как объяснять доисторическому человеку как долбить перфоратором. Ведь молотком как то привычнее, да и работает. Это не традиции, это здравый смысл. Лояльность к типизации, это кстати скорее помощь новичкам, у которых код не выходит за 20 строк. В остальном это гадость.

2Crazy: а мне за "к*кашулечку"

Zebestov
17.05.2010, 20:52
Crazy, Psycho Tiger =) я за "м*ск" отмечен

Psycho Tiger
17.05.2010, 20:53
Хахах) iNils с отпуска вышел работящий, теперь на всех плюсов хватит =)

Furinax
17.05.2010, 21:48
Хахах) iNils с отпуска вышел работящий, теперь на всех плюсов хватит =)

хех хе! тебе прям вчера влепили :) Как не стыдно? Взрослый человек ведь, а до сих пор ловишь плюсы на форуме :taunt: Ай яй яй!

Psycho Tiger
17.05.2010, 22:01
хех хе! тебе прям вчера влепили :) Как не стыдно? Взрослый человек ведь, а до сих пор ловишь плюсы на форуме :taunt: Ай яй яй!
Может мне выложить пару твоих классов здесь, взрослый дядя? :D

iNils, как отдохнул? =)

MrPoma
17.05.2010, 22:03
Может мне выложить пару твоих классов здесь, взрослый дядя? :D
Давай. Все равно тут только срач.

iNils
17.05.2010, 22:04
Отпуск у меня летом.

Psycho Tiger
17.05.2010, 22:31
Хм, а мне поступала информация что отгул брал недельку =) От форума отдыхал?

iNils
17.05.2010, 22:39
А я никуда от форума и не уходил.

Zebestov
17.05.2010, 23:08
0о ну я представляю что будет после отпуска =)

lowka
17.05.2010, 23:22
Определение типов возвращаемых значений(и не только их, но и полей, констант и проч.) вполне может быть возложено на компилятор. В action script сие не доступно (к сожалению).

def func(a:int, b:int) = a + " " + b

func: (int,int) => string

val c = new MyObject

c: [MyObject]

И ничего плохо от этого никому не будет.

gloomyBrain
17.05.2010, 23:33
Так же скорбят об этом все JAVA- и Си-программисты. Только непонятно - где польза от того, что не видно с первого взгляда какой у переменной тип? Компилятору, допустим, видно =) А мне-то как?
Если честно, для меня строгая типизация послужила отличным способом начать писать более-менее внятный код
Как вспомню AS1/2 бррр...

Furinax
17.05.2010, 23:52
[QUOTE=Psycho Tiger;908826]Может мне выложить пару твоих классов здесь, взрослый дядя? :D/QUOTE]

Если б я хотел чтоб меня здесь забанили, двно бы сам выложил :D
Зато плюс отбил у тебя охту плодить единорогов :mosking:

Кстати хорошая идея: давайте банить за плохо оформленный код?

gldrawworld
18.05.2010, 00:09
Кстати хорошая идея: давайте банить за плохо оформленный код?

вам мало того что etc заколит вас вилами за такой код ?

Furinax
18.05.2010, 00:16
вам мало того что etc заколит вас вилами за такой код ?

вилы - слабое оружие, тут нужен АК-47 либо сразу базука :cool:

gldrawworld
18.05.2010, 00:56
смотря какие вилы и в чьих руках ))))) ведь можно и … )))

NoCD
18.05.2010, 08:01
особенно покорило:

слово то какое придумали: "типизация", ага? именно так и представляется себе такой неподъемный труд, эстимация конкретно этой составляющей проекта: "на типизацию уйдет 9 часов не иначе".

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

Для новичка в программировании я думаю первой задачей будет написать рабочий код. А вторым делом подводить к каким то традициям.

Psycho Tiger
18.05.2010, 08:15
Зато плюс отбил у тебя охту плодить единорогов
Единарог тут непричём =)


Хахахахах, щас NoCD плюс получит за нами в кучу :D:D:D

NoCD
18.05.2010, 08:50
Хахахахах, щас NoCD плюс получит за нами в кучу :D:D:D

Я никого не оскор бля л!

CrazyFlasher
18.05.2010, 11:38
2 NoCD: http://www.flasher.ru/forum/showpost.php?p=908788&postcount=28

Zebestov
18.05.2010, 12:47
Хха! NoCD =) добро пожаловать =)

А что до твоего романа про мои насмешки над излишней серьезностью вокруг "типизации" как таковой, так ты просто не уловил фокус. Не спорю, отчасти я не так изложил =) но теперь тебе все должно быть понятно.

Еще раз выскажу свое мнение: типизация — это не какой-то головоломный процесс, подвластный лишь гуру программирования, отнимающий человеко/часы и путающий мысли. Это банальная повседневная составляющая программирования любого процесса.

P.S.
Еще немного и мы начнем женам рекомендовать что-то типа: да не заморачивайся ты что готовить. первое. второе. кроши все подряд в каструлю и жми "огонь" поярче — съедим! главное чтобы твое произведение типа :* было из пакета кухня.еда =)

wvxvw
18.05.2010, 14:23
NoCD
А почему написать код без типизации должно быть проще? Ну, скажем, если новичек до этого писал на яваскрипте, то может быть, а если на яве или сишарпе, то у него от нетипизированого кода инфаркт может быть :)

NoCD
18.05.2010, 14:39
Я понял твою мысль еще в первом посте и полностью с ней согласен. Но могу привести аналогичный противоположный пример:

Когда студент открывает холодильник и смотрит, что есть в нем съедобного. Ставит сковородку и кидает туда все, что может вместе поджариться и употребиться в конечном варианте. А супы и другие гарниры, это ближе к кулинарии и гуру ИМХО.

cauchy
18.05.2010, 14:40
Читаю тему и вообще не понимаю, ума не приложу, в чём проблема написать, что возвращает функция.
Ну если потом вдруг она станет возвращать что-то другое (у меня такое что-то не часто бывает), в чём проблема - правиться за 2 секунды.
А учитывая факт, что типизированный код работает быстрее, вопросов помоему вообще никаких не должно оставаться. ИМХО.

gldrawworld
18.05.2010, 14:51
Читаю тему и вообще не понимаю, ума не приложу, в чём проблема написать, что возвращает функция.
Ну если потом вдруг она станет возвращать что-то другое (у меня такое что-то не часто бывает), в чём проблема - правиться за 2 секунды.
А учитывая факт, что типизированный код работает быстрее, вопросов помоему вообще никаких не должно оставаться. ИМХО.

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

NoCD
18.05.2010, 14:59
NoCD
А почему написать код без типизации должно быть проще? Ну, скажем, если новичек до этого писал на яваскрипте, то может быть, а если на яве или сишарпе, то у него от нетипизированого кода инфаркт может быть :)

+100500. Полностью согласен. Дело привычки и дисциплины.

Взять к примеру этот сайт, да вообще любой. Часто наблюдается такой момент, когда только что зарегестрированный пользователь. Интересуется как оживить выдранный код. Или как в клипе прописать то или иное событие. На php форумах такая же ситуация. Там вообще этим не пахнет. Особенно когда тема называется "ПОМОГИТЕ,СРОЧНО, ЗАВТРА СДАВАТЬ!" Главное выполнить заказ. Как гласит пословица: "Если работает, не трогай". К тому же если сам язык программирования от программиста не требует этой строгости, то это оседает в подсознании. Тоже самое, что не запрещать ребенку смотреть диснеевские мульты, шреков, боевики, порнуху, ужасы.

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

gldrawworld
18.05.2010, 15:12
+100500. Полностью согласен. Дело привычки и дисциплины.

Взять к примеру этот сайт, да вообще любой. Часто наблюдается такой момент, когда только что зарегестрированный пользователь. Интересуется как оживить выдранный код. Или как в клипе прописать то или иное событие. На php форумах такая же ситуация. Там вообще этим не пахнет. Особенно когда тема называется "ПОМОГИТЕ,СРОЧНО, ЗАВТРА СДАВАТЬ!" Главное выполнить заказ. Как гласит пословица: "Если работает, не трогай". К тому же если сам язык программирования от программиста не требует этой строгости, то это оседает в подсознании. Тоже самое, что не запрещать ребенку смотреть диснеевские мульты, шреков, боевики, порнуху, ужасы.

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

уля ля ля ) 100500 прозвучало ^^, сейчас прийдет тигер и отсчитает вас за лексикон :taunt:

Psycho Tiger
18.05.2010, 15:33
Когда студент открывает холодильник и смотрит, что есть в нем съедобного. Ставит сковородку и кидает туда все, что может вместе поджариться и употребиться в конечном варианте. А супы и другие гарниры, это ближе к кулинарии и гуру ИМХО.

Не-а. Всё, что может поджариться - это IFryable, и съедобное - это IEatable. Врятли тот кто даже типизацию не использует будет этим баловаться =) Пример плох.

gldrawworld, лень )

wvxvw
18.05.2010, 15:49
NoCD
Вот поэтому хороших ПХП или яваскрипт програмистов почти что и нет в природе. Потому что в ПХП мануале люди постят код с ошибками, на форумах традиционно копипейст всякой дряни, которую сто лет назад непонятно зачем и почему написали.
Кроме человека, который получит ответ, тему на форуме прочитает еще сотня, которые догадались, как поиском пользоваться. И вот за что им свинью подкладывать? С другой стороны, посмотрите на стак оверфлоу (сайт, не ошибку :) ). Как правило нормальные вопросы и нормальные ответы. А человека типа please send me solution asap!!! я думаю, на таком форуме вообще забанят ;)

gldrawworld
18.05.2010, 15:51
please send me solution asap!!! я думаю, на таком форуме вообще забанят ;)

я бы если честно и на этом форуме банил …*на гд просто игнорят и в флейм сплавляют, где все дружно стебутся пока тему не удаляют

HotIceCream
18.05.2010, 16:34
Сегодня задумался об одной традиции. В Сборнике рецептов AS упоминалось о том, что глобальные переменные нужно начинать с нижнего подчеркивания _x ... При этом не вижу в этом логики: Глобальные переменные используются чаще, чем локальные, следовательно логичнее было бы локальные начинать с нижнего подчеркивания. Плюс к открытым методам и свойствам удобнее обращаться естественно без _ ... хотя они то скорее всего глобальные.

ps На эту мысль меня навел урок сегодняшней информатики - прога на с++, и препод писал именно локальные переменные в функции с нижним подчеркиванием.

Zebestov
18.05.2010, 16:42
0о-оп-па =) я шота тоже всю дорогу с подчеркивания пишу именно приватные переменные... это чиво это я — неформал что ли?

HotIceCream
18.05.2010, 16:49
ну приватные и открытые это не то что я имел ввиду. Хотя я мог чтото напутать)

Щас найти в книге не могу тот абзац, но все глабальные переменные у них с _ ... а локальные без. Про приватные не знаю.

Zebestov
18.05.2010, 16:51
ясно. глобальных же у нас вроде нет как таковых. а в классе все приватное с подчеркиванием, все публичное — без. особенно удобно (если не первопричина) когда прописываешь геттер/сеттер — практически одноименные методы, просто убрать подчеркивание.

HotIceCream
18.05.2010, 16:55
к примеру...

private x:int;
public y:int;

public function f(_x:int; _y:int):void
{
x=_x;
y=_y;
}

или

private _x:int;
public _y:int;

public function f(x:int; y:int):void
{
_x=x;
_y=y;
}

gloomyBrain
18.05.2010, 16:56
Я как-то так пишу:

private var _sync:Boolean; // если есть геттер/сеттер
private var systemTime:Number; // просто приватная переменная
public var someThings:Vector<SomeThing> // просто паблик переменная

Psycho Tiger
18.05.2010, 17:02
А я все не не паблик переменные пишу с _.

Zebestov
18.05.2010, 17:05
2HotIceCream

у меня так обычно:

private var _x:int;
public var y:int;

public function f(x:int; y:int):void
{
this._x = x;
this.y = y;
}


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

2gloomyBrain:

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

Psycho Tiger
18.05.2010, 17:08
с той лишь оговоркой, что я бы не назвал переменную зарезервированным именем.
А где оговорки, что класс наследуется от того, где это имя определенно? )
Порой часто когда рисуется что то в битмапдату у меня классы имеют свойства x,y,width,height, но не имеют отображения как таковых. Не наследуются от DisplayObject`ов и я не вижу в этом ничего плохого. Хотя, дело вкуса =)

gloomyBrain
18.05.2010, 17:10
Это будет холивар, но.. зачем? =)
Ведь внутри одного участка кода по сути нет разницы между public и private переменными. А вот между запуском сеттера и присвоением значения разница зачастую весьма ощутима (иначе нафига сеттер нужен?).
Необходимо (на мой взгляд) разграничить функции (а сеттер это функция) и переменные. По этому я пишу подчеркивания перед переменными, для которых есть сеттер. Ну и переменную и сеттер удобно назвать одинаково - там где "_" есть, там переменная, там где нет - сеттер/геттер

Psycho Tiger
18.05.2010, 17:15
Глум, ты прав.
Только у меня позиция насчет переменных приватных, не имеющих сеттеров другая: если я вдруг захочу для переменной сделать сеттер и геттер, в 99.99% случаев геттер будет возвращать мне просто эту самую переменную, т.е. в местах обращения к этой переменной фактически ничего не изменится. А раз смысл такой, то не вижу причин звать геттер, если можно сразу напрямую обратиться к переменной через "_". Поэтому перед приватными я пишу "_" всегда.

Zebestov
18.05.2010, 17:18
Хотя, дело вкуса =)

угу =) не предмет...

HotIceCream
18.05.2010, 17:19
мм ну вобщем то мнение общественности ясно) private с _

gloomyBrain
18.05.2010, 17:50
если я вдруг захочу для переменной сделать сеттер и геттер

Ты хочешь сказать, что причина написания "_" перед приватными переменными - это гипотетическая ситуация возникновения желания? =)
В общем, объявляю тебе холивар =)

Psycho Tiger
18.05.2010, 18:02
Нет, причина написания перед переменными "_" - причина подчеркивания, что это всё таки приват. Причина написания даже перед теми переменными, где нет гет\сет - как и в общем случае, подчеркивание приватности, но и до кучи "ситуация возникновения желания" =)

orcpochta
18.05.2010, 18:05
Я как-то так пишу:

private var _sync:Boolean; // если есть геттер/сеттер
private var systemTime:Number; // просто приватная переменная
public var someThings:Vector<SomeThing> // просто паблик переменная


точно так же пишу

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

Furinax
18.05.2010, 18:10
точно так же пишу

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

и я также пишу :)

orcpochta
18.05.2010, 18:22
и я также пишу :)

и тоже не даете внешнему коду возможность ковыряться зубилом в классе?))

iNils
18.05.2010, 18:27
Оказывается сколько у нас генераторов хаоса.

gloomyBrain
18.05.2010, 18:33
Оказывается сколько у нас генераторов хаоса.

Пап, а ты сейчас с кем разговаривал? (c) Iv

Psycho Tiger
18.05.2010, 18:34
и тоже не даете внешнему коду возможность ковыряться зубилом в классе?))
Это называется инкапсуляция и каждый вменяемый программист это делает.

orcpochta
18.05.2010, 18:36
Это называется инкапсуляция и каждый вменяемый программист это делает.

опять эрудицией блещете?

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

Psycho Tiger
18.05.2010, 18:43
опять эрудицией блещете?

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

udaaff
18.05.2010, 19:38
Psycho Tiger, тебе сколько лет, мальчик? :D

а подчеркивание сразу дает понять, что переменная имеет геттер/сеттер обертку с таким же именем без подчеркивания
А зачем это понимать? :)

orcpochta
18.05.2010, 19:42
А зачем это понимать? :)

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

iNils
18.05.2010, 19:45
а тут еще и сразу однозначно видно, что есть оберткаА зачем это знать?

orcpochta
18.05.2010, 19:48
А зачем это знать?

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

gldrawworld
18.05.2010, 19:53
Оказывается сколько у нас генераторов хаоса.

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

Ну значит ваша точка зрения неправильная.

мда …*

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

orcpochta
18.05.2010, 20:00
Для этого есть панель Outline.

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

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

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


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

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

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
Зависимость _ от аксессеров это и есть запутывание. А написание setX (getX () + 5) только мешает.

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

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


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

orcpochta
18.05.2010, 20:42
А это тут каким боком, когда обсуждают не аксессоры, а связь _ с аксессорами?

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

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

orcpochta
18.05.2010, 21:08
Ваш вывод спотыкается еще в самом начале. Есть еще локальные переменные и аргументы метода.

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

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

Какому общепринятому? Возьмем столпов в своих областях:
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
..поэтому ссылка на яву или си не показатель. Остается представитель AS3 Колин Мук, может он и не использует _ (я как то не слежу за этим). Но задача Мука рассказать про язык и его применение, а не про варианты оформления кода. Мук может вообще относится к противникам такого использования, и тд и тп.
Мук часто пишет в Ява синтаксисе (он не только флэшер), например встречал именование функций с большой буквы, сеттеры/геттеры часто описывает как setX()/getX,
интерфейсы обзывает как SmthDoable а не как ISmth - т.е. не особо соблюдает конвенции..
Лично я ставлю "_" только перед переменными имеющими геттер/сеттер - причём ставлю не сам, а так генерит флэшдевелоп - чаще всего они приватные.
Просто приватные переменные - не подчёркиваю, т.к. может возникнуть ситуация, когда понадобится обернуть в геттеры/сеттеры.
А по поводу визуального разделения local/public/private/protected - можно наверное даже сделать плагинчик, который задаст им различные стили в CSS - только не вижу особого смысла в этом.

iNils
19.05.2010, 12:52
Лично я ставлю "_" только перед переменными имеющими геттер/сеттер - причём ставлю не сам, а так генерит флэшдевелоп - чаще всего они приватные.
Просто приватные переменные - не подчёркиваю, т.к. может возникнуть ситуация, когда понадобится обернуть в геттеры/сеттеры.Напомнило
"Шла я как-то на прием к гинекологу,увидела 400 долларов.Поднимать не стала-примета плохая.Потеряешь больше,чем найдешь.И вот результат:у меня лапочка-дочка.Наша радость.Ей уже 3 годика:)"
Причинно-следственные связи отсутствуют.

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

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

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

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

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

orcpochta
19.05.2010, 15:08
Ну так объясните его мне.

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

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

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

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