Функции - Степень идентичности (версия 2 от 29.09.07)
Разработка - Математика и алгоритмы
Пока хорошо проработаны только первые три (имена, параметры, код), но их совокупность позволяет выделить некоторые значимые термины для классификации.
Данная классификация послужит методической основой для некой универсальной и автоматически пополняемой библиотеки функций из наиболее популярных конфигураций.
Рейтинг будет вычисляться просто - если одна и та же функция встречается в двух конфигурациях, то её рейтинг = 2.
Функции – Степень идентичности (версия 2 от 29.09.07)
Введение
Что стоит за словами "Эти две функции одинаковы"? Насколько одинаковы эти функции? Могут ли считаться одинаковыми функции, вся разница в которых заключается лишь в том, что в одной использованы английские ключевые слова, а в другой русские?
Существует огромное количество хорошо написанных универсальных функций и такое же огромное количество "поделок" и "подделок", написанных "на скорую руку". Но почти всегда, каждый новый программист радостно кидается писать свою неповторимую функцию, вместо того, чтобы взять уже готовый проверенный вариант.
Данная классификация призвана сформировать некоторый общий словарь терминов, однозначно определяющий степень схожести двух произвольных функций, вычисленную несколькими произвольными инструментами для сравнения функций, или используемый при визуальном анализе кода.
Необходимые ограничения
В данной классификации вопрос о синтаксической правильности кода функции не поднимается в принципе - функции априори считаются синтаксически корректными. Исходя из этого утверждения, тело функции и тело процедуры можно считать абсолютно аналогичным (несмотря, на то, что функция обязана возвращать значение)
В данной классификации не рассматривается вопрос о видимости функции из других модулей, поэтому ключевое слово Экспорт нас не интересует.
В описания синтаксиса не включены ключевые слова, обозначающие начало функции и её завершение (Функция, Function, КонецФукнции, EndFunction). Предполагается, что все эти ключевые слова могут быть заменены на пару Функция-КонецФункции.
Качество и наличие комментариев являются предметом другой классификации.
В рамках данной классификации аналогично может быть рассмотрена идентичность процедур.
Общее представление об идентичности функций
Идентичность функций будет рассматривается в следующих относительно независимых разрезах:Идентичность по наименованию
Идентичность по параметрам
Идентичность по реализации
Идентичность по возвращаемым значениям
Идентичность по результатам
Идентичность по наименованию
Функция <ИмяФункции>([<ПараметрыФункции>])
Одноименные функции – функции с совпадающими наименованиями без учета регистра.
Разноименные функции – функции с различающимися именами.
Идентичность по параметрам
ПараметрыФункции = [<Параметр>]*[,<Параметр>]
Параметр = [[Знач] <ИмяПараметра>[=<ДефЗнач>],]
Т.к. у нас нет возможности проверить тип параметра, будем ориентироваться только на имя параметра, признак передачи по значению, наличие значения по умолчанию, а также на количество параметров.
Необходимо отметить, что совпадение количества параметров говорит о идентичности по параметрам, а вот анализ признака передачи по значению и наличия значения по умолчанию может говорить о степени сопоставимости.
Пока только проработан вариант полного совпадения количества и дополнительных характеристик параметров.
Полная идентичность по параметрам – количество параметром, их название и дополнительные характеристики совпадают.
Идентичность по параметрам – количество параметров и дополнительные характеристик совпадают, а вот наименования параметров не совпадают.
Идентичность по реализации
Полная идентичность по реализации – у двух функций тело функции полностью совпадает без учета незначащих символов и комментариев.
Идентичность реализации – идентичные по параметрам функций полностью совпадают без учета незначащих символов и комментариев, но в случае приведения имен параметров к одним значениям с соответствующей заменой имен в теле функции.
Идентичность по возвращаемым значениям
Анализу подлежат все возможные значения-параметры обязательного оператора Возврат.
Идентичность по результатам
Наиболее сложный вариант анализа функций. Поэтому скорее всего идентичность по результату придется рассматривать как закономерный результат идентичности по параметрам и коду.
В идеале хотелось бы иметь набор тестов. который бы проверял идентичность результата по всем значениям входных параметров двух функций.
Обобщенная степень идентичности
Объединение всей совокупности классификаций по идентичности позволяет ввести обобщенные понятия степени идентичности.
Полная идентичность – две функции полностью идентичны по параметрам и по коду.
Идентичность – две функции идентичны по параметрам и по коду.
Синонимичные функции – две функции идентичны или полностью идентичны, но различаются наименованиями.
Заключение
В этой версии классификации есть большой простор для новых терминов, но практическая ценность данной работы может быть уже невелика.
Для идентичных функций (не полная идентичность) необходимо проработать такую ситуацию, когда в теле функции изменяется переменная, предполагаемая как локальная, но не закрытая от изменения оператором Перем; В результате замены одной идентичной функции на другую и наличии совпадения глобальной переменной и «незакрытой» локальной переменной, могут возникнуть проблемы.
Специальные предложения
См. также
1С:Предприятие через Интернет. 1С:Fresh Промо
Ведение бухгалтерского и налогового учет, сдача отчетности, управление бизнесом из любой точки мира. Привычные программы «1С» через Интернет без приобретения коробочных программ.
Готовые переносы данных из различных конфигураций 1C Промо
Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.
Программы для исполнения 488-ФЗ: Маркировка товаров Промо
1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.
Запрос SQL для нахождения самого большого простого числа меньше заданного 6
16.08.2019 1699 alex_bitti 18
Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.10.х и УТ 11.4.10.х! Промо
Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!
29700 руб.
Подборка решений для взаимодействия со ФГИС «Меркурий» Промо
С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.
Подборка программ для взаимодействия с ЕГАИС Промо
ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.
Перенос данных БП 2.0 => УТ 11 / КА 2 / ERP 2 (перенос остатков, документов и справочников из "1С:Бухгалтерия предприятия 8", ред. 2.0 в "1С:Управление торговлей 8", ред.11 / КА 2 / ERP 2). Обновлено до УТ 11.4.10.х, КА 2.4.10.х, ERP 2.4.10.х! Промо
Перенос позволяет загрузить в УТ 11 / КА 2 / ERP 2 документы за выбранный период, справочную информацию и остатки по счетам бух. учета. Переносятся остатки денежных средств, взаиморасчетов, остатки товаров и материалов на складах. Переносятся девятнадцать основных видов документов за выбранный период и вся нормативно-справочная информация. Есть фильтр по организации. Если нужно переносить что-то дополнительно, то обычно бесплатно дорабатываю правила (перед покупкой согласуйте необходимые доработки).
29700 руб.
Новый раздел на Инфостарте - Electronic Software Distribution Промо
Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.
- Низкие цены, без скрытых платежей и наценок
- Оперативная отгрузка
- Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
- Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)
1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо
СПАРК помогает предотвратить мошенничество со стороны компаний и предпринимателей, благодаря актуальным сведениям о компаниях и системе выявления факторов риска.Сервис позволяет управлять налоговыми рисками и комплексно оценивать благонадежность контрагентов.
Как писать код? Технологии древних цивилизаций, или все новое - это хорошо забытое старое 71
23.01.2019 9180 starik-2005 43
Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо
Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.
29700 руб.
Роберт Мартин: "Будущее программирования" / Robert Martin: "The Future of Programming" 87
14.01.2019 11411 Vladimir Litvinenko 38
Разработка и сценарное тестирование с Vanessa-ADD. Концепция, теория и сквозной пример создания сценария 226
09.01.2019 29398 Vladimir Litvinenko 69
Перенос документов и справочников ERP 2 / КА 2 / УТ 11 => БП 3.0 Промо
Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Предоставляем техподдержку по всем вопросам данного обмена. Можем подключиться к вам удаленно для разбора ситуаций. Оперативно обновляем при выходе новых релизов 1С. Бесплатные обновления в течение полугода.
19700 руб.
Многоязычное программирование: создание систем с использованием нескольких языков 17
09.01.2019 6476 kalyaka 33
Вакансия Автор новостных обзоров на тему 1С и бухучета, По совместительству Промо
Редакция Infostart.ru будет рада сотрудничеству с 1С-специалистом, умеющим и любящим излагать свои мысли в письменной форме. Если вы работали в IT-изданиях или имеете опыт ведения технологического блога/канала/группы, если сможете сделать обзор обработок из каталога infostart.ru/public/all/, то у вас большое преимущество.
Ректальное программирование: основы для практикующих 1С-программистов 300
19.12.2018 33483 for_sale 342