Содержание статьи

Функция в коде должна передавать смысл своими именем и структурой. Имя функции должно содержать глагол, отражающий выполняемое действие, и существительное или контекст, указывающий объект воздействия. Например, getUserData точнее, чем fetch, а calculateInvoiceTotal точнее, чем calculate.
Систематическое использование стилей именования упрощает чтение кода и снижает вероятность ошибок при совместной работе. В JavaScript и Java чаще применяют camelCase, в Python – snake_case, а в C# – PascalCase для публичных методов. Важно сохранять выбранный стиль в рамках всего проекта.
При добавлении функций с возвращаемыми значениями стоит включать в название уточнение результата: isUserActive, getOrderSum, createReport. Это помогает сразу понять назначение функции без изучения тела кода. Для действий, изменяющих состояние, рекомендуется использовать глаголы с побочным эффектом: updateSettings, removeFile.
Сокращения допустимы только для стандартных терминов, известных всем участникам проекта. Неочевидные аббревиатуры и односимвольные имена затрудняют поддержку и рефакторинг. Повторение слов в именах, не отражающих различий между функциями, следует избегать.
Выбор глагола для имени функции

Глагол в имени функции должен точно описывать действие, которое она выполняет. Для получения данных используют get, fetch, load. Для изменения состояния – update, set, modify. Для создания объектов или записей – create, add, insert. Для удаления – delete, remove, clear.
Использование однозначного глагола снижает вероятность недопонимания при чтении кода. Например, fetchUserData сразу указывает на извлечение информации, а updateUserData – на модификацию существующей записи. Избегайте обобщенных слов вроде process, handle или do, они не раскрывают сути действия.
При сложных операциях, объединяющих несколько действий, стоит выбрать глагол, отражающий основной эффект функции. Если функция одновременно фильтрует и сортирует данные, предпочтительно выбрать sortFilteredData, а не просто sort или filter.
Для функций-предикатов используют глаголы, задающие вопрос: is, has, can. Например, isFileAvailable или hasAccessRights. Это облегчает чтение условий и делает код самодокументируемым.
Форматирование имени: camelCase, snake_case и PascalCase

Выбор стиля именования влияет на читаемость и согласованность кода. Каждый стиль применяется в определенных языках и типах функций.
- camelCase – первая буква маленькая, каждое последующее слово с большой: calculateTotalPrice. Используется в JavaScript, Java для приватных методов и переменных.
- snake_case – слова разделяются подчеркиванием, все буквы маленькие: calculate_total_price. Распространен в Python и Ruby, особенно для функций и переменных.
- PascalCase – каждое слово с заглавной буквы: CalculateTotalPrice. Часто применяется для публичных методов и классов в C#, Java, TypeScript.
Для единообразия проекта важно:
- Выбрать один стиль для всех функций в модуле или проекте.
- Сохранять стиль при добавлении новых функций или рефакторинге существующих.
- Использовать PascalCase для публичных API и camelCase/snake_case для внутренних функций.
Смешение стилей внутри одного файла затрудняет поддержку и ведет к ошибкам при автодополнении и поиске по коду.

Указание типа действия и контекста в имени

Имя функции должно отражать основное действие и объект или контекст, с которым оно связано. Например, вместо processData лучше использовать calculateInvoiceTotal или filterActiveUsers. Это сразу показывает, что функция делает и над чем.
Для функций, работающих с конкретными сущностями, включайте название объекта в имя: updateUserProfile, deleteOrderRecord, sendEmailNotification. Такой подход облегчает поиск функции по коду и уменьшает риск ошибок при использовании.
Если функция выполняет преобразование данных, указывайте источник и результат: convertCsvToJson, parseHtmlToText. Для функций с побочными эффектами добавляйте глаголы действия: saveToDatabase, removeFromCache.
При работе с коллекциями используйте множественное число для объектов: getAllUsers, deleteSelectedFiles. Это помогает понять объем действия без необходимости читать тело функции.
Сокращения и аббревиатуры: когда допустимо

Сокращения в именах функций допустимы только для общеизвестных терминов и стандартных сокращений: URL, ID, HTML, JSON. Например, getUserID, parseJSON или fetchHTMLContent. Использование непонятных аббревиатур затрудняет чтение кода и его поддержку.
Для сокращений следует соблюдать единый стиль: все буквы сокращения в верхнем регистре (HTTPRequest), либо полностью в нижнем для интеграции с camelCase или snake_case (parseJsonData, load_html_template). Несогласованность приводит к ошибкам при автодополнении.
Не используйте сокращения для действий и объектов, если их значение не очевидно всем участникам проекта. Например, calcInvTotal вместо calculateInvoiceTotal ухудшает читаемость и увеличивает вероятность неправильного использования функции.
Аббревиатуры полезны для часто встречающихся терминов и стандартных библиотек, но каждая новая сокращенная форма должна быть документирована, чтобы команда понимала её назначение и контекст применения.
Именование функций с возвращаемыми значениями

Функции, возвращающие значение, должны включать в имя уточнение результата. Примеры: getUserName, calculateOrderTotal, fetchConfigSettings. Это позволяет сразу понять тип данных, который вернет функция, без изучения тела кода.
Для функций-предикатов используйте глаголы, задающие вопрос: is, has, can. Например, isFileReadable, hasAdminRights, canExecuteTask. Такой подход облегчает чтение условий и делает код самодокументируемым.
Если функция возвращает коллекцию или список объектов, включайте во имя множественное число: getAllUsers, fetchActiveOrders. Это помогает отличать функции с одиночным результатом от функций, работающих с массивами данных.
Для преобразующих функций включайте тип преобразования в имя: convertJsonToXml, parseCsvToArray, formatDateToString. Это обеспечивает ясность назначения и сокращает необходимость комментариев.
Избегание двусмысленности и повторов в названиях

Имена функций должны быть однозначными и не допускать интерпретации. Функция processData слишком общая и не показывает, что именно делает функция. Лучше использовать parseUserData или calculateInvoiceTotal.
Повтор слов в названиях создаёт лишнюю нагрузку на восприятие кода. Вместо saveUserData и saveUserInfo используйте одно имя, соответствующее конкретной задаче: saveUserProfile. Это уменьшает вероятность ошибок при вызове функций.
При работе с разными типами объектов включайте в имя контекст: deleteTemporaryFiles, deleteArchivedRecords. Так сразу видно, какие данные обрабатываются, и исключается путаница с аналогичными функциями.
Для функций с похожим действием, но разными входными данными, используйте уточняющий суффикс: parseCsvData, parseJsonData, parseXmlData. Это упрощает навигацию по коду и облегчает поддержку.
Вопрос-ответ:
Почему важно включать глагол в имя функции?
Глагол в имени функции описывает действие, которое она выполняет, и помогает сразу понять назначение кода. Например, getUserData указывает на получение данных пользователя, а updateUserProfile — на изменение информации. Использование точного глагола сокращает время на изучение функции и уменьшает ошибки при её вызове.
Когда стоит использовать snake_case, а когда camelCase или PascalCase?
Выбор стиля зависит от языка и типа функции. В Python и Ruby чаще используют snake_case: calculate_total_price. В JavaScript и Java для внутренних методов применяют camelCase: calculateTotalPrice. PascalCase подходит для публичных методов и классов в C# или TypeScript: CalculateTotalPrice. Сохранять выбранный стиль важно для читабельности и согласованности проекта.
Как правильно обозначать функции, которые возвращают логическое значение?
Для функций-предикатов используют глаголы, задающие вопрос: is, has, can. Например, isFileAvailable проверяет доступность файла, hasAdminRights указывает на права администратора, canExecuteTask сообщает о возможности выполнения задачи. Такой подход делает условия кода понятными без изучения тела функции.
Можно ли использовать сокращения и аббревиатуры в именах функций?
Допустимо использовать только общепринятые термины и стандартные аббревиатуры, такие как URL, ID, JSON. Например, getUserID или parseJSON. Все новые сокращения должны быть очевидны и документированы, чтобы не возникало путаницы при чтении кода. Неочевидные аббревиатуры снижают читаемость и увеличивают риск ошибок.
Как избежать двусмысленности при именовании функций?
Следует выбирать имена, отражающие конкретное действие и объект: deleteTemporaryFiles лучше, чем deleteData. Не повторяйте слова в разных функциях для разных целей — это уменьшает вероятность ошибок. Для функций с похожей логикой, но разными входными данными, используйте уточняющие суффиксы: parseCsvData, parseJsonData, parseXmlData. Такой подход облегчает навигацию и поддержку кода.
