Модераторы: Се ля ви
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Старая новая венгерская нотация, оказывается все не совсем так 
:(
    Опции темы
Alix
Дата 15.10.2007, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



Гуляя нашел такую статью Как заставить неправильный код выглядеть неправильно от дядьки Joel'a. 
Очень неплохого, кстати дядьки и статьи у него всегда интересные.

Но суть не в этом. В предложенной им статье показывается что существует две Венгерских нотации - Прикладная и Системная. Первая появилась раньше и была "правильной", вторая позже и является той, которую мы имеем в виду говоря про эту нотацию. А суть такова, что в прикладной нотации предлагается давать переменным префиксы, которые отражали бы содержимое переменных, а не их ТИП, как это делается в системной нотации. Кроме того, префиксирование касается не только переменных, но и имен функций. И даже их именований, как например, стандартное TypeToType рекомендуется заменить на TypeFromType, т.к. тип результата при таком раскладе будет находиться слева, что ближе к присваиванию и потому более понятно.
В статье приводится пара интересных примеров. И в конце несколько мутная добавка про обработку исключений.

Для меня эта статья явилась неожиданной. Я, конечно, и раньше изредка давал переменным функциональные префиксы, но далеко не всегда и действуя скорее для облегчения читабельности (и не только! венгерская нотация способна уберечь от ошибок!) какого-то локально участка кода, теперь, пожалуй, буду примерять ее повсеместно.

Скажите, что вы об этом думаете? Используете ли вы префиксы в именовании переменных?
если не в тот форум, направьте меня на путь истинный

Это сообщение отредактировал(а) Alix - 15.10.2007, 17:51


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
setq
Дата 16.10.2007, 10:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Интересная статья. Спасибо.
  Вверх
__kish
Дата 17.10.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Было многабукв, здохли два раза - после возврата из предварительного просмотра и открытия смайликов (IE 6.0)

Вкратце - все зависит от:
  • языка программирования - ООП языки, хоть и не радуют автора статьи своей (кажущейся) сложностью, однако способны избавить от методов длинной несколько страниц, разгрузить проблемы архитектурой - складывая i+j вам не нужно знать как это работает если это работает, печать также может быть определена и все это только начало smile
  • библиотек - Qt не использует префиксы, Symbian - своя система;
  • контекста - суть кода должна быть ясна.

Я использую C++ с ООП, паттернами и рефакторингом:
  • m_ для полей класса;
  • без префикса для полей структуры;
  • i, dw, lpcstr - не использую - многабукв;
  • код должын быть понятен без комментариев;
  • работа в команде - работа с единым подходом.

PM MAIL   Вверх
Shaggie
Дата 17.10.2007, 13:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(__kish @  17.10.2007,  14:00 Найти цитируемый пост)
код должын быть понятен без комментариев

Рекомендую пересмотреть эту точку зрения, на ней далеко не уехать.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Afonya
Дата 17.10.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



Не осилил. ИМХО, обе великих венгерских нотации - суета-сует и томленья духа. smile

Shaggie
Рекомендую пересмотреть эту точку зрения, на ней далеко не уехать.
Don't comment obvious. Если нужны комментарии, это повод задуматься, почему код недостаточно понятен.

__kish
m_ для полей класса
Абсолютно, ИМХО, бессмысленное и малопродуктивное занятие.

ООП языки, хоть и не радуют автора статьи своей (кажущейся) сложностью, однако способны избавить от методов длинной несколько страниц
ИМХО никакой такой связи между ООП, классическим процедурным программированием и методами длинной в несколько страниц нет.

код должын быть понятен без комментариев
Абсолютно с вами согласен.
PM   Вверх
Shaggie
Дата 17.10.2007, 15:07 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(Afonya @  17.10.2007,  15:45 Найти цитируемый пост)
Если нужны комментарии, это повод задуматься, почему код недостаточно понятен.

Комментарии помогут за пять секунд понять, что это за сложный алгоритм (какой-нибудь хитрый ацикличный перебор графа) и его предназначение в данном месте.

Комментарии помогут за пять секунд узнать, что делает конкретный метод. Не как - это видно из кода, но что. Общая картина складывается быстрее. Дебажил когда-нибудь чужой код? Сваянный тремя программерами последовательно и ещё двумя параллельно?

Комментарии помогут быстро вспомнить, что делает эта нелепая конструкция в написанном тобой год назад коде. Поверь, на эти грабли натыкается каждый программист.

Комментарии есть часть технической документации на программное обеспечение.

С помощью комментариев можно писать аннотации (кто знает Java - меня поймёт).

Короче говоря комментарии - это могучий инструмент экономии времени программиста.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Afonya
Дата 17.10.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



Shaggie
Комментарии помогут за пять секунд понять, что это за сложный алгоритм (какой-нибудь хитрый ацикличный перебор графа) и его предназначение в данном месте. Комментарии помогут за пять секунд узнать, что делает конкретный метод. Не как - это видно из кода, но что. Общая картина складывается быстрее.
Согласен, что в какой-то мере понять помогут. За 5 секунд - вряд ли. Тем не менее практически не видел дельных комментариев ни в коммерческом коде, ни в open source. Ценность же комментирования банальных вещей практически равна нулю.

Дебажил когда-нибудь чужой код? Сваянный тремя программерами последовательно и ещё двумя параллельно?
Отлаживал.

Комментарии помогут быстро вспомнить, что делает эта нелепая конструкция в написанном тобой год назад коде. Поверь, на эти грабли натыкается каждый программист.
А зачем, собственно, писать эти нелепые конструкции? Чтобы потом писать пространные комментарии?

Комментарии есть часть технической документации на программное обеспечение.
Не обязательно.

Короче говоря комментарии - это могучий инструмент экономии времени программиста.
Где конкретно происходит эта экономия?
PM   Вверх
Бонифаций
Дата 17.10.2007, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: нет
Всего: 40



что только люди не придумают, чтобы не писать комментарии. 




--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
__kish
Дата 18.10.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Цитата

m_ для полей класса
Абсолютно, ИМХО, бессмысленное и малопродуктивное занятие.

Во многих случаях имена передаваемых параметров совпадают с именами полей класса. Может это архитектуру кривую делаю smile

Цитата

ИМХО никакой такой связи между ООП, классическим процедурным программированием и методами длинной в несколько страниц нет.

Облажался - избавить может хорошая архитектура :-[

Цитата

код должен быть понятен без комментариев;

Локальные переменные с именами row, col как раз показывают это утверждение в коде. Ну а префикс, в данном контексте, является комментарием к каждому применению переменной...

Цитата

Комментарии помогут за пять секунд понять, что это за сложный алгоритм (какой-нибудь хитрый ацикличный перебор графа) и его предназначение в данном месте.

Вот и будет он в Graph::HitriyAnticiklichniyPerebor(...) smile

Цитата

Комментарии есть часть технической документации на программное обеспечение.
С помощью комментариев можно писать аннотации (кто знает Java - меня поймёт).

Абсолютно согласен. Использую Doxygen, обычно достаточно комментирования класса, реже - методов, но комменты внутри метода  говорят что перед Вами мрак - автоматом можно приписывать wtf.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

• изменяющиеся языки и методологии программирования;


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Философия программирования | Следующая тема »


 




[ Время генерации скрипта: 0.0665 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.