Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.10.2018, 12:19
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 1  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
По умолчанию Про абстракцию

Друзья, по итогам года самоучительства ООП с вашей неоценимой (без иронии) помощью, потянуло на порассуждать.

Сделал вывод, что главное в ООП (имхо) - это не наследование и композиция, и даже не полиморфизм, а абстракция. Именно хорошая абстракция позволяет извлечь максимум пользы из всех остальных свойств ООП. Отметил для себя с удивлением, что в литературе и статьях этому аспекту уделяется мало внимания. Может от того, что это тяжело объяснять новичкам, которые не в теме... Чаще сразу напирают на практические аспекты ООП и их применение. Разве что в знаменитых "Паттернах проектирования" тема качественной абстракции как обязательного требования к хорошей архитектуре, рассмотрена на должном уровне.

У меня в проекте недостаточная или неточная абстракция - главная причина тупиковых ситуаций и последующих весьма комплексных изменений. Причём косячу в обе стороны. Когда начинал, грешил тем, что много чего рисовал под конкретный случай, а потом мучительно расширял. Теперь случается и в обратную сторону, когда решаешь какую-то ситуацию на высоком уровне абстракции, а она в итоге пригождается для единственного частного случая. Сейчас начинает появляться какая-то интуиция. Она напомнила ситуацию с музыкальным слухом, которого ещё недостаточно, чтобы спеть чисто, но уже хватает, чтобы услышать, что фальшивишь.

Выработал для себя пока такую тактику. При появлении частных случаев, выпадающих из уже построенной логики, не парюсь и программирую "в лоб", воткнув блок if. Если подобная частность возникает повторно, начинаю всерьёз задумываться о выделении её в качестве отдельной сущности.
__________________
Не сломано - не чини!

Старый 11.10.2018, 15:03
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 2  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
На своих ошибках долго будешь учиться, постарайся влиться в проект к другим профессионалам.
__________________
Дети не должны знать о своих родителях

Старый 12.10.2018, 18:44
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Не надо сильно злоупотреблять абстракциями. Когда у тебя на каждую фигню будет по стопицот уровней абстракции, ты поймешь, что поддерживать этот код станет очень сложно
__________________
Ко мне можно и нужно обращаться на ты)

Старый 14.10.2018, 18:29
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 4  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Tails, я бы и рад, да как говорится, грехи не пускают. У меня двое детей и флэт в ипотеке, мне всё это не вытянуть будет в случае столь радикальной смены карьеры.

caseyryan, я поэтому и написал, что в обе стороны ошибаюсь. Пока сформулировал для себя такое правило. Если блоков else if набирается больше двух по одному поводу, то пора задумываться о решении вопроса абстрактно.
__________________
Не сломано - не чини!

Старый 17.10.2018, 14:29
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Если ты не знаешь, в какую сторону будет двигаться проект – то иди по принципу DRY. Два if'а не заслуживают абстракции, но если есть повторение в 3 раза, то рефакторь, чтобы повторений не было.

Если же есть вся спека проекта, то попробуй порисовать сущности на бумажке, кто с кем связывается, кто к кому имеет доступ и всё такое, сводя абстракцию к минимуму.

Идеальный код = минимально необходимая абстракция. Больше – раздуто, меньше – костыльно.

Старый 17.10.2018, 15:08
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 6  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Psycho Tiger, спасибо за наводку. С интересом про DRY прочитал. Как оказалось, сам интуитивно всего на разок ошибся Вообще, как мне представляется, сама философия ООП в значительной мере соответствует этому принципу.
__________________
Не сломано - не чини!

Старый 27.10.2018, 12:03
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 7  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Цитата:
Сообщение от Appleman Посмотреть сообщение
Отметил для себя с удивлением, что в литературе и статьях этому аспекту уделяется мало внимания.
Не там читаете . А точнее большинство книг - про практическое применение ООП, что-то типа "документация ООП".
Дорогу в филосовское/академическое ОПП вам откроет SOLID. Если конечно ещё не встречали это.

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:01.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.