Це дуже зрозуміло, якщо ви читаєте в самому першому реченні питання, що це питання не стосується відповідних застосувань, як
усунення магічних чисел , а про жахливу безглузду нерозумну
послідовність у кращому випадку. Що стосується цієї відповіді
Здоровий глузд говорить вам про те, що const char UPPER_CASE_A = 'A';
або const char A = 'A'
не додає нічого, крім обслуговування та складності вашій системі. const char STATUS_CODE.ARRIVED = 'A'
інший випадок.
Константи повинні представляти речі, незмінні під час виконання, але, можливо, їх потрібно буде в майбутньому змінити під час компіляції. Коли const char A =
правильно рівне нічого, крім A
?
Якщо ви бачите public static final char COLON = ':'
код Java, знайдіть того, хто написав це, і зламайте їхні клавіатури. Якщо представництво на вас COLON
колись зміниться, у :
вас виникне кошмар на підтримку.
Опуднення:
Що станеться, коли хтось змінить його, COLON = '-'
тому що там, де вони його використовують, потрібно -
натомість скрізь? Чи збираєтесь ви писати одиничні тести, які в основному кажуть assertThat(':' == COLON)
для кожної const
посилання, щоб переконатися, що вони не змінюються? Тільки, щоб хтось виправив тест, коли вони їх змінили?
Якщо хтось насправді стверджує, що public static final String EMPTY_STRING = "";
це корисно і корисно, ви просто кваліфікували їх знання та сміливо ігноруєте їх у всьому іншому.
Наявність у кожного символу для друку з іменованою версією просто демонструє, що хто б це не робив, не підлягає написанню коду без нагляду.
Згуртованість:
Це також штучно знижує згуртованість, оскільки відсуває речі від речей, які ними користуються, і пов'язані з ними.
У комп'ютерному програмуванні згуртованість означає ступінь, до якого елементи модуля належать разом. Таким чином, згуртованість вимірює міцність взаємозв'язку між частинами функціональності в заданому модулі. Наприклад, у високо згуртованих системах функціональність сильно пов'язана.
З'єднання:
Він також поєднує безліч непов'язаних класів разом, оскільки всі вони в кінцевому підсумку посилаються на файли, які насправді не пов'язані з тим, що вони роблять.
Щільне з'єднання - це коли заняття групи сильно залежать один від одного. Цей сценарій виникає тоді, коли клас бере на себе занадто багато обов'язків або коли одна турбота поширюється на багато класів, а не на власний клас.
Якби ви використовували краще ім’я, як у DELIMITER = ','
вас, все-таки виникли б ті самі проблеми, тому що ім'я є загальним і не має семантичного значення. Переназначення значення більше не допомагає зробити аналіз впливу, ніж пошук та заміна буквального ','
. Тому що, який код використовується, він потребує, ,
а якийсь інший код використовує, але потребує ;
зараз? Ще потрібно дивитися на кожне використання вручну та змінювати їх.
В дикій природі:
Нещодавно я відновив 1,000,000+ LOC
програму, якій було 18 років. Були такі речі public static final COMMA = SPACE + "," + SPACE;
. Це жодним чином не краще, ніж просто викласти " , "
там, де це потрібно.
Якщо ви хочете сперечатися з читальністю, вам потрібно навчитися налаштовувати свій IDE так, щоб відображати whitespace
символи там, де їх можна побачити чи що завгодно, це лише надзвичайно ледача причина введення ентропії в систему.
Він також ,
визначав кілька разів з декількома неправильними написаннями слова COMMA
в декількох пакунках і класах. З посиланнями на всі варіанти, змішані разом у коді. Нічого кошмару не було, ніж спробувати щось виправити, не порушуючи щось абсолютно не пов’язане між собою.
Те ж саме з алфавітом, було кілька UPPER_CASE_A
, A
, UPPER_A
, A_UPPER
що більшу частину часу були рівні , A
але в деяких випадках не було . Майже для кожного персонажа, але не для всіх персонажів.
І з історії редагування не з’ясувалося, що жодна з них коли-небудь редагувалася або змінювалася протягом 18 років, тому що зараз має бути очевидною причиною: це зламає занадто багато речей, які не можна відстежувати, таким чином у вас є нова змінна назви, що вказують на те саме, що ніколи не можна змінити з тієї ж причини.
У жодній розумній реальності не можна стверджувати, що ця практика не робить нічого, а починається з максимальної ентропії.
Я відремонтував увесь цей безлад і накреслив усі тавтології, і нові найми в коледжі були набагато продуктивнішими, оскільки їм не довелося шукати через багато рівнів непрямості, на що const
насправді вказували ці посилання, тому що вони не були надійними в тому, що їх назвали проти того, що вони містили.