Здравствуйте, гость ( Вход | Регистрация )
|
Litkevich Yuriy |
28.3.2010, 14:48
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Тут наткнулся на статью Link
Читаю, вроде пока с автором согласен. |
|
|
|
![]() |
|
Iron Bug |
28.3.2010, 20:08
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12
|
автор статьи работает в веб и сильно зациклен на жабаскрипте. отсюда и его странные представляния о коде
но в большинстве языков того, что автор описывает, просто не существует. так что советы неактуальны. что касается "общих" вопросов, применимых ко всем языкам, то моё мнение такое: про возвращаемое значение: имхо - функция ВСЕГДА должна возвращать int с кодом ошибки и точка. результаты - в параметрах. про геттеры и сеттеры - для крупных проектов со сложными объектами это единственный нормальный и безопасный способ обращения к данным. при этом обеспечивается полная инкапсуляция и наследование. |
|
|
|
|
Tonal |
30.3.2010, 8:14
Сообщение
#3
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17
|
Цитата(Iron Bug @ 29.3.2010, 0:08) Link про возвращаемое значение: имхо - функция ВСЕГДА должна возвращать int с кодом ошибки и точка. результаты - в параметрах. Если постоянно работаешь с чистым С, и основные апи на нём или на "С с классами" то это вполне оправданно - для единообразия. В других случаях вполне разумно использовать и остальные возможности С++, например такие как возвращение экземпляра структуры/класса из функции и исключения. А вот смесь этих подходов очень чревата ошибками. Я как-то видел большой проект, где функции и возвращали код ошибки, и бросали исключения - очень неприятное спагетти получалось... Кстати, возвращать таки лучше не int, а перечисление. Цитата(Iron Bug @ 29.3.2010, 0:08) Link про геттеры и сеттеры - для крупных проектов со сложными объектами это единственный нормальный и безопасный способ обращения к данным. при этом обеспечивается полная инкапсуляция и наследование. Зависит от назначения класса/структуры. В том же std::pair геттеры и сеттеры, как и наследование бессмысленны. А наследование, в С++, обеспечивается наличием средствами языка, а не геттерами/сеттерами. Ну и про рекурсию - это маразм. Итеративные алгоритмы - это просто подмножество рекурсивных. Другое дело, что встроенную в императивный язык рекурсию можно вручную нарисовать с помощью явных стеков на массиве и циклов. Но такая эмуляция будет гораздо менее понятной и более подверженной ошибкам чем явная. С другой стороны рекурсивные алгоритмы всё-таки пока требуются не так часто. Рекурсией конечно не следует злоупотреблять, как и любой возможностью. И нужно чётко представлять во что выльется тот или иной код для выбранного языка и компилятора. П. С. Функциональные языки, типа Haskell и LISP полностью строятся на рекурсии и циклы в них - это довольно простые функции выраженные в терминах рекурсии. Ага, таки решил прочитать опус. Про рекурсию у него примерно то и написано что у меня. Про вложенные функции с ним не согласен. Просто лексическая вложенность функций ничем не лучше чем объединение их в классе или пространстве имён или модулей и пакетов. А вот для организации частичных применений/замыканий это очень удобно. Замечательно что в новом стандарте для этого есть механизм лямбд! С длинной массива тоже не всегда так однозначно. Например алгоритму бинарного поиска нужно именно отдельное количество элементов. Да, свойства я тоже не люблю - из кода не видно что происходит - тривиальное действие присвоения или что-то "великое и ужасное". Ну и вообще, красота кода сильно зависит от языка и парадигмы, в которой код написан - красивый код на Pascal будет уродским на Python и оба они будут корявыми для С++ и наоборот. Код в стиле MFC|xWidget покоробит в проекте использующем в основном на Boost/Loki. |
|
|
|
Litkevich Yuriy Размышления о правильном программировании 28.3.2010, 14:48
Kagami Я помню эту статью еще с хабра. С частью тезисов н... 28.3.2010, 15:34
Litkevich Yuriy Цитата(Kagami @ 28.3.2010, 19:34) Плюс от... 28.3.2010, 16:03
kwisp Цитата(Kagami @ 28.3.2010, 16:34) В основ... 28.3.2010, 16:15
Litkevich Yuriy Цитата(kwisp @ 28.3.2010, 20:15) я вот се... 28.3.2010, 18:29
AD Я не согласен с функциями внутри функций. Если нуж... 28.3.2010, 22:52
Litkevich Yuriy Цитата(Iron Bug @ 29.3.2010, 0:08) про во... 28.3.2010, 20:59
Litkevich Yuriy Цитата(AD @ 29.3.2010, 2:52) то лучше пол... 28.3.2010, 23:38
AD Цитата(Litkevich Yuriy @ 29.3.2010, 0:38)... 29.3.2010, 10:02
Iron Bug Цитата(Litkevich Yuriy @ 28.3.2010, 23:59... 29.3.2010, 16:58
ufna и положительные эмоции, и не очень
как уже было ... 29.3.2010, 17:22
Iron Bug Цитата(Tonal @ 30.3.2010, 11:14) Да, свой... 30.3.2010, 19:56
Tonal Цитата(Iron Bug @ 30.3.2010, 23:56) Цитат... 31.3.2010, 7:44
BRE Цитата(Iron Bug @ 30.3.2010, 20:56) есть ... 31.3.2010, 8:03
Iron Bug Цитата(Tonal @ 31.3.2010, 9:44) Ну и быст... 31.3.2010, 14:30
Tonal Цитата(Iron Bug @ 31.3.2010, 18:30) Цитат... 1.4.2010, 7:59
AD Могу сказать, что крайне интересная тема получилас... 1.4.2010, 8:33![]() ![]() |
|
Текстовая версия | Сейчас: 15.12.2025, 1:13 |