90% React-распрацоўшчыкаў няправільна аптымізуюць перарэндэры
Большасць React-распрацоўшчыкаў аптымізуе перарэндэры не так. Куды насамрэч сыходзіць прадукцыйнасць React, якія выпраўленні дапамагаюць, і чэкліст для праверкі.
Крыніцы: 90% of React Developers Optimize Re-Renders Incorrectly — Here’s What Actually Works
Наступныя прытамлівкі паказваюць практычны падход да тэмы «90% распрацоўшчыкаў React оптымаізуюць працэс перрыендароўвання некорэктна — гэта тое, што на самай працоўнае». Акцэнс ставіцца на кантракты, перакрычанняя і месца для коду, які можна проста замясціць, а не на мотывацыйныя аспекты. Калі працуеце на стадзіі агляду, спачатку запісайце кантракт: неабходныя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс перакрычанняя дапамагае заліцьваты пазнейшыя змены ў кодзе. Спрэчвайце гэтую стадзію як кантракт межа данымі і перакрытымі выходамі. Дайце назвы элементам, задаце крытэрыя успеху і не падзеўляйцеся частковым завершэнням без паведамлення.
Аслівныя проблемы: мы не розумем, калі React перрыендароўвае
Нашы методы працуюць наяўней, калі іх спрыявае можласць вімеры. Запісайце адна ідэальная версія працы, адзін прыклад неудачы і прыметкі па поверненню да попярэдней версіі, прычаму расшыруваць масштабы раней не трэба. Запісвайце час выканання і вартасць токеноў або запытак праза функцыйнае рэзультат. Відразлівае паказанне вартасцей запобегае неспадзяваным расходам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Стараўцеся, каб працэс генеравання рэзультатаў заставаўся дышучым, а дорогія працэсы генеравання выконвайце толькі пасля ўзятых вімераў. Неранее застосаванне мемаізацыі можа сховаць багі, вызваные застарэлымі данымі.
Дзень, калі вы нарэшце ачынілі React Profiler
Працэс «Дня, калі нарэшце будуе рэалізавана функцыя», лепш за ўсё трэба рассматрываць як параметры, якія можна змерыць. Запісаўце адны «золаты» прыклад працы, адну справу з бягам і прыметкі па поверненню да пачатковага стану, прычаму расшыраючы сферу дзеяння. Хавайце настройкі за межамі коду прыемлі. Файлы сераўнавання, храненні секрэтных даных і пазнакі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць пераглядаць без неабяжнай чытанняў усіх дадзеных. Стараюцца, каб працэс атрыбутавання дадзеных быў дышэўкі, а дорогія вычысленні — толькі пасля зьмерэнняў, за дапамогою мемаізацыі. Неранняя мемаізацыя можа закрыць багі, вызваные застарэлымі дадзеннямі.
Асновная правда: Перэатрыбутаванні не ўраг — урагамі являюцца тыя, якія неабяжны
Этап «The Core Truth Re-Renders» працюе найкрашча, калі яго спрыяваць як до мерымабельнай паверхні. Запісаце адна ідэальная версія, адзін прыклад неудачы і прыметку па абяроўненню перад расшырэнням масштаба. Дакументавайце як шлях успеху, так і шлях вяснавання проблемы. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Робіце працэс рэндараўцы дашчавым і адкладайце дорогія працэсы выведзення толькі пасля меравання. Нечаснае выкарыстоўванне мемаізацыі можа сховаць багі з застарэлымі данымі. Этап «The Core Truth Re-Renders» працюе найкрашча, калі яго спрыяваць як до мерымабельнай паверхні. Запісаце адна ідэальная версія, адзін прыклад неудачы і прыметку па абяроўненню перад расшырэнням масштаба. Спрыяваце гэты этап як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце крытэрыя успеху і адмовіцеся ад беззвучнага частковага завершэння.
Раздзіл 1: Ментальная модэль, якая нарэшце дапамогла React працаваць
Для сектара 1 «Этап псіхічнай обработкі» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчыма ўвайсці крок з вядомай точкі контролю, не прабуючы спадарацца пра схованы стан. Запісваюць час выканання і вартасць токена або запіту праза з рэзультатамі функцыянальнай працы. Візуабельна інформацыя пра вартасці з’являецца рана, таму не будзе неспадзянак у відплатах, калі працэс пераходзіць з дэмовай асяроддзя ў спяльнаваныя сераўеры. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем схэмы, чым вольныя тэкстовыя фарматы.
React = Апарат выканання функцыяй
Для этапы дварожка выканання функцыяў у React неабходна пазначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры змены коду. Аперацыйныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба залічыць паза кодам прыкладнення. Файлы сераўіса, хранальнікі секрэтных даных і флагі функцыяй должны знаходзіцца ў аднам месцы, якое працавнікі можуць пераглядаць, не чытаючы весь лянцуг задач. Стан трэба размешчаць разам з компонентам, які керуе мутацыямі. Размешчэнне всего ў глобальным хранальніку ускладняе выяўленне багоў, зв’язаных з часам выканання.
Component(props) → JSX
Раздзіл 2: Чаму вашы компоненты перэраскладваюцца чашчэ, чым вы думаеце
Для раздзела 2 «Прычыны вашага этапу» перад змінайом код неабяжна задаць вхідныя даны, адміністратара крока і крытэрыя завершэння. Аператары должны магчыма ўвайсці крок з вядомай точкі контролю, не спрабоўваючы здогадвацца пра схованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней. Размешчайце стан разам з компонентам, які керуея мутацыямі. Перанесенне усяго у глобальны хранільнік ускладняе выяўленне проблем з часама выканання. Для раздзела 2 «Прычыны вашага этапу» перад змінайом код неабяжна задаць вхідныя даны, адміністратара крока і крытэрыя завершэння. Аператары должны магчыма ўвайсці крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяйце цэму этапу як кантракту між вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даць назвы артыфактам, задаць перакрыцці успеху і не падзеўляцца на частковае завершэння без паведамлення.
1. Абсалютныя об’екты і функцыі
Калі працуеце з этапам 1 «Абсалютныя об’екты, функцыі», спачатку запісайце умовы вікорыстання: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць на падзею частковага невыпання. Такі спіс дапамагае залічваць пазнейшыя змены ў кодзе чыста. Запісвайце час выканання і кост токеноў або запытаў пад рэзультатамі функцый. Відразлівае паказанне костаў з’являецца перашкодай неспакойным рахункам, калі праця пераходзіць з дэмаверсіі ў спакульнаныя сераўсы. Расследвуйце эфекты як сінхронізацыю з зовнішнім светам, а не як замену вырахаваных значэнняў пад час атрыбутацыі.
<MyComponent options={{ theme: "dark" }} />
{} !== {}
onClick={() => doSomething()}
2. Стан падняты занадта высока
Калі працюеце над стадзіяй «2 State Lifted Too», спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абярэння. Такі спіс пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Зберагайце настройкі параду ўнутры коду прыемленае. Файлы сераўіса, хранальнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аўдыт без неабяжлівага чытання всей структуры. Спрэчывайце эфекты як сінхронізацыю з зямёй занэчы, а не як замену вырашаных значэнняў пад час атрыбутавання.
3. Вырашаны стан, які зберагаецца як стан
Калі працуеце над стадзіяй «3 Derived State Stored», спачатку запісайце контракт: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс дапамагае заліцьваты змяны ў кодзе чыстымі. Документавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не наступным этапам дорабатка. Спрыяйце наэфекты як сінхронізацыю з зовнішнім светам, а не як замену вырахаваных значэнняў пад час адрасавання. Калі працуеце над стадзіяй «3 Derived State Stored», спачатку запісайце контракт: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс дапамагае заліцьваты змяны ў кодзе чыстымі. Спрыяйце гэтую стадзію як контракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы элементам, задайце крытэрыя успеху і не падтрымвайце тыхі частковыя завершэння.
const [filtered, setFiltered] = useState([]);
useEffect(() => {
setFiltered(items.filter(...));
}, [items]);
Раздзіл 3: Правіло, якое змяніла для меня ўсё
Этап «Раздзел 3: Правіла» працюе наяўней, калі яго розглядаць як вімерную плошчу. Зафіксавайце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Запісвайце часы выканання і кост токеноў або запіта праза функцыональныя рэзултаты. Відразлівае прадставленне костаў з’являецца рана, таму утрымліваеся неспакою з боку расчыткаў, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўы. Старацца, каб праца з відрасункам контэнта была дашчавая, і пераводзіце дорогія працэсы выведання за межы мемоізацыі толькі пасля ўжо здабытых вімераў. Неранняя мемоізацыя можа сховаць багі, вызваные застарэлымі данымі.
Раздзел 4: 4 рэвенья кантролю перавыкання React
Раздзел 4: 4-этапны падчынны працюе найкрашча, калі яго расследжваць як вімерную паверхню. Зафіксавайце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштаб. Зберагаюце настройкі пазырочна ад коду прыемлі. Файлы сяродавішняе сераўедзбору, храненні секрэтных даных і флажкі функцый павінны знаходзіцца ў адном месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Робіце працэс атрыбутавання даскладным, а даскладныя вычысленні выпрацоўвайце за дапамогою мемаізацыі толькі пасля вімеравання. Нерэшаная мемаізацыя можа сховаць багі, вызваны застарэлымі дадзеннямі.
Рагаў 1: Структурная оптымізацыя (Найважнейшая)
Этап структурной оптымізацыі 1-го рангу працюе наякша, калі яго спрыяваць як меравальную паверхню. Зберажыце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Дакументавайце як успішны, так і варыянт вярнэння да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай самага продукту, а не наступным этапам дорабкі. Робіце працэс генеравання інфармацыі дашча, а складныя вычысленні пераводзіце на пазднейшы этап мемоізацыі толькі пасля аналізу. Неранняя мемоізацыя можа закрыць відзор на багі з застарэлымі данымі. Этап структурной оптымізацыі 1-го рангу працюе наякша, калі яго спрыяваць як меравальную паверхню. Зберажыце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Спрыявайце этапу як кантракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы всім элементам, задаце крытэрыя успеху і не падтрымвайце тыхню частковую завершэннасць без паведамлення.
1-й ранг: Мемоізацыя (колі ёй трэба)
Для этапы мемаізацыі 2-го рангу неабяжна падчас змены коду адзначыць вхідныя даныя, адпаведальнага за крок і крытэрыі завершэння. Аперацыям павінна быць можлівасць перзапускаць крок з вядомага пункта контролю без неабяжнай адгадвання скрытага стану. Запісваць трэба час выканання і кост токена або запыту праз адзначэнне функцыйнальных рэзультатаў. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі траекторыя пераходзіць з дэмавайнага сераўера ў спяльныя сераўеры. Стан павінен знаходзіцца разам з компонентам, які керуе мутацыямі. Размешчэнне всего ў глобальным хранільніку ускладняе выяўленне багоў, зв’язаных з часам выканання.
Ранг 3: Стабільнасць рэферэнцаў
Для этапы 3 «Стабільна рэферэнцыя» неабходна прадзеўжча апісваць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры змены коду. Аперацыйныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба знаходзіць за межамі коду прыемленае. Файлы сяродавішча, хранальнікі секрэтных дадзеных і флагі функцыйяў павінны быць у адном месца, якое працавнікі можуць аўдытаваць, не чытаючы весь граф. Стан трэба размешчаць разам з компонентам, які керуе мутацыяй. Размешчэнне всего ў глобальным хранальніку ускладняе выяўленне багоў, зв’язаных з часам адпаведнай дзеяння.
const handler = () => doSomething();
const handler = useCallback(() => {
doSomething();
}, []);
const config = useMemo(() => ({
theme: "dark"
}), []);
Рэгламент 4: Архітэктурная ізоляцыя
Для этапы архітэктурнай ізоляцыі 4-го рангу неабходна прадзеявленне вхідных дадзеных, адпаведнага адпаведальніка за этап і крэтынаў завершэння пры перамены коду. Аперацыйныя працавнікі должны магчымае запускаць этап з вядомай точкі контролю, не падозрываючы пра схованы стан. Неабходна аддзеявленне як шляху успеху, так і шляху вярнення да нормальнага стану. Перапрыбуткі, людзкія перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Стан неабходна размешчаць разам з компонентам, які керуе мутацыямі. Перанесенне всего ў глобальны хранільнік ускладняе выяўленне проблем з часама адпаведнення. Для этапы архітэктурнай ізоляцыі 4-го рангу неабходна прадзеявленне вхідных дадзеных, адпаведнага адпаведальніка за этап і крэтынаў завершэння пры перамены коду. Аперацыйныя працавнікі должны магчымае запускаць этап з вядомай точкі контролю, не падозрываючы пра схованы стан. Цю стадыю трэба спрыяглядаць як кантракт межа вхіднымі дадзенымі і перакананымі выходнымі рэзультатамі. Неабходна дадаць назвы артыфактам, прадзеявліць крэтыні успеху і адмовіцца ад беззвучнага частковага завершэння.
Раздзел 5: React.memo — найбольш часта аднойджэнтнаеасць
Кал працуеце з раздзелам 5, прыменяючы React.memo, спачатку запісайце умовы: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца пад частым неудачам. Такі спіс дапамагае заліцьваты змяны ў кодзе. Запісуйце час выканання і кост токена або запыту пад рэзультатамі функцый. Відразлівасць коста з самага пачатку запобегае неспакою, калі праця пераходзіць з дэмаверсіі ў спакульнаныя сераўысы. Спрыятлівайце эфектам як сінхронізацыі з зовнішнім светам, а не як замене значэнняў, вылучаных пад час атрыбутавання.
Кал React.memo НІЧГА не рабіць
Калі працюеце над этапам «Калі React.memo дзейнае», спачатку запісайце умовы вікорыстоўвання: неабходныя даныя, сігнал успеху і тое, што выходзіць на падчасныя неудачы. Такі чарт дапамагае залічваць пазнейшыя змены ў кодзе.
Калі React.memo прадстаўляе ся як корыстны інструмент
Калі працюеце над стадзіяй «Калі React memo Shines», спачатку запісайце контракт: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заліцьварыць пазнейшыя змены коду. Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе перакрыцця і апрацоўка некорэктных паведамленняў ёсцю часткая продукту, а не пазнейшая дапрацоўка. Спрыяйце эфектам як сінхронізацыі з зовнішнім светам, а не як замене вырахаваных значэнняў пад час атрыбутацыі. Калі працюеце над стадзіяй «Калі React memo Shines», спачатку запісайце контракт: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заліцьварыць пазнейшыя змены коду. Спрыяйце гэтай стадзіі як контракту межа вхіднымі данымі і перакананымі выходнымі данымі. Даўце назвы элементам, задайце крытэрыя успеху і адмовіцеся ад беззвучнага частковага завершэння.
Раздзіл 6: Пастка useCallback
Раздзел 6: Этап useCallback дае найлепыя рэзультаты, калі яго спрыяваць як меравальную плошчу. Запісайце адны ідэальны прыклад работы, адзін случай неудачы і прыметкі па поверненню да пачатковага стану пры расшырэнні сферы дзеяння. Запісвайце час выканання і вартасць токена або запытку разам з функцыйнальнымі рэзультатамі. Відразлівае прадстаўленне вартасцей запобегае неспакою, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўы. Стараюцца, каб праца з відраслеваннем дадзеных была дышаўнаю, і выконвайце дорогія працэсы вырахоўвання толькі пасля ўзяць спісаў. Нерэшаная мемоізацыя можа закрыць багі, вызваные застарэлымі параметрамі.
const handleClick = useCallback(() => {
setCount(c => c + 1);
}, []);
Раздзел 7: Закрытая вартасць кантэксту
Раздзел 7 «Скрытыя этапы» працюе наўсёрэйш адкулькі ёго спрыяе тратаванне як вімернай паверхні. Зафіксавайце адны «золаты» прыклад, адну справу з бягам і прыметку пра вярненне да пачатковага стану перш чым расшырваць масштаб. Зберагаюце настройкі праза код аплікацыі. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцый павінны знаходзіцца ў адном месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Робіце працэс атрыбутавання дакументаў дышэчным, а складныя вырахункі выпрацоўвайце праз мемаізацыю толькі пасля ўжо ведамых вімераў. Неранняя мемаізацыя можа закрыць багі, вызваные застарэлымі дадзеннямі.
Неправільна:
Этап «Bad» працюе найкрашча, калі яго розглядаць як вімерную паверхню. Зафіксавце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Дакументавце як шлях успеху, так і шлях вярнэння. Перапрыбуткі, людзкія контраліны і обработка некорэктных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Робіце працэс генеравання дакументаў недорогім і адкладайце дорогія працэсы выведзення дакументаў за дапамою мемаізацыі толькі пасля ўзятых вімераў. Неранняя мемаізацыя можа сховаць багі, вызваные застарэлымі данымі.
<AuthContext.Provider value={{ user, theme }}>
Лепшая:
Этап «Лепш» працюе найэфектывней, калі яго розглядаць як вімерную паверхню. Зафіксавце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказваць на адну конкрэтную адпаведнасць, а не на заплутаны ланцюг задач. Робіце працэс генеравання кантэнта дышаўным, а складныя вычысленні пераводзіце пасля мемоізацыі, толькі пасля ўсебачнага зьважэння. Нераная мемоізацыя можа закрыць багі, вызваные застарэлымі данымі.
<UserContext />
<ThemeContext />
Раздзел 8: Спісы, ключы і ілюзія стабільнасці
Этап працы параграфу 8 «Спісак ключоў» даўа найлепшыя рэзультаты, калі яго розглядаць як меркаваную плошчу. Запісаўце адна ідэальная версія, адзін прыклад неудачы і прыметку па вярнэнню да поперадньяго стану пры расшырэнні масштаба. Разглядзайце этап як кантракт межа вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце крытэрыя успеху і не падтрымайце тыхія частковыя завершэння. Зберагачце вартасць апрацоўкі нізкай, а дорогія працэсы вырахоўвання пераводзіце пасля мемаізацыі, толькі пасля ўсёх мераванняў. Нечасная мемаізацыя можа сховаць багі, вызваные застарэлымі дадзеннямі.
items.map((item, i) => <Row key={i} />)
items.map(item => <Row key={item.id} />)
Параграф 9: Спісак перагляду асобістых парадакоў
Раздзел 9, прыменяючыся да асобістага этапу, працюе наявнальней, калі яго розглядаць як вімерлую паверхню. Запісаце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнальныя рэзултаты. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Храніце працу з генераваннем даных у дробных масштабах і адкладайце дорогія працэсы генеравання толькі пасля ўзятыя вімераў; прытрымлівасць мемаізацыі раней можа сховаць багі, вызваные застарэлымі данымі.
Раздзел 10: Вялікія змены ў мантэйзе
Раздзел 10 «Большая сцэна» працюе наяўней, калі яго спрыяваць як мерымае паверхне. Запісайце адну «золатую» транскрыпцыю, адны прыклад неудачы і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Зберагайце настройкі пазырочна ад коду прыемліка. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Робіце працэс атрыбутавання дадзеных дышэчным, а складныя вырахункі выпрацоўвайце за дапамогою мемаізацыі толькі пасля ўжо здабытых мераванняў. Нерэшаная мемаізацыя можа закрыць багі, вызваны застарэлымі дадзеннямі.
Заключныя мысляў: Настоямы секрэт
Заключныя заўважэнні: стадыя “The Real” працуе наўсёрэдзе, калі яе спрыяваць як мерымае паверхне. Зберагуйце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Документавайце як шлях успеху, так і шлях вярнэння да нормальнага стану. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымось, што дадаецца пазней. Робіце працэс генеравання даных дышаўным, а дорогія працэсы вырахунку застаўляйце пасля меравання, толькі з вікорыстоўваннем мемаізацыі. Неразумная мемаізацыя можа закрыць багі, зв’язаныя з застарэлымі данымі. Заключныя заўважэнні: стадыя “The Real” працуе наўсёрэдзе, калі яе спрыяваць як мерымае паверхне. Зберагуйце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Спрыявайце гэтай этапы як кантракту межаў вхідных дадзенняў і перакананых выходных рэзультатаў. Даўайце назвы артыфактам, задаўце крытэрыя успеху і не прагадайце прыймаць толькі часткова завершаныя рэзультаты без паведамлення.
Прыдатнасць React і ўпрабаванне
Для этапы оптымізацыі працэйнаспроможнасці React неабходна ўзначыць вхідныя даны, адпаведальнага за кожны крок і крэтыяры завершэння працы перад змінайом коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан.