Что касается вашего второго вопроса, мне не известны какие-либо опубликованные исследования или лучшие практики. Что касается первого вопроса, я могу предложить некоторые наблюдения из личного опыта с похожим долгоживущим продуктом, где «внутренние» и «внешние» имена иногда различаются.
Имена , которые я бы очень хотел , чтобы исправить являются «омофонами», где одно имя используется как внутри , так и снаружи для различных вещей. Это может быть действительно запутанным, особенно если две вещи не полностью различаются (так что контекст помогает устранить неоднозначность). Одним (абстрактным) примером этого в моем личном опыте является то, что внутренне у вас есть что-то вроде a, Foo
которое представляет собой совокупность нескольких FooEntity
; внешне только последний виден и называется «Foo». Мне потребовалось некоторое время, чтобы понять, что, когда в руководстве пользователя говорилось о нескольких «Foo», это фактически означало «несколько» FooEntity
(в одном Foo
), если это все еще имеет какой-то смысл для вас.
Во-вторых, я хотел бы исправить любые «синонимы», где какое-то внешнее имя использовалось внутренне. Как в именах переменных, частях имен методов / функций и так далее. Это часто случается, когда разработчики внедряют что-то непосредственно из описания требований клиента и забывают «переводить» имена. Как только это происходит, «неправильное» имя также имеет тенденцию распространяться, потому что другие разработчики копируют / вставляют часть этого кода для использования в качестве шаблона для нового кода, например. Эти синонимы не так запутаны, но они могут раздражать, потому что, если вы ищете в коде какие-либо ссылки на Bar
вас, возможно, следует иметь в виду, что некоторые части могут ссылаться на него какQux
так что вам придется искать дважды. (Это может быть хуже в динамически типизированных языках, чем в статических, хотя, поскольку вы должны искать по частям имени переменных / функций / ..., а не по имени их типа.) Что касается обратного случая «синонимов» ”, Где внутреннее имя использовалось внешне: это происходит не так часто, так как сотрудники службы поддержки клиентов и т. Д. Обычно менее осведомлены о внутренних именах, хотя я предполагаю, что это сбивает с толку клиентов, когда это происходит.
Если вы можете избежать или исправить хотя бы две вышеупомянутые ситуации, я не уверен, стоит ли вам заходить так далеко, чтобы все внутренние имена совпадали с внешними. Вероятно, есть веская причина, по которой внутренние имена также не изменились, когда внешнее имя было изначально отличным от внутреннего. По моему личному опыту, эта веская причина - необходимость поддержки более старых версий продукта; может быть трудно объединить исправление ошибки из версии, предшествующей очистке имен, с самой последней версией, если потребуется изменить большой объем кода.