DevilDevil
> господи, какие же вы людишки не понятливые
> ИДЕНТИЧНЫЕ приложения (то есть одинаково выглядящие для пользователя и
> выполняющие одинаковый функционал). Только на двух разных языках. На С++ и на
> C# например. Только так можно сравнить, что круче
читай пост #282
Feo
дак не к тебе обращался то )
DevilDevil
> прям вообще не читабельно, да ????
я вижу присвоение переменной, но никак не изменение размера массива
DevilDevil
> и к тебе тоже относится
я серьезно.
свойства это средства для рефакторинга, как только отрефакторили обе стороны выражения, свойства должны исчезнуть, ибо можно дать более осмысленные имена производимым им действиям и сгрупировать эти действия в один вызов для наглядности.
как показывает практика
v.SetX()
v.SetY
v.SetZ
оно же
v.X =
v.Y =
v.Z =
читается намного хуже чем
v = Vector(x,y,z);
хорош оффтопить.
Иннокентий
> хорош оффтопить.
по теме мы разобрались давно
поэтому нормально сменить тему "попутно" на обсуждение свойств
Pushkoff
> я вижу присвоение переменной, но никак не изменение размера массива
мда
попробуй
ради интереса
сменить "парадигму мышления" с навязанной тебе ограниченными возможностями С++
на распространённую "парадигму мышления", которой пользуются ОЧЕНЬ МНОГИЕ программисты
просто попробуй мыслить иначе, программируя сущности и управление ими
какой нибудь не очень большой проект на двух языках
"свойство" и "поле" - это немного разные понятия
DevilDevil
В случае с vector.size = 50000 есть серьезная неувязка.
Если мы не пользуемся свойствами, то получается вот так:
hr = vector.reserve(50000);
if (failed (hr) ){
DoCleanup();
return ERROR_MEMORY_NOT_ENOUGH;
}
Если же мы пользуемся свойствами, то придется пользоваться исключениями
try {
vector.size = 50000
} catch (NotEnoughMemoryException e) {
DoCleanup();
return ERROR_MEMORY_NOT_ENOUGH;
} catch (AnotherException e) {
//
} catch (AndAnotherException e) {
//
}
Т.е. для каждого свойства должен быть заведен список возможных исключений... Концепция становится дырявой.
Ogra
> Т.е. для каждого свойства должен быть заведен список возможных исключений...
> Концепция становится дырявой.
архитектуру надо проектировать так, чтобы exception-ов не было
а если они есть - то должны быть достойным образом обработаны
кроме того концепция осмысленных Exception-ов мне значительно больше близка, чем результат с кодом ошибки
DevilDevil
> архитектуру надо проектировать так, чтобы exception-ов не было
В мемориз!
Ogra
> catch (NotEnoughMemoryException e) {
> DoCleanup();
> return ERROR_MEMORY_NOT_ENOUGH;
Извините конечно, но вы дурак. У вас есть исключения, GC/RAII, зачем вам коды возврата вообще? За DoCleanup вообще рЭзать надо. Ставить обработчик где нибудь совсем высоко - и если например загрузка уровня упала то спокойно верунться в меню и сказать "Извините".
zlos
Не извиню. От дурака слышу. И давайте на этом закончим с оскорблениями, ок?
Что лучше - коды возврата или исключения, достаточно спорный вопрос. Особенно в языках без поддержки finally (привет, С++).
GC в С++ тоже нету.
А RAII неприменимо к упомянутому выше примеру.
Ogra
> Особенно в языках без поддержки finally
RAII. Вы кажется не знаете даже основ.
zlos
RAII отвечает за создание и удаление объектов, но не отвечает за их жизненный цикл. RAII не способен защитить объекты от перехода в нерабочее состояние. Конечно, если программа по каждому "чиху" выпадает в главное меню, то да - вы спасены. Но если вы пытаетесь написать программу, которая не падает, когда не требуется - одного RAII будет мало.
ах да, в СЯХ ко всему прочему ещё и нет finally
SAD
Ogra
> RAII не способен защитить объекты от перехода в нерабочее состояние.
Кидаем исключение, исключение летит, объекты сами убиваются при выходе за области видимости. Будьте добры уже пойти и выучить алфавит. Или не смешивайте исключения с кодами возврата, я за такое морду разбиваю например.
DevilDevil
> сменить "парадигму мышления" с навязанной тебе ограниченными возможностями С++
моя парадигма мышления называется KISS, почитай о ней в интернете
DevilDevil
> на распространённую "парадигму мышления", которой пользуются ОЧЕНЬ МНОГИЕ
> программисты
я считаю их нубами, ибо у свойств одно оправдание - срочный рефакторинг.
DevilDevil
> "свойство" и "поле" - это немного разные понятия
да, но я когда программирую уже знаю зачем создаю поле и зачем создаю геттер либо сеттер
поле геттер и сеттер к нему избыточны, поэтому не нужны.
Тема в архиве.