Инкапсуляция
Моё мнение следующее. Понятно, что инкапсуляция полезна для данных - каждый объект должен сам разбираться со своими данными. Но приватные методы не нужны, ибо их неудобно тестировать, они показывают недостатки дизайна. Лучше передать эти методы в какой-либо агрегированный объект.
Но и с данными должна быть некая условная инкапсуляция. То есть должен быть не полный запрет, а генерирование предупреждений компилятором (интерпретатором) в случае их использования. Такой подход может пригодиться при рефакторингах.
Не читал Буча (и в ближайшее время точно не буду) - мне просто не интересен ОО-анализ и проектирование :)
Для меня все те поля класса - единая структурная единица.
Это что за наука такая?
Ликвидация private-методов это понижение сложности?
Да, я это заметил.
Наука по управлению сложностью же :)
Хоть Макконнелла читай, хоть Буча, хоть Фаулера - все о ней говорят.
Смотри декомпозицию, рефакторинг и т.п.
Это смотря как ликвидировать.
Тебе виднее.
Да, я помню: теоретик и блаб-программист. Теперь ещё и начитавшийся.
Как инкапсуляция противоречит Open Source?
Неужто код с приватными методами нельзя сделать свободным? Неужто код со всеми публичными методами нельзя сделать проприетарным и не давать исходники никому?
Да, чувак ошибся, сделав все методы открытыми. Ты этого не допускаешь?
Если верить Википедии, то именно в сообществе Smalltalk появилась идея рефакторинга. Вероятно потому и появилась, что часто приходилось воевать с недостатками открытых методов.
Ты прекрасно знаешь, когда появился Смолток. Одним словом - давно. Тогда ещё не была осознана необходимость инкапсуляции. Сдаётся мне, сейчас Кей спроектировал бы язык по-другому.
Но моё мнение, что 7 - это многовато, это уже сложно для понимания.
Сложные системы трудно понимать, трудно поддерживать. Поэтому достаточно сильно развита наука по управлению сложностью. Книжка, пример из которой я привёл в этой теме, освещает приёмы по снижению сложности.
Ну? Представь: был один класс с одним открытым методом, и одним закрытым. Ты сделал взамен два класса, каждый с одним открытым методом. Количество классов удвоилось, количество видимых методов удвоилось - система стала сложнее, её стало сложнее понимать.
И вообще, в начале этой темы речь шла о том, что открытые методы якобы упрощают тестирование. Потом внезапно оказалось, что рефакторинг рулит. Где связь?
[QUOTE=Linus Torvalds]Theory and practice sometimes clash. And when that happens, theory loses. Every single time.[/QUOTE]
[QUOTE=Eric S. Raymond]Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.[/QUOTE]
[QUOTE=Linus Torvalds]Talk is cheap. Show me the code.[/QUOTE]
[QUOTE=Yoggi Berra]In theory, theory and practice are the same. In practice, they’re not.[/QUOTE]
[QUOTE=George Carrette]First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack.[/QUOTE]
Взято отсюда: http://www.junauza.com/2010/12/top-50-programming-quotes-of-all-time.html
Бездоказательно, безосновательно, безпримерно и совершенно ненужно...
Все что я хотел сказать я сказал, убеждать кого-либо не собираюсь.
Пойду напишу парочку приватных методов... :D
Удачи!
P.S. В завершении диалога совет: попробуй свою теорию на практике. Только честно, без отступлений в сторону, на реальных проектах, не в одноразовом коде и не отступай от этой практики некоторое продолжительное время, например, полгодика.
В общем смысле - никак. В том конкретном рассуждении про инкапсуляцию подразумевается, что часть кода должна быть полностью скрыта от посторонних глаз.
На остальные вопросы нет смысла отвечать.
Честно говоря, я тут использовал принцип: "Объяснял, объяснял, уже и сам понял...". Действительно, отрицательная обратная связь себя тут исчерпала.
Или пока ещё в поисках?
Или пока ещё в поисках?
В поисках.
У меня есть выводы, есть вопросы. Кроме тех выводов, что я уже озвучивал, могу и другие озвучить для смеха:
1. В беге на короткие, средние и длинные дистанции требуются разные скорости, разные техники, стратегии.
2. Гибриды иногда лучше родителей, иногда хуже.
3. Надо больше времени выделить на изучение английского языка.
4. Дурные привычки сильнее хорошего довода их бросить.
5. Некоторые программисты вместо книг Герба Саттера используют баш.орг.ру. Шучу.
Вопросы:
1. Что такое модули-мутанты? В чём преимущества и недостатки?
2. Что такое синглтон: класс или модуль?
3. Куда делся Der Meister?