Почему статический метод считается методом?

Я пишу объяснение некоторого кода для курса, и случайно использовал слова method и function взаимозаменяемо. Я решил вернуться и исправить формулировку, но наткнулся на дыру в моем понимании.

Из того, что я понимаю, подпрограмма - это function, если она не действует на экземпляр класса (ее эффект ограничен его явным вводом / выводом), и это method, если она работает экземпляр класса (он может вызывать побочные эффекты на экземпляре, которые делают его нечистым).

Здесь хорошая дискуссия по теме . Обратите внимание, что согласно принятым определениям ответа, static method должен фактически быть функцией, потому что экземпляр никогда не передается неявно, и он не имеет доступа ни к каким членам экземпляра.

Имеется ли в виду, что разве static methods не должно быть на самом деле функцией?

По определению они не действуют на конкретные экземпляры класса; они только «привязаны» к классу из-за родства. Я видел несколько хорошо выглядящих сайтов, которые называют статические подпрограммы «методами» ( Oracle , Fredosaurus , ProgrammingSimplified ), так что либо они все пропускают терминологию, или я что-то упускаю (мое предположение - последнее).

Я хотел бы убедиться, что я использую правильную формулировку.
Кто-нибудь может это прояснить?

135
задан Community 23 May 2017 в 12:26
поделиться