Тема: Як зберегти семантичну інкапсуляцію?
Припустимо, що в мене є клас, в ньому кілька методів-фільтрів, що перевіряють на помилки данні цього ж класу.
Один з них виконує "грубу" перевірку, тобто знаходить щось елементарне, з яким далі працювати неможливо(тому і перевіряємо).
Він МОЖЕ викликатися як самостійний метод класу, тобто коли детальна перевірка є недоцільною.
Він МАЄ викликатися кожного разу перед "спеціалізованими" методами(окрім нього у нас, як я вже казав, є ще деякі методи, що перевіряють прискіпливіше, та все ж вони не схильні працювати самостійно: вони виконують перевірку, яка, звичайно, як така - правильна, але без "грубої" ніякого сенсу не має).
Є 3 варіанти подальшого розвитку подій:
а) Внести в документацію опис проблеми( - не викликати такі-то методи без "грубого")
Недоліки:
0. Це дає дозівл ІНШИМ "філософствувати" над роботою моїх методів, тобто я розкриваю інформацію про
алгоритм. Користувач не повинен бути обтяженим зайвою інформацією: це завжди корисно, програма
стає простішою.
1. Ніхто не застрахований від тупих користувачів.
2. Це незручно.
б) Запхнути виклик "грубого" методу у кожний інший.
Недоліки:
1. Уявіть собі каскад викликів "ніжних" методів(можливо й таке). Кожний буде змушений викликати "грубий"
фільтр. На який ♂ таке треба?
2. І знову ж тупий користувач.
в) Вліпити код з "грубого" метода в кожний інший.
1. То саме
2. Це по-дибільному.
3. Це тричі по-дибільному - жодна із вимог не виконується.
Нагадаю умови: код має бути оптимальним і приховувати всі секрети.
з.ю.
Серед трьох, я б обрав перший.