powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничные синонимы
17 сообщений из 17, страница 1 из 1
Пятничные синонимы
    #39488239
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недавно я поднимал тему "правильного" наименования функций, согласно такой схеме:
Объект##глагол
Т.е. ValueGet вместо GetValue.
Суть в том, что работая с классом в IDE, вы набираете после имени объекта точку, потом Value и получаете список методов, которые с Value работают (ValueGet, ValueSet, ValueReset, ValueDrop, и так далее) - удобно!
С другой стороны, если вы используете объект "незнакомого" класса, и хотите узнать, что из него можно извлечь для работы, вы набираете: obj.Get и листаете список геттеров.

И то и то полезно, получается. А компилятору всё равно, как называется функция. И, по идее, сколько у неё вообще имён, так ведь? В конце концов это адрес в объектом коде, про который потом должен знать линкер. А компилятор теоретически может запросто разные имена приравнивать к одному адресу.

Поэтому было бы удобно задавать как-то синонимы функций, чтобы можно было искать в списке как по объекту, так и по действию. Но, подозреваю, в с++(в компиляторах) такой возможности сейчас нет? Есть дефайны, конечно, но это препроцессор, и IDE на них не реагирует адекватно. Можно, наверно, ещё оформлять, как перевызов c std::forward.
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39488281
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39488365
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,

Современные IDE обычно используют full-text search при автодополнении. Так что когда ты набрал "value" после точки, IDE тебе вывалит список из "GetValue", "SetValue", "ToValue" и так далее.
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39488522
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbНедавно я поднимал тему "правильного" наименования функций, согласно такой схеме:
Объект##глагол
Т.е. ValueGet вместо GetValue.
Суть в том, что работая с классом в IDE, вы набираете после имени объекта точку, потом Value и получаете список методов, которые с Value работают (ValueGet, ValueSet, ValueReset, ValueDrop, и так далее) - удобно!

Бред. Как работают IDE , ты всё равно не предскажешь.

А в коде нужно именовать функции так, чтобы было ясно, что они делают, а не чтобы IDE угодить.

Если GetValue -- это значит "Получить (выдать) значение"

Если GetSettings -- "Получить настройки"

Вторая часть названия функции тут -- OBJECT, дополнение, предмет, на который направлено действие. Если оно есть, то оно должно быть вторым.

Если делать наоборот,
то существительное первой части будет формировать назывное предложение для действия.
Само действие тогда будет называть получаемый атрибут объекта.
Как например
obj.Id() -- выдать Id объекта
obj.Code() -- выдать код объекта
obj.Value() -- выдать значение (стоимость, ценность) объекта.
Так тоже можно, и так называют геттеры в некоторых фреймворках (например, в QT)

IdGet
CodeGet
ValueGet -- это можно будет интерпретировать как атрибутивное описание самого атрибута Id, Code, Get, т.е. Ид, код или Get, относящиеся к Get (Bid,Ask,Continue и так далее) или наоборот, Value будет атрибутом к Get (Тут может это и не имеет смысла, но часто глаголы в английском языке являются также омонимами с однокоренными существительными, как например Set, Put, Go и т.д)
Кроме этого, это можно интерпретировать, как сокращение с опущенным предлогом.
(IdOfGet, IdForGet и т.д.)

В общем, я и дальше могу искать варианты толкований, но уже ясно, что смысловая однозначность тут же теряется.

В английском вообще предложения строятся по схемам (в простейших случаях)

S V

S V O

где S -- subject , подлежащее
V -- verb , сказуемое
O -- object , дополнение.

Вот так и нужно именовать методы или функции.
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39488526
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbПоэтому было бы удобно задавать как-то синонимы функций, чтобы можно было искать в списке как по объекту, так и по действию. Но, подозреваю, в с++(в компиляторах) такой возможности сейчас нет?


Заводишь inline-функцию с такой же сигнатурой, но с другим именем -- и всё.
Можно также завести указатель на функцию с такой же сигнатурой, и дать переменной типа этого указателя любое синонимичное имя, но нужно ещё не забыть проинициализировать эту переменную.
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39488617
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbНедавно я поднимал тему "правильного" наименования функций, согласно такой схеме:
Объект##глагол
Т.е. ValueGet вместо GetValue.

Потом в твой исходник заглядывает кто-нибудь и идет тебя убивать.

По правилам английского, объект должен следовать за глаголом, отсюда и родилась традиция GetValue. А сейчас это уже и всеобщая привычка.
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39488787
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum типа этого ? ага, та тема, спасибо!
NekZСовременные IDE обычно используют full-text search при автодополнении. Так что когда ты набрал "value" после точки, IDE тебе вывалит список из "GetValue", "SetValue", "ToValue" и так далее.Да, но не всегда получается в них работать. А так да, очень разумно поиск работает, даже когда ошибаешься в наборе.
MasterZivБред.Тоже спасибо.
White OwlПотом в твой исходник заглядывает кто-нибудь и идет тебя убивать.Ну это пока на уровне идеи. Пока пишу или так или так. Ну и хотелось бы, чтобы в исходнике была одна функция. Синонимы чтобы не было видно, конечно, иначе это замусоревание кода.
White OwlПо правилам английского, объект должен следовать за глаголомЭм, I feel like I forgot English, don't I?
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39488875
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это спор на тему как лучше складывать числа. Префиксной операцией. Инфиксной. Или не дай бох как в мк60.
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39488903
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

А как в МК60? Постфиксной ? Как Forth ?
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39488928
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivmayton,

А как в МК60? Постфиксной ? Как Forth ?
Да. Только не 60, а 61 (ну и 52). Ну и конечно не "не дай бог", а очень удобно. Ибо стек явный, и с глубиной не ошибёшься.
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39489045
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я до сих пор считаю научные калькуляторы серии мк (со стеком) самыми лучшими.
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39489158
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jmp_originalMasterZivmayton,

А как в МК60? Постфиксной ? Как Forth ?
Да. Только не 60, а 61 (ну и 52). Ну и конечно не "не дай бог", а очень удобно. Ибо стек явный, и с глубиной не ошибёшься.

Согласен. Очень удобно и -- главное -- естественно!
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39489184
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivСогласен. Очень удобно и -- главное -- естественно!
IMHO: более естественно, чем скобки.
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39489458
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbОбъект##глагол
Т.е. ValueGet вместо GetValue.
просто val_t value() const ; get лишнее. так же как и set. для этого существует перегрузка функций void value(const val_t& nv) ;
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39489915
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexy_blackпросто val_t value() const ; get лишнее. так же как и set. для этого существует перегрузка функций void value(const val_t& nv) ; тоже вариант, но тогда всё как-то в куче. Хотя я где-то когда-то тоже так делал.
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39490401
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbтогда всё как-то в куче
почему в куче? не очень понял.
я как-то слышал "не понятно какую функцию вызываешь, сетер или гетер". но визуально сразу видно передаешь что-нибудь в скобки или нет. то есть вариант auto old_cool_value = some.value(); визуально очень легко отличить от some.value( new_cool_value );

имхо - таких метод должно быть мало. то есть если в классе много таких методов, то лучше использовать структуру.
...
Рейтинг: 0 / 0
Пятничные синонимы
    #39490437
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexy_blackпочему в куче? не очень понял.Да не, нормальный вариант. Куча, это типа, когда в редакторе набираешь имя функции, потом скобку, и там список вариантов :) А так да, визуально они в написанном виде нормально выглядят.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничные синонимы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]