Форум
Философия программирования
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, netch80, Вы писали: N>Здравствуйте, Философ, Вы писали: Ф>>Здравствуйте, netch80, Вы писали: N>>>А зачем? Ф>>Дабы облегчить чтение кода. N>Мне оно не облегчает, а усложняет, по крайней мере в пределах первых до 5 позиционных параметров. (Точная граница сильно приблизительна.) N>Есть функции, которые знаешь наизусть и вызываешь единообразно независимо от места определения. Например, если говорить о системных и около того, то это open(), exit(), stat(), socket(), bind() и так далее. Вводить ещё какие-то имена параметров к ним... лучше в сад. N>А вот если у функции может быть 1-2 обязательных параметра и дофига специальных на отдельный случай - вот тогда вводить имена для них - самое оно. И такие варианты стиля есть. Я не против видеть такое, например, в C++, но только в порядке "дополнительных" возможностей для параметров со значениями по умолчанию. N>>>В сложных случаях, да, оно полезнее. В простых - нет. Ф>>Полезно во всех ситуациях. Ф>>Не так давно правил багу, которую внесли при рефакторинге. Ф>>Вызов выглядел так: Ф>>GetParameters(c_QueryReportName); Ф>>А сам метод выглядел вот так: DbParameter[] GetParameters(string QueryText) N>Честно говоря, нифига в этом примере не понял. c_ которое чего-то там Name это разве не строка? Почему нельзя передать его туда, где ожидается текст? N>Или вопрос в том, что требовался текст запроса, а Вы передали его имя? N>Прошу приводить пример так, чтобы не надо было гадать на кофейной гуще для его расшифровки. N>С другой стороны, я могу привести в пример ещё кучу API, в котором возможно, например, перепутать параметры местами. И что? N>И должен заметить, что рефакторинг вообще-то положено делать, предварительно обложив код тестами со всех сторон. И если баги подобного рода вносятся при рефакторинге, это значит, что для данного рефакторинга не были соблюдены входные условия. Более того, если следовать самому строгому определению, это вообще не рефакторинг, а какая-то ручная доработка. N>>>Но что Вы будете делать, если в следующей версии библиотеки кто-то переименует параметры в заголовочном файле... Ф>>Это будет свинство чистой воды. Однако нажму Ctrl+H и заменю код вызовов (с ребилдом и тестированием - максимум час). N>Хорошо, приведу другой пример - ближе к моей практике. Стандартизация Posix определяет у функций набор параметров с их позициями. Имена не задаются. Если я возьму имя, которое вписано на NetBSD, а компиляция сорвётся на Linux, что мне делать? Или в языке в таком случае имя должно было быть фиксировано в определении интерфейса? N>Я не отрицаю Ваши соображения полностью. Более того, я сам периодически использую такой стиль там, где это важно. Есть языки, которые позволяют такое (в первую очередь имею в виду Python, у него правила соответствия вызова определению функции тут достаточно гибки и при этом однозначны, чтобы не получить неожиданные эффекты). Но я бы не стал устанавливать это обязательным для всех случаев: вот это точно задолбёт.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …