![]() |
Модераторы: Се ля ви |
![]() ![]() ![]() |
|
Alix |
|
|||
![]() L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: нет Всего: 23 |
Гуляя нашел такую статью Как заставить неправильный код выглядеть неправильно от дядьки Joel'a.
Очень неплохого, кстати дядьки и статьи у него всегда интересные. Но суть не в этом. В предложенной им статье показывается что существует две Венгерских нотации - Прикладная и Системная. Первая появилась раньше и была "правильной", вторая позже и является той, которую мы имеем в виду говоря про эту нотацию. А суть такова, что в прикладной нотации предлагается давать переменным префиксы, которые отражали бы содержимое переменных, а не их ТИП, как это делается в системной нотации. Кроме того, префиксирование касается не только переменных, но и имен функций. И даже их именований, как например, стандартное TypeToType рекомендуется заменить на TypeFromType, т.к. тип результата при таком раскладе будет находиться слева, что ближе к присваиванию и потому более понятно. В статье приводится пара интересных примеров. И в конце несколько мутная добавка про обработку исключений. Для меня эта статья явилась неожиданной. Я, конечно, и раньше изредка давал переменным функциональные префиксы, но далеко не всегда и действуя скорее для облегчения читабельности (и не только! венгерская нотация способна уберечь от ошибок!) какого-то локально участка кода, теперь, пожалуй, буду примерять ее повсеместно. Скажите, что вы об этом думаете? Используете ли вы префиксы в именовании переменных? если не в тот форум, направьте меня на путь истинный Это сообщение отредактировал(а) Alix - 15.10.2007, 17:51 -------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
setq |
|
|||
Unregistered |
Интересная статья. Спасибо.
|
|||
|
||||
__kish |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 27.6.2007 Репутация: нет Всего: нет |
Было многабукв, здохли два раза - после возврата из предварительного просмотра и открытия смайликов (IE 6.0)
Вкратце - все зависит от:
Я использую C++ с ООП, паттернами и рефакторингом:
|
|||
|
||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
Рекомендую пересмотреть эту точку зрения, на ней далеко не уехать. |
|||
|
||||
Afonya |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 2.8.2007 Репутация: нет Всего: нет |
Не осилил. ИМХО, обе великих венгерских нотации - суета-сует и томленья духа.
![]() Shaggie Рекомендую пересмотреть эту точку зрения, на ней далеко не уехать. Don't comment obvious. Если нужны комментарии, это повод задуматься, почему код недостаточно понятен. __kish m_ для полей класса Абсолютно, ИМХО, бессмысленное и малопродуктивное занятие. ООП языки, хоть и не радуют автора статьи своей (кажущейся) сложностью, однако способны избавить от методов длинной несколько страниц ИМХО никакой такой связи между ООП, классическим процедурным программированием и методами длинной в несколько страниц нет. код должын быть понятен без комментариев Абсолютно с вами согласен. |
|||
|
||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
Комментарии помогут за пять секунд понять, что это за сложный алгоритм (какой-нибудь хитрый ацикличный перебор графа) и его предназначение в данном месте. Комментарии помогут за пять секунд узнать, что делает конкретный метод. Не как - это видно из кода, но что. Общая картина складывается быстрее. Дебажил когда-нибудь чужой код? Сваянный тремя программерами последовательно и ещё двумя параллельно? Комментарии помогут быстро вспомнить, что делает эта нелепая конструкция в написанном тобой год назад коде. Поверь, на эти грабли натыкается каждый программист. Комментарии есть часть технической документации на программное обеспечение. С помощью комментариев можно писать аннотации (кто знает Java - меня поймёт). Короче говоря комментарии - это могучий инструмент экономии времени программиста. |
|||
|
||||
Afonya |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 2.8.2007 Репутация: нет Всего: нет |
Shaggie
Комментарии помогут за пять секунд понять, что это за сложный алгоритм (какой-нибудь хитрый ацикличный перебор графа) и его предназначение в данном месте. Комментарии помогут за пять секунд узнать, что делает конкретный метод. Не как - это видно из кода, но что. Общая картина складывается быстрее. Согласен, что в какой-то мере понять помогут. За 5 секунд - вряд ли. Тем не менее практически не видел дельных комментариев ни в коммерческом коде, ни в open source. Ценность же комментирования банальных вещей практически равна нулю. Дебажил когда-нибудь чужой код? Сваянный тремя программерами последовательно и ещё двумя параллельно? Отлаживал. Комментарии помогут быстро вспомнить, что делает эта нелепая конструкция в написанном тобой год назад коде. Поверь, на эти грабли натыкается каждый программист. А зачем, собственно, писать эти нелепые конструкции? Чтобы потом писать пространные комментарии? Комментарии есть часть технической документации на программное обеспечение. Не обязательно. Короче говоря комментарии - это могучий инструмент экономии времени программиста. Где конкретно происходит эта экономия? |
|||
|
||||
Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: нет Всего: 40 |
что только люди не придумают, чтобы не писать комментарии.
-------------------- Бонифаций. |
|||
|
||||
__kish |
|
||||||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 27.6.2007 Репутация: нет Всего: нет |
Во многих случаях имена передаваемых параметров совпадают с именами полей класса. Может это архитектуру кривую делаю ![]()
Облажался - избавить может хорошая архитектура :-[
Локальные переменные с именами row, col как раз показывают это утверждение в коде. Ну а префикс, в данном контексте, является комментарием к каждому применению переменной...
Вот и будет он в Graph::HitriyAnticiklichniyPerebor(...) ![]()
Абсолютно согласен. Использую Doxygen, обычно достаточно комментирования класса, реже - методов, но комменты внутри метода говорят что перед Вами мрак - автоматом можно приписывать wtf. |
||||||||||
|
|||||||||||
![]() ![]() ![]() |
Правила раздела "Философия программирования": | |
|
Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО: • вопросы перспективного развития методов написания ПО; • изменяющиеся языки и методологии программирования; Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Философия программирования | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |