![]() |
|
Модераторы: LSD |
![]()
|
|
||
|
|
| mimik |
|
|||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
ИМХО это зло, потому что если в конце названия переменных есть цифры, то это повод сделать массив из эти переменных.
|
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
например :
|
||||
|
|||||
| mimik |
|
|||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
| alexvs11 |
|
||||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: нет Всего: 10 |
mimik, наверно будет разница как вызывать ее
или
|
||||
|
|||||
| mimik |
|
||||||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
обычно если
то и вызов этой функции будет примерно таким
тогда не проще ли так
? т.е. эти имена очень связаны, а когда они не связаны то названиям переменным надо давать осмысленные имена |
||||||
|
|||||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
проще так :
потому что это другое...
это и есть осмысленные имена.. еще пример это плейсхолдеры : _1, _2... http://liveworkspace.org/code/cafb802b2063...e13a631e435079d Это сообщение отредактировал(а) mes - 20.3.2011, 14:00 |
||||
|
|||||
| mimik |
|
|||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
понятно что это проще, имелось в виду что a[0], a[1], a[2] ещё где-то используются да это другое, но чем оно хуже? a1, a2, a3 это осмысленные имена? я с C++ не так хорошо знаком _1 это имя? или это параметр по умолчанию? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
это особенность обобщенного программирования, когда неизвестно что именно скрывается за параметрами и известен лишь алгоритм обработки.. например
как видно для make_pair абсолютно не важно чем являются A1, и А2.. главное что надо из них сделать структуру.. может и не хуже, но не подходит для той задачи |
|||
|
||||
| alexvs11 |
|
|||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: нет Всего: 10 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
там опечатка, не забывайте что мы ж не в разделе c++ и что собеседники могут быть знакомы с ним лишь поверхностно главное что смысл передан.. Добавлено через 1 минуту и 28 секунд полагается что с массивом осуществляется работа в цикле.. а следовательно "ручного" a[0], a[1], a[2] в таком случае не будет.. |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Можно - в тех случаях, когда цифры представляют собой часть осмысленного имени и не являются в том или ином смысле номерами.
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
или вот простой пример - функция swap, по обмену содержимого двух переменных ..
как называть ее аргументы ? |
|||
|
||||
| миг |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 15.9.2008 Репутация: нет Всего: 1 |
это смотря, что твориться внутри функции. Разница в том, что в результате вычислений внутри функции void fun( int a[]) могут измениться данные в массиве a.. в отличии от вызова функции void fun(int A[0],int A[1],int A[2] ) Это сообщение отредактировал(а) миг - 20.3.2011, 15:12 --------------------
Oaks may fall when reeds stand the storm. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
вот для наглядности, сами посмотрите что читабельней :
http://liveworkspace.org/code/2910ce13cff0...db0e784392b9f87 |
|||
|
||||
| mimik |
|
||||||||||||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
1. тут сложней сделать ошибку 2. если эти переменные связаны, то да, это тоже плохие именна, но здесь мы никак не сможет оградить программиста имхо, да
гораздо лучше чем
можно пример?
Добавлено через 2 минуты и 3 секунды
ну можно поставить const, или как там |
||||||||||||
|
|||||||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
(left, right), (lhs, rhs) , (a1,a2), (first,second), (_1, _2) являются в данном случае абсолютно равно осмысленными и зависят от вкуса разботчика. но при количестве аргументов три и более, цифры вытесняют своих конкурентов.. 1. массив, переданный как константное имя, не равнозначен, переданному по значению.. 2. чтоб передать массив его надо "собрать", а это уже лишние строчки.. 3. не всегда переменные с одним именем, являются одного и того же типа.. имеется ввиду корень слова без цифрового/буквенного аффикса.. зачастую, наоборот, легче.. ибо отнимает силы программиста на длинное чтение и восстановление ассоциации.. цифры как ассоциативный ряд намного более наглядны.. Это сообщение отредактировал(а) mes - 20.3.2011, 15:30 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
А почему левый-правый, а не верхний-нижний? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| mimik |
|
||||||||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
имхо, не совсем ну, левый операнд и правый операнд в некоторых ЯП можно так
это в c++ так, в некоторых ЯП можно так
вот мне недавно надо было добавить новый функционал в чужой код, так так вместо массива используется ассоциативный ряд, код на 2000 строк и с фнукциями с 40 параметрами, мне сказали что вначале были 3 переменные, потом добавили ещё 2, а потом ещё 35 сейчас, с массивом, этот код занимает где-то 200 строк |
||||||||
|
|||||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
Ну первый операнд, второй операнд Так отчего бы их и не пронумеровать? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| mimik |
|
||||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
если есть такая функция
и надо будет добавить параметр, то тут код заставляет подумать о рефакторинге а если
то можно добавить новый парметр, а потом ещё, и ещё потому что такой код изначально не требует напрягаться для написания Это сообщение отредактировал(а) mimik - 23.3.2011, 13:25 |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
swap() с тремя параметрами?
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
имелось ввиду, что для человека легче для восприятия :
чем
где вперед заметили и легче выявили не стыковку ? "собрать" это не "создать массив" прежде всего массив создан из будет копий, а это не всегда является желаемым поведением.. одного этого достаточно, чтоб не вспоминать остальные нюансы... ну заставляет.. поняли что все таки нужно 4ре одинаковых параметра.. как их теперь называть ? Добавлено @ 16:00 ну так речь же не о самом swape... Добавлено @ 16:03 П.С. то что названия нужно изначально стараться подбирать наиболее эффективные и удобные, я не спорю.. я лишь говорю, что ситуации, когда именно цифровые аффиксы являются наиболее подходящими, не редки.. и не вижу ни одного повода не использовать их в таких случаях.. Добавлено через 11 минут и 31 секунду кстати если бы я писал swap то с большой вероятностью назвал бы аргументы не (left, right),(lhs,rhs) - которые больше подходит для операторов, а (a,b) потому что на мой взгляд наиболее точно передают семантику и не добавляют лишнего мусора.. но a,b является по сути ничем не отличается от _1 _2.. последние бы не использовал (касается только (c++)), из за их "зарезервированного" смысла, как плейсхолдеры.. Это сообщение отредактировал(а) mes - 23.3.2011, 16:04 |
||||||
|
|||||||
| mimik |
|
||||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
ну да
да, это тоже не айс, но я и не предлагаю такой вариант, возможно там логичней будет массив или структура массив/структура будет занимать примерно столько же памяти сколько и параметры функции, не?
зависит, моно массивом, можно хэшмэп, можно классом |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
||||
|
||||
| mimik |
|
|||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
имхо, если в коде используется ассоциативный ряд, это один из поводов для того отрефакторить код, заменить ряд на массив/хэш/структуру/класс имхо, если в каком-то ЯП не принято/оптимально/возможно использовать какой-то подход, это не означает что подход плохой, в Lisp например, всё есть список а в Java насколько я помню, функцию swap вообще написать не возможно, т.к. нельзя передать параметр по ссылке |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
Это уже простите не swap() а shift() А вообще мысль состоит в том, что иногда (не часто) функция принимает фиксированное количество параметров (потому неудобны массивы) которые семантически различаются только порядком в котором они переданы в функцию. Например sum(a1, a2), нет никакой разницы между первым и вторым аргументом. Потому я не вижу принципиальной разницы между: left/right, first/second, a1/a2. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
нет -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
| mimik |
|
|||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
http://ru.wikipedia.org/wiki/Lisp
я это хотел сказать |
|||
|
||||
| k0rvin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
тогда почему не сказал? и таки не все. 123 123.4 123.4+5i #\a "abc" x |xyz| и др. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
| mimik |
|
|||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 2 Всего: 34 |
Отнюдь. Все зависит от языка. Возьмем тот же пример с передачей данных формальным параметрам функции (подпрограммы, метода, и т.п.).
Можно и дальше продолжать. ИМХО если цифры читабельности кода не снижают, недостатком они не являются. Впрочем, сам их использую очень редко. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
конечно -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
![]()
|
| Правила ведения Религиозных войн | |
|
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Религиозные войны | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |