Що стосується вашого другого питання, я не знаю жодного опублікованого дослідження чи найкращої практики. Що стосується першого питання, я можу запропонувати деякі спостереження з особистого досвіду щодо подібного довгоживучого продукту, де «внутрішні» та «зовнішні» назви іноді різняться.
Імена, які я дуже хотів би виправити, - це «гомофони», де одне ім’я використовується як внутрішньо, так і зовні для різних речей. Це може бути дуже заплутаним, особливо якщо дві речі не зовсім різні (такий, що контекст допомагає роз'єднуватись). Один (абстрагований) приклад цього в моєму особистому досвіді - це те, коли внутрішньо у вас є щось на кшталт, Foo
яке є сукупністю множин FooEntity
; зовні видно лише останнє і називається "Foo". Мені потрібно було деякий час, щоб зрозуміти, що коли в керівництві замовника говорили про декілька "Foo", це насправді означало кілька FooEntity
(в одному Foo
), якщо це все-таки має для вас сенс.
По-друге, я хотів би виправити будь-які «синоніми», де якесь зовнішнє ім’я було використано внутрішньо. Як і у назвах змінних, частинах назв методу / функцій тощо. Це часто трапляється, коли розробники реалізують щось безпосередньо з опису вимог замовника і забувають "перекласти" імена. Як тільки це станеться, «неправильне» ім'я також має тенденцію до поширення, оскільки іншим розробникам трапляється копіювати / вставляти частину цього коду для використання в якості шаблону для нового коду, наприклад. Ці синоніми не так заплутані, але вони можуть дратувати, тому що якщо ви шукаєте код для будь-яких посилань на Bar
вас, можливо, потрібно мати на увазі, що деякі частини можуть посилатися на нього якQux
, тому вам доведеться шукати двічі. (Це може бути гірше в динамічно набраних мовах, ніж статичні, оскільки вам потрібно шукати по частинах імені змінних / функцій / ..., а не по імені їх типу.) Що стосується зворотного випадку "синонімів ", Де внутрішнє ім'я використовується зовні: це, як правило, не так часто, оскільки працівники служби підтримки клієнтів і так далі, як правило, менш обізнані про внутрішні імена, хоча я припускаю, що це заплутає клієнтів, коли це відбувається.
Якщо ви можете уникнути або виправити принаймні дві вищезгадані ситуації, я не впевнений, чи варто вам зайти так, щоб усі внутрішні імена були однаковими із зовнішніми. Напевно, є вагома причина, чому внутрішні імена також не були змінені, коли зовнішнє ім'я в першу чергу було відмінним від внутрішнього. На мій особистий досвід, цією вагомою причиною є необхідність підтримувати старіші версії продукту; може бути важко об'єднати виправлення помилки від версії очищення до імен до останньої версії, якщо багато коду потрібно змінити.