Перейти к содержимому
  • 0
kaka888

Как правильно назвать переменную?

Вопрос

Добрый ночь! Думаю правильно называть переменные очень важно. Недавно я столкнулся с проблемой, что более опытный в программировании человек не понял мою идею из-за неправильного (а может и правильного) названия моей переменной "socket":

local component = require'component'
socket = component.internet.request('https://google.com')

В данном случае переменная socket является таблицей, которая хранит 4 метода: read, response, close, finishConnect.
Насколько я знаю, в примере выше производится get-запрос по адресу https://google.com, и в переменную socket возвращается ответ.
Ну так что, как лучше всего называть эту переменную? Или всё же название "socket" является полностью корректным?
СПАСИБО

Изменено пользователем kaka888
дополнение

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

Вне контекста вопрос о правильности не имеет смысла. Поэтому именно с выяснения контекста и начнём.

 

Изначально вопрос был задан в разделе вопросов по Lua. И с точки зрения синтаксиса Lua ничто не мешает назвать переменную именно таким образом. Но, подозреваю, этот вопрос не про Lua. Поэтому пусть пока этот вопрос побудет в разделе общих вопросов. Может быть, это философский вопрос или филологический. Как знать...

 

1 час назад, kaka888 сказал:

Недавно я столкнулся с проблемой, что более опытный в программировании человек не понял мою идею из-за неправильного (а может и правильного) названия моей переменной "socket"

В чём заключалась твоя идея? Почему, на твой взгляд, именно это название переменной лучше всего отражает идею? Как понял эту идею другой человек? Какую он предлагает альтернативу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
50 минут назад, eu_tomat сказал:

Вне контекста вопрос о правильности не имеет смысла. Поэтому именно с выяснения контекста и начнём.

 

Изначально вопрос был задан в разделе вопросов по Lua. И с точки зрения синтаксиса Lua ничто не мешает назвать переменную именно таким образом. Но, подозреваю, этот вопрос не про Lua. Поэтому пусть пока этот вопрос побудет в разделе общих вопросов. Может быть, это философский вопрос или филологический. Как знать...

 

В чём заключалась твоя идея? Почему, на твой взгляд, именно это название переменной лучше всего отражает идею? Как понял эту идею другой человек? Какую он предлагает альтернативу?

Сори, иногда путаю разделы здесь, беды с башкой :C
Я плохо представляю себе что такое "сокет" :D. Это название придумал не я. Я откуда-то давно его списал, и вот теперь прижилось у меня.

 

Тому знакомому я объяснял свою проблему, связанную с запросами. Я дал ему этот кусок кода, но он подумал, что это не GET-запрос, а какие-то "сокеты". И он мне сказал, что он сам делал не через сокеты, а через get-запрос. Из этого я сделал вывод: либо я херово назвал переменную "socket", либо мой знакомый херово

понимает значение слова "socket", а я всё назвал корректно.

Другое название он не предлагал.

Всё-таки как правильнее будет назвать эту переменную?

Изменено пользователем kaka888

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, kaka888 сказал:

Всё-таки как правильнее будет назвать эту переменную?

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

 

8 часов назад, kaka888 сказал:

Другое название он не предлагал.

Есть такое правило: критикуешь – предлагай альтернативу. Альтернатива даёт возможность сравнения. И даже если критерии правильности изначально были непонятны, они начинают проясняться во время сравнения и обсуждения альтернативных вариантов.

 

Здесь есть небольшой намёк на предмет спора:

8 часов назад, kaka888 сказал:

Тому знакомому я объяснял свою проблему, связанную с запросами. Я дал ему этот кусок кода, но он подумал, что это не GET-запрос, а какие-то "сокеты". И он мне сказал, что он сам делал не через сокеты, а через get-запрос. Из этого я сделал вывод: либо я херово назвал переменную "socket", либо мой знакомый херово

понимает значение слова "socket", а я всё назвал корректно.

Знакомый, скорее всего, использует слово "socket" в узком смысле этого слова, как его обычно понимают программисты, работающие с сетевыми запросами. И если ты хочешь, чтобы такие программисты не спотыкались, читая твой код, то да, название переменной было выбрано неудачно. Именно неудачно, о правильности пока не говорим.

 

Буквально слово "socket" означает разъём. Это очень абстрактный смысл, позволяющий применять это слово к любому программному интерфейсу, если очень хочется.

 

На чьей стороне правда, сказать сложно.

  • Ты прав, потому что не преследовал каких-то особых целей. Если нет целей, то нельзя определить и критерии истинности. Код работает? Значит, он правильный.
  • Твой знакомый прав, потому что мыслит в определённом, привычном ему контексте. Он различает нюансы терминов, и в этом контексте название "socket" вводит его в заблуждение.
  • Ты не прав, потом что ищешь правильность, не сформулировав критерии правильности.
  • Твой знакомый не прав, потому что не предложил альтернативу.

Вернёмся к поиску критериев правильности. А их можно определить только исходя из целей.


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сокет - это обычный файловый дескриптор из которого можно последовательно читать и писать байты передающиеся между процессами, назначенными на определенный порт. Это не протокол, это интерфейс, Http является протоколом. Других назначений у сокета нет, остальное абстрактная философия и отсебятина или непонимание основ сетевого программирования.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, NEO сказал:

Других назначений у сокета нет, остальное абстрактная философия и отсебятина или непонимание основ сетевого программирования.

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

 

У тебя есть взгляд на вопрос в контексте сетевого программирования. Предлагаю дополнить его ответами на конкретные вопросы:

  • Какое название переменной ты считаешь правильным в данном контексте, и почему?
  • Какая проблема возникает, если эту переменную назвать "socket"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 минут назад, eu_tomat сказал:

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

 

У тебя есть взгляд на вопрос в контексте сетевого программирования. Предлагаю дополнить его ответами на конкретные вопросы:

  • Какое название переменной ты считаешь правильным в данном контексте, и почему?
  • Какая проблема возникает, если эту переменную назвать "socket"?

1. Я вообще не знаю как правильно называть эту переменную, и даже не представляю, ну, мб только handler, хз.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
31 минуту назад, kaka888 сказал:

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

Если посмотреть офф доки, можно заметить название Http Request Object. request_object хорошее название для переменной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
48 минут назад, eu_tomat сказал:

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

Если тебе не явен контекст, тут не мои полномочия, человек использует http protocol, который базируется на сокетах, человек в общем программирует под эвм, очевидно что сокет явно определенный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, kaka888 сказал:

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

Отлично! У нас есть критерий оценки правильности. Мы называем переменные так, чтобы их название было осмысленным и не противоречило коду. С этой точки зрения прав сетевой программист: название переменной вводит его в заблуждение. Жаль, что он не предложил альтернативу, но попробуем восполнить этот пробел.

 

17 минут назад, kaka888 сказал:

Я вообще не знаю как правильно называть эту переменную, и даже не представляю, ну, мб только handler, хз.

Эту проблему тебе придётся решать каждый раз при написании кода. Названия переменных вроде handler, socket, interface, container и т.п. нежелательны в виду их излишней абстрактности. К тому же, в определённом контексте за этими названиями закреплены конкретные смыслы. Об этом уже упомянул @NEO. Чтобы правильно назвать переменную, надо задать себе вопрос, что именно она хранит. А для этого надо понять, какие значения ей присваиваются.

 

Что делает функция request? Документация говорит, что функция request осуществляет запрос. Вполне логичное название для функции.

 

Что возвращает функция request? Ответ на осуществлённый запрос. Значит, переменная хранит ответ.

 

Теперь осталось перевести слово "ответ" на английский язык. Эта задача не всегда проста из-за наличия в языках синонимов. Причём, синонимы почти всегда имеют альтернативные смыслы.

 

Для поиска наиболее точного перевода я рекомендую использовать гуглопереводчик, он показывает варианты перевода слова с дополнительными смыслами. Именно анализ дополнительных смыслов позволяет выбрать наиболее адекватный перевод.

 

Предлагаю кликнуть по ссылке, там есть варианты перевода слова "ответ". В поле формы можно вбить любое другое слово. В нашем случае предложено 8 вариантов перевода. Ориентируясь по дополнительным смыслам синонимов, я выбираю название "response". Возможно, меня поправят другие форумчане, лучше меня владеющие языком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, eu_tomat сказал:

Ориентируясь по дополнительным смыслам синонимов, я выбираю название "response". Возможно, меня поправят другие форумчане, лучше меня владеющие языком.

Выходит тавтология, в response - хранится response, по началу я тоже хотел так назвать, но данная переменная хранит объект запроса из коего можно получить ответ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, NEO сказал:

Если тебе не явен контекст, тут не мои полномочия, человек использует http protocol, который базируется на сокетах, человек в общем программирует под эвм, очевидно что сокет явно определенный.

Это лишь одна часть контекста, имеющая свою традицию именования переменных. Но это не весь контекст. Программист не должен ограничивать себя мелкими правилами, если они не позволяют ему осуществить задуманное. Поэтому первичен вопрос о целях, которые ставил перед собой программист при написании кода. И если особых целей не было, что выяснилось в последних постах автора вопроса, то смело применяем стандартные правила. Разве ты всегда чётко следуешь всем правилам?

 

18 минут назад, NEO сказал:

Выходит тавтология, в response - хранится response

А как иначе? Ссылку на функцию, возвращающую счётчик, мы называем count. Тоже тавтология? Итератор, возвращающий ответ, можно назвать response. Как это название мешает пониманию кода? Кого оно вводит в заблуждение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Выражение "каждый прав по-своему" подразумевает, что каждый действует по своим правилам, не во всём совпадающими с правилами других. Мы следуем правилам не потому, что они абсолютно правильны, а потому что те помогают эффективнее достигать поставленных нами целей. При этом те же самые правила могут мешать достижению других целей.

 

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

 

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

 

Вот ещё живой пример из другой темы:

В 20.02.2020 в 03:38, Fingercomp сказал:

local socket = component.internet.request(...)

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

 

Вот такая получилась философско-филологическая тема. Не столько о программировании, сколько о логике и о смысле слов и действий. Применяйте правила там, где они уместны. А рассуждая о правильности, уточняйте контекст, который зачастую может содержать множество целей, иногда противоречащих друг другу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...