Про первичность данных

Nov 04, 2015 01:24

Представьте себе, что вам нужно что-то запрограммировать. Какой-то продукт или фичу. С чего же начать?

Ну понятно, что сначала надо вытрясти все требования, продумать user stories. Этап конечно важный, но в данном случае речь не об этом, пропустим. Будем считать, что первые требования уже собраны и надо браться за непосредственно разработку. Итак, что теперь?

Обычно в таких случаях говорят: ну надо сделать архитектуру. Без архитектуры никуда. Но что именно под этим подразумевается? И обычно дальше под этим подразумевают что-то типа: надо разбить программу на модули. Надо продумать иерархию классов. А какие будут сервисы. А какие интерфейсы. А давайте применим вот этот паттерн. Наверное, с этого и надо начинать?

А вот нифига.

Вообще говоря, любая программа - это всего навсего инструмент по перелопачиванию данных. Данные на входе, данные на выходе. Данные где то хранятся. По сути то.

А все остальное - это по большому счету не более чем синтаксический сахар вокруг шестеренок, пережевывающих данные. Все эти классы, иерархии, модули, паттерны и даже целые парадигмы. Все оно ненастоящее, невесомая бумажная обертка для красоты и удобства.

Вот и получается, что данные первичны и начинать надо с них.
  1. Где происходит ввод данных?
  2. Где отображаются?
  3. Какие у нас есть еще данные и где они живут?
  4. А какое у них время жизни и кто отвечает за их удаление?
  5. Как обеспечивается корректное состояние данных?
  6. Есть ли дублирующиеся данные? А точно ли оно надо и нельзя ли без? Если нельзя, то как обеспечить синхронность?
  7. Где какие данные нужны? Как они попадают из точки A в точку B? Какова логистика системы?
  8. Что с потоками? Какие потоки что могут трогать и почему от этого ничего не сломается?
Это в общем то основное - разложить данные по полочкам и обеспечить их корректность. После этого обернуть данные в сахарные обертки уже несложно. Это конечно тоже важно, но все-таки вторично.

programming

Previous post Next post
Up