Я ніколи не був прихильником об’єктно-орієнтованого програмування, і якщо що-небудь менше, то я більше дізнаюся про програмування взагалі. Як я вивчав різні парадигми програмування, я зрозумів , що незмінність є однією з самих центральних концепцій розробки програм, які зачіпають програмне забезпечення , написане в відповідно до якої - небудь філософії. Це надзвичайно важливо у функціональному програмуванні, що впливає на оптимізацію та одночасність, окрім простих гарантій безпеки.
В основному все, що може бути незмінним, мабуть, має бути, якщо тільки у вас немає вагомих причин для того, щоб змінити стан. На мій досвід, написання програм будь-якою мовою для досягнення цієї мети призводить до більш безпечного та кращого коду. Вам нічого втрачати, використовуючи, const
де це можливо - незмінність безкоштовна!
(До речі, я зіграв з ідеєю створити вилку GCC для діалекту C ++, в якому всі типи, const
якщо явно не кваліфіковані як mutable
. Якщо є підтримка такої речі, я повністю зобов’язуюсь її підтримувати та використовувати.)
З точки зору ОО, незмінність застосовує інкапсуляцію, запобігаючи необмеженому доступу до запису. Це зменшує зв’язок між класами, оскільки незмінні об'єкти повинні повністю керувати власним станом і, таким чином, поводитись як звичайні значення. Правильність Const значно полегшує процес доведення правильності програми, особливо в контексті одночасного програмування. За допомогою посилань C ++ та еталонної семантики C ++ 0x rvalue ви можете використовувати незмінні об'єкти, не турбуючись про накладні копіювання їх у всьому місці. Крім того, компілятор може працювати надзвичайно дивовижною магією оптимізації, якщо ви працюєте з переважно незмінними об'єктами.
Я знаю, що це гарно вводити const
всюди, але ви швидко звикаєте до цього, і переваги з часом стають очевидними з точки зору надійності та ремонту. Я не геніальний письменник, і, здається, виявилося складною справою вирішити справу, але я знаю, що правильність const дуже допомогла мені як розробнику при розробці та реалізації програм, і я думаю, що досвід є найкращий вчитель у цьому плані.