Зараз я думаю про інтерфейс до класу, про який пишу. Цей клас містить стилі для символу, наприклад, чи є жирний шрифт, курсив, підкреслений і т. Д. Я два дні дискутував із собою, чи слід використовувати геттери / сеттери або логічні назви для методів, які змінюють значення на ці стилі. Хоча я, як правило, віддаю перевагу логічним іменам, це означає, що написання коду не є настільки ефективним і не таким логічним. Дозвольте навести вам приклад.
У мене є клас , CharacterStyles
який має змінні член bold
, italic
, underline
(і деякі інші, але я залишу їх для простоти). Найпростіший спосіб дозволити іншим частинам програми отримати доступ до цих змінних - написати методи getter / setter, щоб ви могли це робити styles.setBold(true)
і styles.setItalic(false)
.
Але мені це не подобається. Не тільки тому, що багато людей кажуть, що геттери / сетери порушують інкапсуляцію (це справді так погано?), А в основному тому, що мені це не здається логічним. Я розраховую, що стилю вдасться за допомогою одного методу styles.format("bold", true)
чи чогось подібного, але не через усі ці методи.
Однак є одна проблема. Оскільки ви не можете отримати доступ до змінної об'єкта-члена за вмістом рядка в C ++, мені доведеться або написати великий контейнер if-statement / switch для всіх стилів, або мені доведеться зберігати стилі в асоціативному масиві ( карта).
Я не можу зрозуміти, який найкращий спосіб. Одного моменту я думаю, що мені слід написати гетерів / сеттерів, а наступного моменту схиляюся в інший бік. Моє запитання: що б ти робив? І чому б ти це робив?
bold
встановленими значеннями true
та інші змінні, методи getter для інших змінних повинні повернути значення батьківського стилю (який зберігається в іншій властивості), тоді як getter для bold
властивості повинен повернутися true
. Є ще деякі речі, такі як ім'я та спосіб його відображення в інтерфейсі.