gif分解合成_如何通过分解和合成使复杂的问题更容易

gif分解合成

Discover Functional JavaScript was named one of the best new Functional Programming books by BookAuthority!

“发现功能JavaScript”BookAuthority评为最佳新功能编程书籍之一

Our natural way of dealing with complexity is to break it into smaller pieces and then put everything back together.

我们处理复杂性的自然方法是将其分解为较小的部分,然后将所有内容放回原处。

This is a two step process:

这是一个两步过程:

  • decompose the problem into smaller parts

    将问题分解成更小的部分
  • compose the small parts to solve the problem

    组成小零件解决问题

We decompose in smaller parts because they are easier to understand and implement. The smaller parts can be developed in parallel.

我们将较小的部分分解,因为它们更易于理解和实施。 较小的部分可以并行开发。

The process of decomposition is about assigning responsibilities and giving names. This makes it easy to talk and reason about. Once we identify a responsibility, we can reuse it.

分解的过程是关于分配职责和给出名称的。 这使得谈论和推理变得容易。 一旦确定了责任,就可以重用它。

Composition is about combining the small parts together and establishing a relationship between them. We decide the way these pieces communicate, the order in which they execute, and how data flows between them.

组成是将小部分组合在一起并在它们之间建立关系。 我们决定这些部分的通信方式,它们执行的顺序以及它们之间的数据流向。

We find a system hard to understand even if it is split in smaller parts, if there is a high number of relations between these parts. In order to make a system easier to understand, we need to minimize the number of possible connections between its parts.

即使这些部分之间存在大量关系,即使将系统分成较小的部分,我们也很难理解。 为了使系统更易于理解,我们需要最大程度地减少系统各部分之间可能的连接数。

对象分解 (Object decomposition)

Objects are more than state and behavior working together. Objects are things with responsibilities.

对象不仅仅是状态和行为协同工作。 对象是有责任的事物。

分解 (Decompose)

In How to create a three layer application with React, I take a to-do list application and split the responsibilities between the following objects :

在如何使用React创建一个三层应用程序中 ,我将一个待办事项列表应用程序并在以下对象之间划分职责:

  • TodoDataService : responsible for the communication with the server Todo API

    TodoDataService :负责与服务器Todo API的通信

  • UserDataService : responsible for the communication with the server User API.

    UserDataService :负责与服务器User API的通信。

  • TodoStore : the domain store for managing to-dos. It is the single source of truth regarding to-dos.

    TodoStore :用于管理待办事项的域存储。 这是关于待办事项的唯一事实来源。

  • UserStore : the domain store for managing users.

    UserStore :用于管理用户的域存储。

  • TodoListContainer : the root container component displaying the list of to-dos.

    TodoListContainer :显示待办事项列表的根容器组件。

As you can see, when decomposing, I assign responsibilities and give names.

如您所见,在分解时,我分配职责并给出名称。

撰写 (Compose)

Next, I compose them together in a single function. This is the place where all objects are created and dependencies injected. It is called Composition Root.

接下来,我将它们组合成一个函数。 在这里创建所有对象并注入依赖项。 它称为合成根。

Discover Functional JavaScript was named one of the best new Functional Programming books by BookAuthority!

发现功能JavaScript被称为 BookAuthority最好的新功能编程书籍

For more on applying functional programming techniques in React take a look at Functional React.

有关在React中应用函数式编程技术的更多信息,请查看 Functional React

Learn functional React, in a project-based way, with Functional Architecture with React and Redux.

通过带有React和Redux的功能架构 ,以基于项目的方式学习功能性React

Follow on Twitter

在Twitter上关注

翻译自: https://www.freecodecamp.org/news/how-to-make-complex-problems-easier-by-decomposing-and-composing-be57ce230c49/

gif分解合成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/392657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vs2005 新建项目一片空白

最近在研究 workflow fundation ,但是在安装了他的extensions之后,发现VS2005 新建项目一片空白,除开workflow其他的项目模板全部丢失,新建项目对话框中空空如也。查阅资料后发现,可以通过 命令 devenv.exe /InstallVSTemplates 来…

docker导入镜像 liunx_docker扫盲?面试连这都不会就等着挂吧

推荐阅读:java喵:6大面试技能树:JAVA基础JVM算法数据库计算机网络操作系统​zhuanlan.zhihu.com一只Tom猫:都是“Redis惹的祸”,害我差点挂在美团三面,真是“虚惊一场”!​zhuanlan.zhihu.com现…

crontab里shell脚本将top信息写入文件

crontab里shell脚本将top信息写入文件: 注: 1、top -n 1代表执行1次退出(默认top是不退出的),-d 1代表每1秒执行1次 2、crontab里需加/bin/bash # crontab -e */5 * * * * /bin/bash /usr/local/bin/top.sh # vi top.sh #!/bin/ba…

leetcode 1030. 距离顺序排列矩阵单元格(bfs)

给出 R 行 C 列的矩阵&#xff0c;其中的单元格的整数坐标为 (r, c)&#xff0c;满足 0 < r < R 且 0 < c < C。 另外&#xff0c;我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。 返回矩阵中的所有单元格的坐标&#xff0c;并按到 (r0, c0) 的距离从最小到…

Linux iptables:规则原理和基础

什么是iptables&#xff1f; iptables是Linux下功能强大的应用层防火墙工具&#xff0c;但了解其规则原理和基础后&#xff0c;配置起来也非常简单。 什么是Netfilter&#xff1f; 说到iptables必然提到Netfilter&#xff0c;iptables是应用层的&#xff0c;其实质是一个定义规…

太阳系八大行星碰撞的视频_火星的身世:从太阳系的起源说起

大约46亿年前盘状的太阳星云从一大片又冷又暗的气体云中诞生太阳自己并没有任何暴露确切年龄的线索&#xff0c;我们之所以能够知道太阳系的“生日”&#xff0c;是因为迄今从陨石中找到的最古老固体物质&#xff0c;年龄约为45.68亿年。一般认为&#xff0c;太阳系的各个地方是…

refract推导_我们如何利用Refract来利用React式编程的力量

refract推导by Joe McGrath通过乔麦克格拉斯 我们如何利用Refract来利用React式编程的力量 (How we harnessed the power of reactive programming with Refract) Have you ever wondered how open-source libraries built by companies come into existence?您是否想过公司建…

sql server:查詢系統表

---查看所有存储过程或视图的位置 select a.name,a.[type],b.[definition] from sys.all_objects a,sys.sql_modules b where a.is_ms_shipped0 and a.object_id b.object_id and a.[type] in (P,V,AF) order by a.[name] ASC GO--1、查看所有存储过程与函数 exec sp_store…

UDP数据包的大小

问题来源于日志信息&#xff0c;在这里总结一下&#xff0c;后续在补充新的内容。在链路层&#xff0c;由以太网的物理特性决定了数据帧的长度为&#xff08;46&#xff0b;18&#xff09;---&#xff08;1500&#xff0b;18&#xff09;&#xff0c;其中的18是链路层的首部和尾…

博科查看光功率_法拉第旋光器:非互易性旋转光的偏振

法拉第旋光器是利用法拉第效应制作的光学器件&#xff0c;当入射光正向(或反向)进入旋光器时&#xff0c;入射光偏振面会发生旋转。法拉第效应1845年&#xff0c;法拉第发现&#xff1a;当一束平面偏振光通过置于磁场中的磁光介质时&#xff0c;平面偏振光的偏振面就会随着平行…

Object.prototype 原型和原型链

Object.prototype 原型和原型链 原型 Javascript中所有的对象都是Object的实例&#xff0c;并继承Object.prototype的属性和方法&#xff0c;有些属性是隐藏的。换句话说&#xff0c;在对象创建时会存在预定义的属性&#xff0c;其中有一个属性就是原型对象。在函数对象中存在原…

leetcode 406. 根据身高重建队列(贪心算法)

假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对 (h, k) 表示&#xff0c;其中 h 是这个人的身高&#xff0c;k 是应该排在这个人前面且身高大于或等于 h 的人数。 例如&#xff1a;[5,2] 表示前面应该有 2 个身高大于等于 5 的人&#xff0c;而 [5,0] 表示前面不应该…

java和vue2.0

java中的el表达式${对象.属性}和vue中的双向数据绑定{{mode.xx}}感觉有点类似转载于:https://www.cnblogs.com/YangBinChina/p/11180460.html

oh-my-zsh官方教程

https://github.com/robbyrussell/oh-my-zsh/wiki

leetcode 134. 加油站

在一条环路上有 N 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发&#xff0c;开始时油箱为空。 如果你可以绕环路行驶一周&#…

ps怎么对比原图快捷键_PS学习之旅:ps如何制作满天星,让你夜晚的天空图片更美...

ps学习之旅&#xff0c;本文介绍关于如何利用ps软件来制作满天星&#xff0c;让你夜晚的天空图片更美&#xff0c;操作很简单哦。1工具/原料Adobe Photoshop CS6软件图片一张2效果展示原图&#xff1a;效果图&#xff1a;3方法/步骤(1)打开PS&#xff0c;选择你想要加星星的一张…

linux程序莫名异常怎么查

内存异常经常导致程序出现莫名其妙的错误&#xff0c;往往很难查证&#xff0c;本文介绍在linux下的各种常见内存异常的查证工具和方法。1 访问空指针/未初始化指针/重复释放内存对于像访问空指针、未初始化指针&#xff08;非法地址&#xff09;&#xff0c;重复释放内存等内存…

永磁直驱风力发电机结构图_国内首台10MW海上永磁直驱风力发电机研制成功

2019首届新能源产业投融资论坛2019年10月25日周老师&#xff1a;157129595968月21日&#xff0c;具有完全自主知识产权、国内首台10MW海上永磁直驱风力发电机在东方电气集团东方电机有限公司研制成功&#xff0c;以此优异成绩向新中国成立70周年献礼。10MW海上永磁直驱风力发电…

struts2官方 中文教程 系列六:表单验证

先贴个本帖的地址&#xff0c;以免被爬&#xff1a;struts2教程 官方系列六&#xff1a;表单验证 即 http://www.cnblogs.com/linghaoxinpian/p/6906720.html 下载本章节代码 介绍 在本教程中&#xff0c;我们将探索使用Struts2来验证用户在表单上的输入。有两种方法可以来进…

Alictf 2015决赛题目设计和解题思路

解题思路&#xff1a; https://weibo.com/p/1001603836186467681086 设计题目&#xff1a; http://www.cnblogs.com/qsjmobilesec/p/4456090.html