BadCats
@BadCats

Как развить навык разбиения сущностей на абстракции?

Приведу пример:
  • Допустим, у нас есть кухонный кран. Лично мне, удалось выделить у него следующие характеристики:
  • Пропускная способность - литр/час
  • Тип смесителя - двухвентильные/однорычажные
  • Марка стали
  • Габариты - высота в пике
  • Производитель
  • Заявленный срок службы
  • Цена

Пример, более приближенный к программированию:
Программа для "чистки" данных в файлах разного формата - txt, xlsx, accdb
Требования, которые у меня получилось сформулировать и которыми должна обладать система:
  • Вся система должна быть разбита на 4 отдельных класса-блока:


  • Класс для чтения данных, вне зависимости от формата:

  1. Непосредственно, читает данные в контейнер по заданному разделителю (для txt)
  2. Позволяет удобно и гибко рабоать с файловой системой - рекурсивно обходя директории,читая и ища только файлы заданного/-ных типа/-ов

  • Класс для предварительной обработки и нормализации данных:

  1. Удалять пустые записи.
  2. Приводить все строки к одному виду.

  • Класс, для непосредственной работы с подготовленными данными, в который подается список "заданий" для каждого элемента контейнера - например, список указателей на методы, которые буду применены к определенным элементам.

  • Класс для удобного создания таблицы, путем передачи одному из методов класса методу sql-запроса в виде строки.

Вот о таких примерах я говорю.
Как научиться сразу-же анализировать задачу или проблему подобным, инженерным образом?
  • Вопрос задан
  • 309 просмотров
Решения вопроса 3
Zoominger
@Zoominger Куратор тега IT-образование
System Integrator
Знакомое состояние, сталкивался с ним на заре погромиста.
Ответ: практика. Больше практики. Ещё больше практики.
Любое обучение и прокачка мозгов - это механическое повторение тех или иных кейсов, никакой новой техники не существует.
Ответ написан
Комментировать
Hcuy
@Hcuy
Профессионально считаю ворон.
Мне кажется это либо дано либо нет, ну а если не дано, то развить путём записывания разделения в блокнот , а потом постоянно поглядывать на это.
Ответ написан
SeaInside
@SeaInside
15 лет пилю все эти штуки
Чтобы научиться плавать, нужно плавать.
Ставить перед собой неодинаковые, но по духу схожие задачи, чтобы была пища для анализа в духе "ага, а если бы в прошлый раз вот это вынес в отдельную сущность - сейчас мог бы просто переиспользовать". Это лучший метод.
Также крайне помогает увеличивать так называемую насмотренность - изучать, как те же самые задачи решают другие люди и попытаться понять, почему именно так. Иногда и просто спросить можно - не съедят :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Программа для "чистки" данных в файлах разного формата - txt, xlsx, accdb

1. Даёте формулировку определения конечного результата - "очищенных" данных.
2. Что нужно предварительно сделать для того, чтобы получить возможность реализации текущего шага на предыдущем?

Т.е. разбор делается в обратную сторону: от конкретики (от конечной цели поставленной задачи) к множеству абстракций (к постановке/формулировке изначальной задачи).
Ответ написан
Комментировать
@Dmtm
Android
>Лично мне, удалось выделить у него следующие характеристики:
бессмысленный набор параметров
мы работаем с моделями
любая модель - одно из возможных представлений реального объекта
т.е. модель по определению - ограничена
и выделяемый набор свойств модели зависит только от задачи
так производитель и пропускная способность не нужны для учета металлолома

вторая часть рассуждений это архитектура приложения, MVC, MVP и все такое, ключевые слова - слои и зона ответственности
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы