Я понимаю, что в соответствии со спецификацией C ++ не существует такой вещи, как «метод», и некоторые (многие? Большинство?) Программисты C ++ считают «метод» Java-измом. С другой стороны, даже на форуме C ++ люди, кажется, говорят о методах без подергивания. Я ищу известные соглашения или общие практики в отношении этой терминологии.
Я документирую API, который имеет версии C ++ и Java. Разработчики фактически сохранили одинаковые имена классов и методов / функций-членов между ними, вероятно, для удобства переноса и тестирования. Из-за этого часть того, что должно быть задокументировано об этих API, находится «над» выбором языка; Мне нужно уметь вообще говорить о Foos и Bars, с их методами baz () и mumble () ...?
Если я расскажу о методах, которые Java-программисты сочтут естественными, и, похоже, программисты на C ++, вероятно, поймут, но некоторые сочтут это неправильным. Мой вопрос: насколько это отвратительно на практике ? Как обычно обсуждаются функции-члены C ++ в контексте «общего ООП», а не в специфических для C ++? Есть ли лучший способ говорить о функциях-членах так, чтобы это не было неверно ни для одного языка? («Функции-члены» немного многословны.)
Это не опрос общественного мнения; Я пытаюсь определить, существуют ли реальные соглашения или общие практики для решения этой проблемы.
Мне известен этот вопрос , но он касается ООП в целом и не спрашивает о конкретных языках.
источник
Ответы:
Почему бы вам не включить объяснение (очень похожее на то, что вы сделали в своем вопросе) во вводную часть документации, например, в раздел « Соглашения »? Затем вы могли бы объяснить, что термин «метод», используемый в вашей документации, подразумевается в общем смысле метода (Java), функции-члена (C ++), ... поскольку документация применима ко всем реализациям.
источник
Ну, ты не будешь казнен за это.
Жалоба в мире C ++ - это не педантичность, а двусмысленность. В пустыне так много разных «методов», в зависимости от того, о чем вы говорите, и многие из нас предпочитают придерживаться стандартной терминологии, чтобы избежать недопонимания позже. Это примерно означает «статическая / [нестатическая] [чистая] виртуальная / [не виртуальная] член / [бесплатная] функция».
Если вы вместо этого напишите «method» в своей документации, некоторые программисты на C ++ могут жаловаться на то, что не совсем понятно, о чем вы говорите, или беспокоиться о том, что, если вы не знакомы с этим соглашением C ++, чего еще вам не хватает?
Но я уверен, что есть миллионы профессиональных программистов на C ++, которые сами не подозревают, что это даже вещь. Это большой старый мир.
Вы не будете казнены за это.
источник
Eiffel называет их рутинами или функциями , C ++ называет их функциями-членами и (почти) каждый отдельный язык ОО, когда-либо созданный за всю историю вычислений, как до, так и после C ++, называет их методами , так что последний термин обычно следует понимать даже Программисты на C ++ (и Eiffel), если они действительно никогда не слышали о Simula, Smalltalk, Self, Objective-C, Newspeak, Java, C #, VB.NET, PHP, Python, Ruby, ECMAScript / JavaScript, Scala, CoffeeScript,…
источник