54 / 54 / 9
Регистрация: 24.09.2011
Сообщений: 149
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Как делать правильнее?15.03.2012, 16:31. Показов 914. Ответов 16
Метки нет (Все метки)
Есть класс, допустим, "Фигура"
Так?
0
|
15.03.2012, 16:31 | |
Ответы с готовыми решениями:
16
Перерисовка, как правильнее? Как правильнее написать Как правильнее сделать? Как правильнее и быстрее? |
31 / 31 / 6
Регистрация: 15.12.2011
Сообщений: 108
|
|
15.03.2012, 16:34 | 3 |
второй вариант лучше для поиска ошибок
1
|
Модератор
13496 / 10751 / 6406
Регистрация: 18.12.2011
Сообщений: 28,687
|
|
15.03.2012, 16:42 | 4 |
Методы setX(),setY() предназначены для установления значений из кода,
не имеющего доступа к скрытым данным. В обсуждаемом случае метод moveTo() принадлежит классу и имеет доступ к этим данным, а, следовательно, вызов setX(),setY является излишним.
1
|
54 / 54 / 9
Регистрация: 24.09.2011
Сообщений: 149
|
|
15.03.2012, 16:42 [ТС] | 5 |
То, что первый вариант лучше по времени, а второй лучше для поиска ошибок - это я вижу.
Тут, конечно, сложно ошибиться А больше разницы никакой?
0
|
Модератор
13496 / 10751 / 6406
Регистрация: 18.12.2011
Сообщений: 28,687
|
||||||
15.03.2012, 16:44 | 6 | |||||
Для наглядности кода можете подчеркнуть принадлежность изменяемых данных
к классу добавлением указателя this:
1
|
54 / 54 / 9
Регистрация: 24.09.2011
Сообщений: 149
|
|
15.03.2012, 16:44 [ТС] | 7 |
0
|
31 / 31 / 6
Регистрация: 15.12.2011
Сообщений: 108
|
|
15.03.2012, 16:47 | 8 |
если в классе во многих местах изменяются переменные, то лучше устанавливать их через сетеры. Почему так ? Никто не застрахован он очепяток и нечаянно можно присвоить не той переменной значение. Если писать на прямую то при внушительных обьемах кода можно долго искать где ошибка, а используя сетер поиск ошибки соркатится в разы.
Да и потом возможно гденибудь в драйверах или какихнить скоростных устройствах где доли секунд имеют огромное значение лучше присваивать значение непосредственно переменной, а в обычных программах... ну потеряешь ты сотню тактов... от этого что то изменится ???
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
15.03.2012, 16:49 | 9 |
В принципе, да. Но если ты собираешься менять формат внутреннего представления, то тебе достаточно будет исправлять геты и сеты, а не отлавливать изменения по всему классу. Так что лучше поинтересуйся, можно ли как то ещё заинлайнить один метод в тело другого, кроме повторения там его исходника. То есть, можно ли написать второй вариант, а получить первый и как это делается.
1
|
54 / 54 / 9
Регистрация: 24.09.2011
Сообщений: 149
|
|
15.03.2012, 16:52 [ТС] | 10 |
Не по теме: Ну я не думаю, что сеттеры такие громоздкие бывают, что в них можно заплутать)
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
15.03.2012, 17:09 | 11 |
Сеты не могут быть громоздкими, громоздким бывает весь класс, а путаться будешь в общем списке мест их использования. Поэтому и следует поискать, как заставить компилятор подставлять тела методов при каждом использовании в других методах и ни когда не повторять в методах решение задач других методов. Хотя, зависит от сложности формата внутреннего представления, я не знаю, каким оно у тебя может оказаться, а чем он сложнее, тем сложнее и сеты с гетами. Но классы целиком не часто будут в экран влезать.
0
|
15.03.2012, 17:15 | 12 |
Merovingian, делайте через аксессоры, рефакторить будет проще. А по поводу скорости: на таком не экономят. Придет время и если заметятся тормоза, то профайлер в руки. К тому же такие методы можно инлайнить.
1
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
15.03.2012, 19:33 | 14 |
go, только если описаны в теле класса. Иначе нужно указывать явно.
0
|
54 / 54 / 9
Регистрация: 24.09.2011
Сообщений: 149
|
|
15.03.2012, 19:54 [ТС] | 16 |
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
15.03.2012, 20:10 | 17 |
Merovingian, не факт. Так же не факт, что компилятор не заинлайнит функции, которые таковыми не объявлены.
1
|
15.03.2012, 20:10 | |
15.03.2012, 20:10 | |
Помогаю со студенческими работами здесь
17
Как правильнее настроить охлаждение Как правильнее обработать исключения? как правильнее сформировать обьект Как правильнее связать сущности? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |