Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
State normalization (RU)
Search
DAloG
September 28, 2019
Programming
0
150
State normalization (RU)
https://gist.github.com/AlexeyDemedetskiy/725e50bf0beb0d0946ac559a4faba227
DAloG
September 28, 2019
Tweet
Share
More Decks by DAloG
See All by DAloG
Redux + MQTT
dalog
1
730
От задач к проблемам
dalog
1
170
Unlimited power of Data-Driven UI
dalog
4
580
Data-Driven View Controllers. Tips and Tricks
dalog
5
1.7k
2 years of Redux in iOS. Lessons learned
dalog
0
320
Why unidirectional architecture matter for iOS.
dalog
1
250
Mobile backend without REST
dalog
2
72
Self managed teams 101
dalog
0
120
FMVP
dalog
1
150
Other Decks in Programming
See All in Programming
Azure OpenAI Serviceのプロンプトエンジニアリング入門
tomokusaba
3
620
Git Lint
bkuhlmann
4
750
HUIT新歓2024「競技プログラミング、やってみませんか?」
slephy2784
1
260
VSCodeでのDatabricks開発もお勧めしたい/I would also recommend Databricks development with VSCode.
kazumain
0
250
코틀린으로 멀티플랫폼 만들기
pangmoo
0
140
検証も兼ねて個人開発でHonoとかと向き合った話
hanetsuki
0
330
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
1.1k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.3k
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
360
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
620
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
640
使ってみよう Azure AI Document Intelligence
kosmosebi
2
270
Featured
See All Featured
Designing Experiences People Love
moore
136
23k
Bootstrapping a Software Product
garrettdimon
PRO
301
110k
Become a Pro
speakerdeck
PRO
10
4.5k
The Cult of Friendly URLs
andyhume
74
5.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
[RailsConf 2023] Rails as a piece of cake
palkan
22
3.9k
Navigating Team Friction
lara
177
13k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
12
4.6k
Web development in the modern age
philhawksworth
202
10k
Statistics for Hackers
jakevdp
789
220k
Documentation Writing (for coders)
carmenintech
59
3.9k
Transcript
НОРМАЛИЗАЦИЯ СОСТОЯНИЯ Алексей Демедецкий 2019
КЛАССЫ СОСТОЯНИЕ + МЕТОДЫ
БОЛЬШИЕ КЛАССЫ ЭТО ПЛОХО
КОМПОЗИЦИЯ
ГРАФ ОБЪЕКТОВ
ДЕРЕВО ОБЪЕКТОВ
НЕЯВНЫЙ ЖИЗНЕННЫЙ ЦИКЛ
ДУБЛИРОВАНИЕ
РАССОГЛАСОВАННОСТЬ
None
СЛОЖНОСТЬ
ДЕНОРМАЛИЗ ИРОВАНННОЕ
JSON
А КАК ПО ДРУГОМУ?
None
SQL DATABASE
ТОЛЬКО ДАННЫЕ
ГРАФ ДАННЫХ
ИЗОЛИРОВАННЫЕ ТАБЛИЦЫ
ЯВНЫЕ ССЫЛКИ НА ДРУГИЕ ТАБЛИЦЫ
КОНТРОЛЬ ЦЕЛОСТНОСТИ
СКОРОСТЬ ДОСТУПА
МЫ БУДЕМ ДЕЛАТЬ СВОЮ БАЗУ ДАННЫХ?
НЕТ
МЫ БУДЕМ ИСПОЛЬЗОВАТЬ IN MEMORY SQLITE?
НЕТ
CORE DATA?
НЕТ
МЫ ПОСТРОИМ НОРМАЛИЗОВАННОЕ СОСТОЯНИЕ
ПРАВИЛА
ПЛОСКАЯ ЗЕМЛЯ СТРУКТУРА
СИЛЬНЫЕ ИДЕНТИФИКАТОРЫ
ИЗОЛЯЦИЯ КОМПОНЕНТОВ
struct Post { let id: ID let author: User.ID let
comments: [Comment.ID] let text: String struct ID: Hashable { let value: String } }
struct User { let id: ID let posts: [Post.ID] let
comments: [Comment.ID] let name: String let avatar: URL struct ID: Hashable { let value: String } }
struct Comment { let id: ID let author: User.ID let
post: Post.ID let text: String struct ID: Hashable { let value: String } }
struct State { let posts: [Post.ID: Post] let users: [User.ID:
User] let comments: [Comment.ID: Comment] let feed: [Post.ID] let currentUser: User.ID }
ПОМОГАЕТ ИЗБЕЖАТЬ ДУБЛИРОВАНИЯ
ПОМОГАЕТ ИЗБЕЖАТЬ РАССИНХРОНИЗАЦИИ
ОБЕСПЕЧИВАЕТ ЖИЗНЕННЫЙ ЦИКЛ
ОБЩИЕ ДАННЫЕ МЕЖДУ МОДУЛЯМИ
СВЯЗНОСТЬ
ВАХТЁРЫ (GUARDS)
None
RUNTIME TESTS
ТЕПЕРЬ ВЕЗДЕ ID?
ДА
НО...
МОЖНО СДЕЛАТЬ ORM
None
НО ЭТО СОВСЕМ ДРУГАЯ ИСТОРИЯ
СПАСИБО