Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

Скобки при отсутствии параметров   Найти похожие ветки 

 
Григорьев Антон ©   (2004-08-11 11:51) [0]

Повышают ли они читаемость кода? Пример:

A:=SomeIdentifier;

Непонятно, то ли SomeIdentifier - это переменная, то ли функция без параметров.

A:=SomeIdentifier();

А вот тут всё ясно.

Раньше я был категорическим противником использования пустых скобок, а теперь мне всё больше и больше кажется, что с ними всё-таки лучше. А что скажет коллективный разум?


 
Sandman25 ©   (2004-08-11 11:54) [1]

Имена функций и методов должны начинаться с глагола.
Имена переменных должны быть существительными (с определяемыми словами-существительными).
Если
X := GetMyValue, то это функция.
Если
X := ResourceManagerLayout, то это переменная.


 
Гаврила ©   (2004-08-11 11:54) [2]

Согласен, тоже начал с некоторого времени ставить


 
IceBeerg ©   (2004-08-11 11:54) [3]

Согласен


 
Danilka ©   (2004-08-11 11:55) [4]


> а теперь мне всё больше и больше кажется, что с ними всё-таки
> лучше.

Чем именно лучше?


 
VMcL ©   (2004-08-11 11:56) [5]

>>Григорьев Антон ©  (11.08.04 11:51)

Я не ставлю. Тем более по имени функции часто понятно, что это именно функция, а не переменная или константа (например, GetWindowText, SetConsoleTitle). Если забыл/не знаю, что это за идентификатор, то всё равно сделаю Ctrl+Click (Find declaration) - и всё тут.


 
DiamondShark ©   (2004-08-11 11:57) [6]

Без разницы.
Главное -- писать в едином стиле.


 
NailMan ©   (2004-08-11 11:59) [7]

имхо VMcL и Sandman25 правы - надо правильные имена функциям/процедурам давать. Понятно без всяких лишних символов.

Пустые скобки портят внешний вид.

---
WBR, NailMan aka 2:5020/3337.13


 
вразлет ©   (2004-08-11 12:00) [8]

Григорьев Антон ©  

Согласись, это проблема именно Паскаля)


 
Плохиш ©   (2004-08-11 12:06) [9]


> вразлет ©   (11.08.04 12:00) [8]
> Григорьев Антон ©  
> Согласись, это проблема именно Паскаля)

У вас проблемы? Обратитесь к психиатру.


 
Игорь Шевченко ©   (2004-08-11 12:09) [10]

Григорьев Антон ©   (11.08.04 11:51)


> Раньше я был категорическим противником использования пустых
> скобок, а теперь мне всё больше и больше кажется, что с
> ними всё-таки лучше


Раньше я был категорическим сторонником круглых скобок, а теперь вычищаю, пользуясь правильными именами функций и переменных.

"Важной частью пропагандируемого мною стиля программирования является
разложение сложных процедур на небольшие методы. Если делать это неправильно,
то придется изрядно помучиться, выясняя, что же делают эти маленькие методы.
Избежать таких мучений помогает назначение методам хороших имен. Методам
следует давать имена, раскрывающие их назначение. Хороший способ для этого -
представить себе, каким должен быть комментарий к методу, и преобразовать
этот комментарий в имя метода.
Жизнь такова, что удачное имя может не сразу придти в голову. В подобной
ситуации может возникнуть соблазн бросить это занятие - в конце концов,
не в имени счастье. Это вас соблазняет бес, не слушайте его. Если вы видите,
что у метода плохое имя, обязательно измените его. Помните, что ваш код
в первую очередь предназначен человеку, а только потом - компьютеру.
Человеку нужны хорошие имена. Вспомните, сколько времени вы потратили,
пытаясь что-то сделать, и насколько проще было бы, окажись у пары методов
более удачные имена. Создание хороших имен - это мастерство, требующее
практики; совершенствование этого мастерства - ключ к превращению
в действительно искусного программиста.
То же справедливо и в отношении других элементов сигнатуры метода.
Если переупорядочивание параметров проясняет суть - выполните его."

(с) Мартин Фаулер


 
VMcL ©   (2004-08-11 12:12) [11]

>>Игорь Шевченко ©  (11.08.04 12:09) [10]

>"..." (с) Мартин Фаулер

Супер.


 
Гаврила ©   (2004-08-11 12:43) [12]

Тем не менее, даже в кодах VCL мы встречаем функции, названия которых не начинаются с глагола.
Пример - Date

Может быть, начало названия с глагола не является таки обязательным условием наименования функции ?
В таком случае скобки поиогут


 
VMcL ©   (2004-08-11 12:46) [13]

>>Гаврила ©  (11.08.04 12:43) [12]

F1 и Ctrl+Click помогут :)


 
Anatoly Podgoretsky ©   (2004-08-11 13:16) [14]

Суть то не в том, что справа Переменная, свойство, метод, функция, константа, а слева, мы хочем в левой части что то поиметь.


 
jack128 ©   (2004-08-11 13:20) [15]

когда пришлось писать на С начал ставить и в паскале. Сейчас вроде перестал..

> Тем не менее, даже в кодах VCL мы встречаем функции, названия
> которых не начинаются с глагола.
> Пример - Date
>
> Может быть, начало названия с глагола не является таки обязательным
> условием наименования функции ?
> В таком случае скобки поиогут
но в той же VCL Date используют без скобок ;-) ИМХО, лудше бы эту функцию GetDate назвали..


 
Anatoly Podgoretsky ©   (2004-08-11 13:27) [16]

Борланд тоже учится


 
GuAV ©   (2004-08-11 13:31) [17]


> Борланд тоже учится

Вы их учИте.


 
Anatoly Podgoretsky ©   (2004-08-11 13:35) [18]

Жизнь


 
Slider007 ©   (2004-08-11 13:58) [19]


> Может быть, начало названия с глагола не является таки обязательным
> условием наименования функции ?

ясен пень не является, называй как хош, только потом не обольщайся ..


 
Ihor Osov'yak ©   (2004-08-11 14:01) [20]

2 [10] Игорь Шевченко ©   (11.08.04 12:09)

Это http://www.ozon.ru/context/detail/id/1308678/ ?

Или это http://www.ozon.ru/context/detail/id/1616782/ ?

Что-то уж часто Вы этого автора вспоминаете. Заинтересовали.


 
Игорь Шевченко ©   (2004-08-11 14:08) [21]

Ihor Osov"yak ©   (11.08.04 14:01) [20]

Обе хорошие :))

Цитата - из первой книжки.

Кстати, настоятельно рекомендую прочитать (а лучше - приобрести) обе книжки Фаулера. Я не могу сказать, какая из них лучше, так как в них рассматриваются разные аспекты программирования.


 
olookin ©   (2004-08-11 14:23) [22]

А если имя функции получается непомерно большим? Например:

GetMessageIndexOfLastSuccessfulSessionDialog();

Как тут быть?


 
Danilka ©   (2004-08-11 14:25) [23]

[22] olookin ©   (11.08.04 14:23)
> Как тут быть?

Помнить, что: "краткость - сестра таланта" :))


 
Ihor Osov'yak ©   (2004-08-11 14:27) [24]

2 [21] Игорь Шевченко ©   (11.08.04 14:08)

Спасибо. Наверно так и сделаю. Кстати, по вашей наводке уже приобрел одну книгу, не жалею. Правда, времени основательно проштудировать нет, все эпизодами...


 
REA ©   (2004-08-11 14:28) [25]

Насчет хороших имен - я на этом тоже раньше не экономил, а как увидел, что Delphi в описание форм b вызовов в exe пихает так начал задумываться. Там половина программы это имена. Много не сэкономить конечно на этом, но все-таки.


 
Danilka ©   (2004-08-11 14:30) [26]


> Там половина программы это имена.

Кошмар! Это не имена, это целые поэмы. :))


 
Игорь Шевченко ©   (2004-08-11 14:33) [27]

Danilka ©   (11.08.04 14:25) [23]


> Помнить, что: "краткость - сестра таланта" :))


В данном случае талантом является прямо противоположное свойство.


 
Anatoly Podgoretsky ©   (2004-08-11 14:33) [28]

REA ©   (11.08.04 14:28) [25]
У тебя проблемы с местом на диске?


 
Danilka ©   (2004-08-11 14:36) [29]

[27] Игорь Шевченко ©   (11.08.04 14:33)
Думаю, все-таки не противоположное, а чуство меры.
Т.к. такие имена как в [22] olookin ©   (11.08.04 14:23) нисколько не прибавляют читабельности программе.


 
app ©   (2004-08-11 14:38) [30]

olookin ©   (11.08.04 14:23) [22]
Это не длинное имя, это хорошее имя, у меня не вызвало никаких проблем понять что эта функция делает.


 
Danilka ©   (2004-08-11 14:51) [31]

[30] app ©   (11.08.04 14:38)
Чем длиннее слово, тем тяжелее оно читается, тем тяжелее читается сам модуль. Уверен, что если некоторые слова убрать из названия, то в контексте модуля, где эта ф-я используется будет также все понятно. А также будет понятно, если сократить некоторые слова общепринятыми сокращениями, например, Message - Msg.


 
Игорь Шевченко ©   (2004-08-11 15:06) [32]

Danilka ©   (11.08.04 14:51) [31]

Вот небольшой набор имен:

RtlActivateActivationContextUnsafeFast
IoReportTargetDeviceChangeAsynchronous
KeGetRecommendedSharedDataAlignment
MmMapLockedPagesWithReservedMapping
PsGetProcessInheritedFromUniqueProcessId
RtlEnumerateGenericTableWithoutSplayingAvl
ExWaitForRundownProtectionReleaseCacheAware
KeAcquireInStackQueuedSpinLockRaiseToSynch

Каждое из них является самодокументированным и понятным всем пользователям.

Попробуй сократить ?


 
Danilka ©   (2004-08-11 15:24) [33]

[32] Игорь Шевченко ©   (11.08.04 15:06)
Часть этих имен из ВинАПИ, другая часть - незнаю, но тоже, вероятно, какое-нибудь АПИ.
Конечно, они должны быть во-первых уникальны в пределах всего АПИ и быть самодокументироваными также в пределах всего АПИ.
Но реально в программе они будут использоваться в каком-нибудь методе класса, всего один или пару раз, и далее, в самой программе будет использован этот класс и его методы, и тут уже так подробно рассписывать не надо будет - само назначение и имя класса будет являться частью документирования.

Несколько сумбурно, но не могли-бы Вы привести пример Вашего кода, ваших имен процедур и функций, из секции implementation? Неужели там есть сравнимые по размеру?


 
olookin ©   (2004-08-11 15:32) [34]

[30] app ©   (11.08.04 14:38)
Это не длинное имя, это хорошее имя, у меня не вызвало никаких проблем понять что эта функция делает.

Я разумеется согласен с этим. Но попробуем представить вызов функции, куда в качестве параметров передаются другие функции. Например:

GetMessageIndexOfLastSuccessfulSessionDialog(GetMessageOfLastSuccessfulSessionDialog(),GetLastSuccessfulSessionNameAndId entifier(),
DefineDialogTypeOfLastSuccessfulSession());

Выглядит уже не очень?


 
Думкин ©   (2004-08-11 15:34) [35]

> [34] olookin ©   (11.08.04 15:32)

Ну тут либо саночки либо ехать. Видимо иерархия кривая?


 
Danilka ©   (2004-08-11 15:37) [36]

[34] olookin ©   (11.08.04 15:32)
Когда много параметров и получается длинная строка, я стараюсь ее расписать примерно так:

GetMessageIndexOfLastSuccessfulSessionDialog(
                             GetMessageOfLastSuccessfulSessionDialog(),
                             GetLastSuccessfulSessionNameAndId entifier(),
                             DefineDialogTypeOfLastSuccessfulSession());

Теперь, все более понятно. :)) Но длиннющие имена в программе - все-таки перебор, по моему скромному мнению. :))


 
Skyle ©   (2004-08-11 15:38) [37]


> Часть этих имен из ВинАПИ, другая часть - незнаю, но тоже,
> вероятно, какое-нибудь АПИ.

Тут товарищ Руссинович говорит, что имя API-функции есть Префикс_Действие_Объект. Но как таковых объектов в API почти нет (точнее, функции не являются их методами), то приходится задавать имена так.
А в случае наличия классов это можно сделать проще. Например.
fDialogForm.EnableAllItems.
Правила те же самые, наглядность ИМХО не меньше.
И не надо никаких скобочек.

P.S. Я сам знаю степень неточности в моём "рассказе про объектность API", поэтому не надо к этому придираться..;-)


 
Думкин ©   (2004-08-11 15:40) [38]


> [36] Danilka ©   (11.08.04 15:37)
> Теперь, все более понятно. :)) Но длиннющие имена в программе
> - все-таки перебор, по моему скромному мнению. :))

К сожалению, или нет, но не так. Вы не обязаны писать 5000 строк кода в день. Но хотя бы 50 но безглючных(в среднем в день, а не в среднем безглючных) - увольте. А если потом через год, то извольте в курс войти сразу, а не перекапыванием окружения.


 
jack128 ©   (2004-08-11 15:43) [39]


> 34] olookin ©   (11.08.04 15:32)
я ввожу дополинительные переменные для повышения читабельности кода.

Session := GetMessageOfLastSuccessfulSessionDialog();
SessionNameAndIdent := GetLastSuccessfulSessionNameAndIdentifier();
DialogType := DefineDialogTypeOfLastSuccessfulSession();
GetMessageIndexOfLastSuccessfulSessionDialog(Session, SessionNameAndIdent, DialogType);


 
Danilka ©   (2004-08-11 15:45) [40]

[37] Skyle ©   (11.08.04 15:38)
Угу, более понятно сказал то, что я попытался в [33].

[38] Думкин ©   (11.08.04 15:40)
Дык, если все оборачивать в классы, то это, кроме всего прочего и читабельность повысит, и избавит от длиннющих имен, как было написано в [37].



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.036 c
4-1089985779
Анатолий
2004-07-16 17:49
2004.08.29
Закрыть хендл, принадлежащий чужому просессу.


14-1092194477
Aldor_
2004-08-11 07:21
2004.08.29
На какой минимальной конфигурации будет приемлемо рабать Win2K?


3-1091636422
Piter
2004-08-04 20:20
2004.08.29
Помогите составить запрос


3-1091563127
Жека
2004-08-03 23:58
2004.08.29
Вопрос по Access


4-1090160619
DDDeN
2004-07-18 18:23
2004.08.29
Проблема с рекурсивным поиском





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский