Размышления о правильном программировании |
Здравствуйте, гость ( Вход | Регистрация )
Размышления о правильном программировании |
Litkevich Yuriy |
28.3.2010, 14:48
Сообщение
#1
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Тут наткнулся на статью 10 уродских приёмов программирования — Алик Кириллович
Читаю, вроде пока с автором согласен. |
|
|
Kagami |
28.3.2010, 15:34
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: 9 |
Я помню эту статью еще с хабра. С частью тезисов не согласен В основном претензии к призыву отказаться от сеттеров/геттеров. Плюс отказ от рекурсии. Ну и по мелочи кое-где. Больше всего мне не понравилась категоричность автора. Бывают моменты, когда красоту кода придется приносить в жертву производительности.
Сообщение отредактировал Kagami - 28.3.2010, 15:43 |
|
|
Litkevich Yuriy |
28.3.2010, 16:03
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
kwisp |
28.3.2010, 16:15
Сообщение
#4
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
В основном претензии к призыву отказаться от сеттеров/геттеров. я вот сейчас прочёл тоже согласен с тобой. а как автор советует поступать если при изменении свойства нужно выполнить какие нибудь действия, это получается и поведение и изменение свойства? получается никак. либо его притензии к сеттерам и геттерам проявляются только в чистом виде, когда ничего делать по изменению свойства не нужно. я поддерживаю концепцию того чтобы в открытой секции класса хранились только константные данные. Изменяемые данне должны быть надёжно защищены. + пропадает возможность сделать сеттеры и геттеры виртуальными при наследовании. |
|
|
Litkevich Yuriy |
28.3.2010, 18:29
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
я вот сейчас прочёл тоже согласен с тобой. тут есть нюанс. В целом я согласен с автором, те кому приходилось писать на Делфи, перейдя на любой другой инструмент (Билдер не всчёт так как пытается пародировать Делфи) могли испытать чувство не Объектно-Ориентированности.Дело в том, что в Делфи, есть понятие свойств, поддерживаемых компилятором. В Qt, например, тоже есть. И когда в Делфи вы пишите: value = object.sameProperty; то вы получаете значение свойства объекта, но не напрямую, а через "геттер", а когда вы пишете object.sameProperty = value; то вы устанавливаете значение свойства объекта, но не напрямую, а через "сеттер". Т.е. у вас есть возможность определить и "геттер" и "сеттер". Но форма записи в коде очень интуитивна, и на мой взгляд, по настоящему Объектно-Ориентирована. Нюанс в том, что автор абстрагируется в размышлении от конкретного языка программирования. Но редко указывает на каком языке дан пример. Цитата Свойство — это интерфейс для красивого и безопасного доступа к данным объекта
|
|
|
Iron Bug |
28.3.2010, 20:08
Сообщение
#6
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
автор статьи работает в веб и сильно зациклен на жабаскрипте. отсюда и его странные представляния о коде в жабаскрипте нет ни типов данных, ни функций, по большому счёту. отсюда и весь бардак.
но в большинстве языков того, что автор описывает, просто не существует. так что советы неактуальны. что касается "общих" вопросов, применимых ко всем языкам, то моё мнение такое: про возвращаемое значение: имхо - функция ВСЕГДА должна возвращать int с кодом ошибки и точка. результаты - в параметрах. про геттеры и сеттеры - для крупных проектов со сложными объектами это единственный нормальный и безопасный способ обращения к данным. при этом обеспечивается полная инкапсуляция и наследование. |
|
|
Litkevich Yuriy |
28.3.2010, 20:59
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
про возвращаемое значение: а я вот категорически с этим не согласен. имхо - функция ВСЕГДА должна возвращать int с кодом ошибки и точка. результаты - в параметрах. Сам термин "функция" обязывает к математическому поведению. Как и приведено у автора статьи про геттеры и сеттеры - для крупных проектов со сложными объектами это единственный нормальный и безопасный способ обращения к данным. ну это опять же жёстко завязано на Си++. А в языках где есть свойства, в них нет нужды
|
|
|
AD |
28.3.2010, 22:52
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Я не согласен с функциями внутри функций. Если нужен какой-то логический блок, то лучше пользоваться пространствами имен.
|
|
|
Litkevich Yuriy |
28.3.2010, 23:38
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
AD |
29.3.2010, 10:02
Сообщение
#10
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
Текстовая версия | Сейчас: 28.1.2025, 17:40 |