Чи має сенс використовувати в ідентифікаторах "ys" замість "ies", щоб полегшити функцію пошуку та заміни? [зачинено]


9

Хоча граматично неправильно, при написанні ідентифікаторів для функцій, змінних тощо має сенс просто додати "s" до множини слів, що закінчуються на Y? Моя причина цього полягала в тому, що якщо вам потрібно знайти і замінити, наприклад, заміну "компанії" на "постачальника", "компанія" відповідатиме як формам однини, так і множини (" компанія та" компанія "), тоді як якщо множина було написано правильно, вам доведеться провести два окремі пошуки.


8
Що з дітьми, мишами, ножами, вовками, чоловіками, жінками, дружинами та зубами? Все діє, щоб уникнути жахливих «двох окремих пошуків» .
Tulains Córdova

3
Я частково ставлюсь до вовків над вовками ...
Джиммі Хоффа

2
Ви дійсно плануєте дуже часто перейменовувати ідентифікатори у своєму робочому процесі? Здається, трохи зайвого, щоб взяти на себе всі когнітивні неслухняності помилкових імен в коді просто для підтримки функції, яка ніколи не може бути використана.
Кент А.

10
Повірте, ви не хочете застосовувати операцію пошуку та заміни на великій кодовій базі для такого слова, як "компанія", без обмеження лише для "повних слів". Таким чином, вам доведеться використовувати два окремі пошукові запити.
Док Браун

2
Два. Окремі. Пошуки.
Тулен Кордова

Відповіді:


24

Будь-який такий пошук і заміна слід виконувати обережно, і кожну зміну перевіряти вручну, наприклад, щоб уникнути "супроводу", щоб коментар не став "акведором" зі зміною вашої компанії / постачальника. Таким чином, два окремі пошуки "компанії" та "компаній" не повинні створювати значних витрат, порівняно з витраченим часом на перевірку та затвердження кожної зміни.

Таким чином, неправильне написання слів для досягнення лише одного пошуку пропонує негативи виглядати погано і бути складнішими для читання, ніж потрібно, не пропонуючи явної користі.


11
І коли інструменти рефакторингу стають кращими, глобальний пошук та заміна лише на основі тексту стає найменш надійним способом перейменування ідентифікатора.
Кент А.

Це не буде проблемою з використанням пошуку "лише цілими словами", як згадував Док Браун.
SHNC

6
@ user3047082, пошук у всьому слові не відповідатиме "компаніям", що робить все питання досить безглуздим ...
Девід Арно

6

Я припускаю, що ви говорите про перейменування у файлах вихідного коду. У сучасних ІДЕ це завжди слід робити за допомогою інструментів рефакторингу IDE. Якщо у вашої IDE цього немає, розгляньте можливість переходу на інший IDE. Більшість інструментів рефакторингу IDE також зберігають історію рефакторингу, що дає вам можливість швидко "скасувати", якщо результати рефактора вам не подобаються. Використовуючи пошук / заміну, ви, можливо, не зможете скасувати весь набір змін (якщо ви, можливо, не скористаєтеся інструментами контролю за версією та поверніться до раніше скоєної версії). Крім того, використовуючи інструменти рефакторингу, ви безпечніше від випадкового зміни того, що ви не мали наміру змінити.


3
Хто б не визначив цю відповідь низькою якістю: хоча вона не відповідає суворо на запитання, вона вирішує більш широку картину того, чому б хотілося використовувати таку схему іменування та кращий спосіб виконання того ж завдання. Я проголосував "виглядає нормально" до огляду прапора і додав підсумок.

Спасибі, @Snowman. Природа людини, перебуваючи в невідомій області, має формувати питання на основі власного (недосвідченого) мислення. Так, поки я не відповів на власне питання, моє припущення про те, що насправді задавали, ґрунтувалося на інших підказках у питанні. Множини, з якими я стикався найбільше, - це інструменти для генерації коду, наприклад, XSD-to-POJO, зворотна інженерія Hibernate / JPA з бази даних тощо. По суті, якщо ці множини містяться в коді і автору не сподобався вибір множини, то вони, швидше за все, не були написані автором і, швидше за все, були автоматично створені.
javabeano

-9

Так! Так! Так! Це має ідеальний сенс робити. І я роблю це роками.

Розкриття 1: Англійська мова не є моєю рідною мовою.

Розкриття 2: Мої знання англійської граматики значно кращі, ніж знання середнього носія мови.

Розкриття 3: Що стосується спілкування з людьми, я є грамотною нацисткою.

І тепер, коли ці розкриття не вдається, дозвольте зазначити, що англійська граматика не має місця в коді. Розумієте, саме тому його називають кодом, а не прозою . Слід мати певну схожість з мовою, зрозумілою людьми, з метою читабельності, але крім цього, що нам здебільшого потрібно з коду - це не якості прози; це інші, більш технічні якості, як точність , недвозначність і строгість . Ось чому C синтаксис if( x != y ) y++;є більш кращим у порівнянні з IF X IS NOT EQUAL TO Y THEN ADD 1 TO Y END-IF.синтаксисом Кобола. Передбачувана бажаність компіляторів, які розуміють природну мову, є помилкою, і не сприймайте моє слово за це, подивіться, що ol'Edsger має про це сказати:Едсгер В. Дійкстра, Про дурість "програмування на природній мові" .

Ще однією важливою якістю є обчислюваність ідентифікаторів . Те, що властивість, що викликається, Colorзавжди може бути прочитана за допомогою методу, який називається getColor()та записаний через метод, який називається, setColor()має першорядне значення. Ці ідентифікатори можна обчислити з назви ресурсу, тому вам не потрібно знати їх напам’ять. Якби програміст мав обрати пару методів, що викликаються getColor()з одного боку, а colorize()з іншого боку, їхні колеги справедливо вважали б це саботаж. Ось наскільки важлива обчислюваність ідентифікатора.

Також можуть бути написані засоби програмування (і багато з них насправді було написано, наприклад, у сплячому режимі ), які можуть обчислити ці імена. Без обчислюваності імені ідентифікатора вам доведеться використовувати додатковий синтаксис (наприклад, у сплячому режимі, додаткові анотації), щоб точно вказати кожному інструменту, як створити кожне окреме ім'я ідентифікатора, а також саме те, яке спеціальне ім’я ви надали кожній сутності.

Отже, обчислюваність ідентифікатора важлива, в той же час граматика англійської мови не має значення (оскільки ми не робимо програмування на природній мові), щоб мати можливість обчислити ім'я колекції сутностей, завжди додаючи "s" до імені один екземпляр має ідеальний сенс, не майте на увазі того, що він порушує чутливість англійської мови більшості людей (включаючи мою).

І нам це подобається чи ні, це тенденція майбутнього. Рідна мова більшості програмістів на планеті вже не англійська, і тенденція полягає в тому, щоб продовжувати дуже сильно в цьому напрямку. (Крім того, я навіть не хотів би ставити гроші на те, що англійська мова є рідною мовою більшості програмістів, які зараз працюють у США.) Це люди, які значною мірою намагаються обчислити ім'я. колекції від назви окремого примірника «компанія», просто додасть «s», а форма «компанії» навіть не подумає. Для великого і постійно зростаючого в світі відсотка програмістів знання особливостей англійської мови не додає ніякої цінності їх роботі, це лише робить її трохи складніше.


7
1. Індекси та індекси є дійсними множинами індексу. Ви помиляєтесь у своїй думці, що лише одна правильна, наприклад, перегляньте сторінку oxforddic slova.com/definition/english/index . 2. Приватний X, який можна читати через getX і записувати на нього через setX, не є приватним; це суспільна цінність. 3. Код - це проектний документ. Він інформує компілятора про те, як генерувати "машинний код", але що ще важливіше, він описує цей дизайн таким чином, щоб інші люди могли легко читати. Читання - один з двох найважливіших аспектів кодування (другий заповідність).
Девід Арно

3
Код написаний з двох причин: для читання людей та для виконання комп'ютерів. Дехто сказав, що вихідний код написаний в основному для того, щоб люди його читали, оскільки більшість з них одразу збирається в байт-код, перш ніж комп'ютер його виконує. Тож, хоча комп’ютери можуть не піклуватися про належну граматику, люди, безумовно, так і роблять.
Ерік Кінг

3
Хоча англійська мова не може бути вашою рідною мовою, можливо, наступна людина, яка читає ваш код, може бути. Це, ймовірно, також заплутає інших вашої рідної мови, які вивчили англійську мову.
Енді

2
або ви тільки будете шкодити тим, хто подвійно сприймає, Companysколи це має бути Companies. Адже вся суть коду, який ми зазвичай пишемо, насправді полягає в тому, щоб наблизити його до природної мови.
Енді

2
Як би там не було, я знаходжу цей папір, повна лайна. Код знаходиться між природною мовою та байт-кодом. Якби не полегшити людському розумінню коду, не було б жодної причини не просто вводити байт-код безпосередньо.
Енді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.