терминология — Чем отличается «метод» от «функции»
Нет единой устоявшейся техники наименования сущностей в языках программирования и каждый язык, чтобы немного отличаться от других, по историческим причинам имеет свой набор названий и соглашений.
Так как программирование пришло с математики, то начальные корни нужно искать там. А там были функции и процедуры. Функция на основании своих аргументов генерирует какой-то результат. sin
, cos
— яркие примеры. Функция без аргументов — вырожденный вариант и обычно это константа. В математике обычно функции являются чистыми — то есть, у них нет побочных эффектов. То есть, вызов функции с одними и теми же аргументами дает один и тот же результат.
Параллельно существуют процедуры. Процедура — это последовательность действий, приводящая к определенному результату (да, обычная программа — это также может быть процедура, хотя…). В паскале и фортране принято, что процедура не возвращает результат. Но я считаю, что это исключительно соглашение, потому что иначе нужно было бы делать как в
почему в Си++ члены не называют «методами»?
Во многих языках 60-70 годов не было ООП в том понимании, которое известно сейчас. С++ изначально был просто «фронтом» (то есть надстройкой) над обычным Си. Был долгий период, когда это уже был не Си, но и ещё и не C++. Компилятора C++ не было, а был транслятор в Си. Видимо, поэтому там закрепилось функция класса/переменная класса. Сейчас Страуструп предлагает N4174, и если его примут, то грань между обычными функциями и функциями класса размоется ещё больше.
В других языках — Java и семейство, проектировались, когда уже ООП был немного сформированным. От обычных функций они решили отказаться и, видимо, чтобы не вызывать путаницу, обозвали все методами. Да, потом им пришлось функции все-таки вернуть назад, но, чтобы ничего не сломать, назвали это статическими методами.
Собственно, какова разница между терминами «метод» и «функция»
Правильный ответ — историческая. Как правильно называть сущности в разных языках, нужно уточнять в их документации.
многие автора книг по с++ называют функции класса методами. Как быть?
Тут все сложно. Например, Эккель так делает видимо потому, что он ещё и много книг о Java написал. Также не стоит забывать, что многие книги мы читаем в переводе, а они «исправляют», потому что переводчику так понятнее.
так можно ли называть функции класса с++ методами?
Это точно так же, как использовать мат/обсценную лексику в высшем обществе. Или пытаться объясниться с гопниками языком Тургенева и стихами Пушкина/Блока.
P.S. метод — слово многозначное и вполне можно услышать от
Как правильно называть переменные и функции — Журнал «Код»
Зачем как-то по-особому называть переменные и функции
Вам по-любому придётся как-то назвать переменные и функции. С точки зрения языков программирования, переменные могут быть почти любыми: хоть a, b и c, хоть SuperImportantVariable3000. То же с функциями: они могут быть суперкороткими типа yo(), а могут быть невероятно замороченными вроде getNewPageNumberAndNavigateToThatPage(). Как скажете — так и будет. Тем более что современные текстовые редакторы делают автоподстановку всех названий, так что вам даже не придётся их запоминать.
Но есть три момента:
- Через две недели вы уже забудете, как был устроен ваш код. Если вы написали программу сегодня и вернулись к ней через 14–21 день, вы уже не сможете на ходу вспомнить, за что отвечают разные куски кода. И если по переменной или функции будет понятно, что она делает, то вы себе очень упростите задачу.
- С вашим кодом обязательно будет работать кто-то другой. Вы сделали классную программу, она функционирует, и вы приглашаете кого-нибудь тоже поработать над ней. Он откроет ваш код и должен будет в нём разобраться. Если переменные и функции названы хорошо, ему будет легко всё понять и он быстро вам поможет.
- Это влияет на приём на работу. Если решите связать свою жизнь с программированием, по названиям ваших переменных и функций будут судить о ваших качествах как специалиста. Программа может, конечно, работать и без красивого названия переменных, а вот вас в компанию могут и не позвать.
Три признака программиста-сноба
Как называть переменные
Когда начинаешь писать код, у тебя простые программы, к которым нужны простые переменные: screen, score, text и так далее. Потом проекты становятся сложнее, и переменные нужны всё более сложные: totalScore, totalScoreBefore, totalScoreAfter, totalScoreMaxProgressiveLimit и тому подобные. Тут надо остановиться и подумать вот о чём.
Чем длиннее название переменной, тем тяжелее её набрать без ошибок. Спасает автоподстановка, но если её нет — почти наверняка ваш код не полетит из-за опечатки.
Если вы пишете на JavaScript, то будет ещё хуже: так как он генерирует переменные на ходу, ошибка в переменной totalScoreMaxProgresLimit у него не вызовет подозрений. Он создаст новый элемент с этим названием, и у вас будут две переменные — одна правильная, другая неправильная. Программа запустится, но работать будет непредсказуемо.
Поэтому стремитесь выбирать короткие названия переменных, которые при этом понятны без глубокого вникания. Например, totalScore — итоговый счёт в игре, maxWidth — максимальная ширина. Если есть необходимость хранить много переменных на разных полочках, в группах или еще какими-то пачками, изучите понятия объектов и классов в JavaScript — это то, что вам нужно.
Как называть функции
Функция — это подпрограмма внутри вашей программы, которую вы часто используете. Например, можно написать функцию getNumber(), которая будет выдавать случайное число в нужном вам диапазоне. Или сказать setTimer() — и где-то внутри программы установится таймер, который выполнит то, что необходимо, по завершении отсчёта времени.
Функция может просто сделать свою работу, а может вернуть при этом какое-то значение, переменную, массив или объект. Например, можно дать подпрограмме строку текста, написать алгоритм перевода на иностранный язык, и она будет возвращать переведённый текст.
У функций тоже могут быть какие угодно названия. Но обычно они будут примерно такими:
- shuffle() — скорее всего, перемешает элементы массива;
- saveScore() — сохранит куда-то счёт игры;
- kill() — убьёт что-то;
spawn() — создаст что-то; - loadDatabase() — загрузит какую-то базу данных в память;
- makeBackup() — сделает резервную копию каких-то данных и, скорее всего, сохранит её куда следует;
- getSpeed() — выяснить, с какой скоростью что-то движется. Функция вернёт скорость;
- getUserName() — что-то произойдёт, и функция вернёт имя пользователя;
- getSessionId() — вернёт номер сессии;
- setTimeout() — задать задержку, после которой произойдёт какое-то действие;
- setSpeed() — задать чему-то скорость.
Вы заметите, что из названия функции можно понять, что она сделает и сообщит ли какой-то результат. Например, getScore() вернёт счёт игры, setScore() задаст счёт игры и ничего не вернёт, а clearScore() обнулит счёт игры и тоже ничего не вернёт.
А что с заглавными буквами?
В программировании есть два подхода к оформлению функций и переменных: camelCase и snake_case.
В camelCase переменные из нескольких слов соединяются без пробела, все новые слова пишутся с заглавной: getMoney, renderToFrame, removeFromBase и т. д. Этот подход рекомендуется в JavaScript. Обратите внимание: названия переменных и функций в JavaScript чувствительны к заглавным, то есть переменные getmoney и getMoney — это разные переменные.
Snake_case — это когда слова склеиваются нижним подчеркиванием. Это чаще используют в классах CSS. Примеры: header_marginal, form_success.
Выбирайте тот подход, который характерен для выбранного вами языка. Помните, что потом ваш код будут читать другие люди, и видеть необычно названные функции и переменные им будет тяжеловато.
Как не надо называть ни переменные, ни функции
Программисты не советуют называть переменные и функции креативно, например crazyUnicorn или wonderfulWorld(). Из названий этих функций непонятно, что они делают, возвращают ли они что-то и вообще зачем нужны.
Но, например, unicornCount — нормальная переменная с количеством единорогов. А initWorld() — функция, которая создаёт мир компьютерной игры.
Не называйте функции и переменные словами function или variable. MyVar и superFunction() — плохие варианты, потому что вы сами же через две недели забудете, что эти штуки делают.
Лучше не называть функции и переменные по-русски типа solnce или KYCb() — забудете потом, как они правильно пишутся. А когда ваша программа станет международно признанной, разработчики поблагодарят вас. При этом: если ваша функция делает «кусь», чтобы это ни значило, ее можно назвать bite() или getPiece().
Не делайте названия слишком секретными: переменные p, m, t, z или функция hm() — это слишком коротко. Исключение — когда вы пишете циклы: там используются переменные типа i, n, p — с их помощью считают, сколько раз цикл уже отработал. Но эти переменные создались, исполнили свою роль и уничтожились сразу после закрытия цикла, больше к ним не обращаются.
Общее правило: называйте переменные и функции так, как будто их будут читать совершенно незнакомые люди. Будто завтра вам в отпуск, а за вас код будет доделывать ваш коллега из Индии. Он должен понять ваши переменные и функции. Если сможете так сделать — вас оторвут с руками в любой компании.
Что такое интровертное восприятие?
Интровертное восприятие (SI) является доминирующей когнитивной функцией, определяющей способ, которым определенные типы личности воспринимают и понимают окружающий мир. Все типы используют некоторые вариации функции зондирования, и примерно половина населения функционирует как пользователь Si. Вы сможете идентифицировать их, как только ознакомитесь с их методами обработки.
Давайте предположим, что вы уже знакомы с четырьмя буквами вашего профиля типа личности Майерса и Бриггса и знаете, действуете ли вы как Сенсор или предпочитаете использовать Интуицию. Этот аспект вашего типа личности говорит вам, как ваш мозг обрабатывает поступающую информацию. Все Сенсоры предпочитают использовать свои чувства (обоняние, осязание, зрение, вкус, звук) в очень физическом, практическом способе обучения.
Не знаете свой тип личности? Пройдите тест Typefinder здесь.
Однако, независимо от того, являетесь ли вы Сенсором или Интуитивом, вы будете использовать Сенсорику в большей или меньшей степени. Например, для ESTP предпочтительна функция Sensing. ENTP, с другой стороны, не будут уделять столько внимания информации, поступающей через их чувства, но они все равно могут использовать эти навыки, когда они им нужны. Все аспекты личности существуют в спектре — они не абсолютны.
Итак, теперь мы объяснили букву «S» в слове Si. Откуда взялась буква «i» в этом символе? В этом письме рассказывается о том, как вы используете свое ощущение — независимо от того, обрабатывается ли оно внутри (интровертное ощущение или Си) или гордо выставляется на всеобщее обозрение (экстравертное ощущение или Си). Подробнее об этом ниже.
Последняя часть головоломки решает, использует ли ваша личность Si как доминирующую функцию или вспомогательную, второстепенную или поддерживающую функцию. У ISJ доминирующая когнитивная функция — Si, а у ESJ — вспомогательная когнитивная функция.
Для сравнения, эти типы личности используют функцию Si или Se:
(Si) Интровертная сенсорика как доминантная функция: ISFJ, ISTJ
(Si) Интровертная сенсорика как вспомогательная функция: ESFJ, ESTJ
(Se) Экстравертная сенсорика как доминантная функция: ESTP, ESFP
(Se) Экстравертная сенсорика как вспомогательная функция: ISTP, ISFP
Другие типы имеют Si как третью или четвертую функцию. Это означает, что они могут обращаться к нему в случае необходимости, но он совсем не используется в их повседневных процессах.
Подробнее: Руководство для начинающих по пониманию когнитивной функции
Си и Се заходят в бар
Сенсоры используют пять чувств в качестве системы отсчета для восприятия поступающей информации, но не все Сенсоры обрабатывают ее одинаково. В этом отличие экстравертного восприятия от интровертного.
Экстравертные Сенсоры воспринимают данные через конкретные физические и внешние факты. Вам нужны факты, которые ваши чувства представляют вам, чтобы понять, на что вы смотрите, и это несколько быстрее преобразуется в решения. Прямая связь пользователя Se с органами чувств позволяет ему быстрее реагировать и направлять больше энергии на выполнение поставленной задачи, а также обеспечивать обратную связь в режиме реального времени.
Интровертные сенсоры фильтруют данные и переживания через заранее организованный набор внутренних воспоминаний и ощущений, таких как боль или голод, сравнивая и противопоставляя то, что происходит, всему, что мы испытывали раньше. Это позволяет нам формировать субъективные мнения и принимать решения, но для их принятия требуется немного больше времени.
Еще один способ увидеть эти различия — заметить, что пользователи Se работают преимущественно с кратковременной памятью. Пользователи Si работают с долговременной памятью. Пользователи Se будут воспринимать информацию и избавляться от старых воспоминаний, освобождая для них место. Пользователи Si будут принимать информацию и обдумывать ее. Подумайте об этом. Задержитесь на этом.
Хороший способ думать об этом как о ящике воспоминаний.
Нам нужно убедиться, что новые данные попадают в нужное поле и должным образом связаны со всем, что мы уже знаем. Это много мелких корректировок. Но в результате мы закрепляем его в долговременной памяти, и старые воспоминания теперь поддерживают его. Все наши воспоминания остаются основанными на связях, которые мы установили между ними.
Пользователи Si хранят свои данные в ящиках и складывают их глубоко и широко. Вы узнаете их по тому, о чем они обычно говорят. Если кто-то рассказывает историю 20-летней давности (а вы уже слышали ее раньше!), скорее всего, это Си. Если кто-то предпочитает болтать о том, что происходит здесь и сейчас, скорее всего, это Se.
Нестандартная работа
Мы справляемся с неизвестным, сравнивая, противопоставляя и экстраполируя его с чем-то уже знакомым нам. Как еще мы собираемся положить его в правильную коробку? По мере того, как входящие данные представляются, мы ищем ссылку, с которой можно их связать. Все взаимосвязано, все является шаблоном, и мы соответствующим образом упорядочиваем наш мир.
Вы найдете меня на новой работе, сгорбившись над своим столом, просто наслаждаясь всеми поступающими данными. Дать перевариться. Переставляя кусочки снова и снова, пока не сформируется узор, расцветает рутина, и из хаоса возникает внезапная гармония. Я нашел нужные коробки, выровнял их по новой системе, и теперь мы можем выходить и доминировать на работе.
Интроверты обращаются к своему внутреннему миру, когда они переживают жизнь. Постоянно собирая и упорядочивая новые данные в текущем наборе ящиков, мы будем расширять и иногда реорганизовывать ящики по мере того, как узнаем что-то новое. Небо не всегда голубое. Мы добавляем каждый новый цвет по мере того, как мы его воспринимаем, а ящик на небе соответствующим образом перестраивает и маркирует свои файлы.
Однако, если мы точно знаем, потому что так говорит наш ящик, что на небе всегда бывает только одно солнце, и мы просыпаемся с двойным восходом солнца, наш основной ящик трескается. Мы в основном обездвижены до тех пор, пока эти новые данные не могут быть либо выровнены с коробкой, либо мы не создадим совершенно новую коробку для их хранения.
Пакет льгот
Si — это терпеливая и щедрая функция. Си-личности умеют распознавать несоответствия или изменения. Как упоминалось ранее, внутренняя обработка создает у пользователя Si долговременные и точные воспоминания. Это означает, что они учатся на своих ошибках и редко их повторяют.
Пользователи Si лояльны, ответственны и традиционны. Они высоко ценят авторитет и предпочитают системы ценностей, поддерживающие его. Пользователи Si могут быть материально бережливыми и утверждать, что «если это не сломано, не чините это». Как правило, это люди с низким уровнем обслуживания, которые избегают драмы.
Пользователи Healthy Si могут сознательно обращаться к своим более счастливым воспоминаниям, решая, что может означать новая информация. Они лучше создают и адаптируют новые традиции и опыт, когда благоприятная среда стабильна и предсказуема. Их навыки планирования и организации в сочетании с минималистским отношением создают желанное открытое пространство для новых данных и не дают им перегружаться.
После того, как пользователи Si приведут свои ящики в порядок, они смогут легко достичь состояния потока, помещая их «в зону» в режиме реального времени. Это похоже на глубокое счастливое рождественское утро или явное плавное выполнение задачи на работе.
Понимание того, как функционируют наши личности, и связи, которая поддерживает и направляет наше восприятие мира, поддается многим моментам «ага». Если вашей доминирующей когнитивной функцией является Si, вы стареете с достоинством, опираясь на историю, чтобы сделать будущее лучше.
Интровертное восприятие/ощущение (Si)
Доктор А.Дж. Drenth
Интровертное восприятие/ощущение (Si), которое служит доминирующей функцией для типов личности ISTJ и ISFJ, является одной из наименее изученных из восьми функций Майерс-Бриггс. В этом посте я попытаюсь прояснить природу и роль этой довольно загадочной функции, включая ее различные проявления в типах SJ и NP. Мы также сравним и противопоставим его экстравертной интуиции (Ne) и интровертной интуиции (Ni).
Прежде чем сосредоточиться на интровертном ощущении или на том, что Юнг назвал интровертным ощущением, нам нужно сначала рассмотреть контекст, в котором оно возникает. Согласно теории типов, основанной на теории противоположностей Юнга, для каждого типа, в котором Si является частью стека функций, мы также находим его функциональную противоположность, экстравертную интуицию (Ne). Таким образом, при изучении природы интровертного восприятия может быть полезно сопоставить его с Не.
Интровертное восприятие/ощущение (Si) и экстравертная интуиция (Ne)Хотя Ne можно использовать синтетически для создания новых связей, он также обладает сильным расходящимся элементом. Ne побуждает нас исследовать больше вариантов и возможностей до бесконечности. Без проверки реальностью других функций необузданная Не может легко привести к своего рода бесцельному блужданию по жизни. Таким образом, одна из ролей интровертного восприятия состоит в том, чтобы служить противовесом и проверкой реальности Не. Он делает это посредством запоминания фактов и жизненного опыта. Мы все слышали фразу: «Вы учитесь на собственном опыте». Si предоставляет нам доступ к истории нашей жизни, а также к другим видам полученной информации, что, как мы надеемся, предотвратит повторение одних и тех же ошибок дважды.
Также важно понимать, что Si будет проявляться несколько по-разному в зависимости от его относительного положения в стеке функций. Для Si-доминантных типов или вспомогательных типов, которых Дэвид Кейрси коллективно назвал «Стражами» (SJ-типы), Si будет играть другую роль, чем в более либеральных и свободных типах NP. В типах SJ Si часто переводится в приверженность существующим фактам, традициям, мировоззрениям или методам . Эти типы, как правило, не очень хорошо подготовлены для создания своих собственных идей или теорий, и при этом они не очень заинтересованы в этом, что потребует более сильного Ne. Они больше заботятся о том, чтобы их убеждения и поведение соответствовали существующим стандартам, чем о формулировании собственного набора стандартов. Во многих отношениях они зависят от того, что уже испытано и установлено, от систем мышления, которые дают им чувство последовательности и безопасности.
Когда Introverted Sensing находится ниже в стеке, как в случае с типами NP, оно не может обеспечить ту же степень немедленной и постоянной уверенности в их убеждениях, которую мы наблюдаем у типов SJ. Это связано, по крайней мере отчасти, с тем, что НП предпочитают активно формировать собственные теории о мире, меньше полагаясь на традиции и условности. Следовательно, для типов NP информация о Si, используемая для помощи и улучшения их Ne, часто превышает 9.0083 личный в природе. Типы NP очень доверяют своему личному опыту, что делает их взгляды одними из самых своеобразных и индивидуалистичных из всех типов.
Интровертное восприятие может помочь личностному росту и развитию НП типа , вспоминая уроки, извлеченные из прошлого опыта. Вспоминая то, что они уже исключили из прошлого опыта или изучения, НП чувствуют, что они, пусть и довольно медленно, приближаются к уверенности. Si также может помочь NP выработать эффективные привычки . По мере того, как НП наблюдают за собой с течением времени, они могут определить, какое поведение позволяет им функционировать наиболее оптимально и чувствовать себя наиболее удовлетворенными. Затем, когда они начинают сбиваться с пути, их Si может вмешаться и напомнить им о том поведении, которое может помочь им вернуться в более сбалансированное и здоровое состояние. Поскольку Si уступает типам ENP, им может быть труднее всего развивать и придерживаться здоровых привычек.
Наконец, одной из функций интровертного восприятия, которую чаще всего упускают из виду, является его роль в восприятии внутренних телесных ощущений — тела, ощущаемого и переживаемого изнутри. Больше, чем любая другая психологическая функция, Si обеспечивает доступ к нашему самому основному чувству «бытия», помимо мысли или внешних стимулов . Исторически сложилось так, что восточные философские и религиозные традиции гораздо лучше исследовали этот аспект человеческого опыта, чем западные. Это измерение Си задействовано во время действий, требующих пристального внимания к внутреннему состоянию тела, таких как йога, Тай-Чи или медитация.
Интровертное восприятие (Si) и интровертная интуиция (Ni) Поскольку Интровертное Ощущение является Воспринимающей функцией, его можно понимать, как и Интровертную Интуицию (Ni), как действие скорее
Отличный пример иррационального элемента интровертного восприятия можно найти в книге Женщина, которая не может забыть . Там автор объясняет свою сверхъестественную способность точно вспоминать детали каждого дня своей жизни, включая связанные исторические даты и события. В то время как ее способности памяти, несомненно, беспрецедентны, что наиболее показательно в отношении ее Si, так это тот факт, что она не может это контролировать . Она сообщает, что испытывает сильное разочарование, потому что ее разум постоянно воспроизводит воспоминания случайным образом, несмотря на все ее усилия избавиться от них и сосредоточиться на настоящем. Даже если это экстраординарно, ее опыт говорит о пассивном, непроизвольном способе, которым Си записывает и вспоминает информацию. Это помогает объяснить, почему си-доминантные типы легко вспоминают всевозможные случайные детали и факты .