最难解的耦合 — James
最近好久没写博客,因为换工作原因,从传统企业转行到互联网行业,这次换工作成本很大!
新公司,纯互联网广告公司,BI驱动,出来几日感觉成长空间很大,下面来些干货。
什么是程序、软件
程序 = 数据结构 + 算法
在Head First Python上有一段话,任何值得创建的程序必然会处理数据,有些时候,数据很简单也很直接,但有些情况下,所处理的数据不论从结构还是含义上都很复杂,这概念,都是在架构上也能适用,把微服务改造为数据部分和算法部分!
软件 = 程序 + 文档
这个其实比较纠结,通常好的程序可以使得文档变少,但文档和程序在同步上又是非常难的,怀疑下。
最“难”解的耦合
高内聚、低耦合,贯穿整个软件工程,什么是最难解的耦合?其实是数据的耦合,微服务如果用同一个数据库,抱歉你的不是微服务,因为数据耦合在一起了,通常我们写程序的时候,都会应用SOLID原则、分层、分模块,设计架构的时候,会分布式,CQRS分离,都是围绕高内聚、低耦合;
什么是最松的耦合?是消息,消息驱动,异步事件,明显在现在负责的高并发系统越发重要,也越热,这个时间点大家可曾开始学习Vert.x ?去了解一下吧。
什么是设计
设计,就是把合适的东西,放到合适的地方,这句话看似简单,含义非凡,也是整个软件工程的本质所在,但难在如何定义合适?那需要你对计算机有所了解,对业务问题有所了解,对解空间和问题空间有所了解!所谓没有最好的技术,只有最合适的场景,学问非常之深;
说下设计模式,完成通用功能,上帝类,贫血类,都可以完成,而设计模式又为何要比这些优秀呢?因为它是真的把实现的代码,划分开来,然后组织在一起,这种划分划分了什么?(在微服务设计里叫分区、在DDD里叫聚合根、Bound Context),划分后又该写些什么代码进去呢?设计模式给了你答案:在类似的业务场景中,把合适的代码,放在了合适的位置,这就是设计;
数据的分类
数据的分类一般分为两类,一个是属于业务的数据,一个是属于程序的数据,尽量不要把这两种数据混起来用,这样会耦合;
本人不会个人崇拜,但学到了东西,自然会有分辨能力的,对事!不对人!
最难解的耦合 — James的更多相关文章
- O2O难解餐饮行业趋势下行之困
近几年,O2O这个名词越来越常见,我们不但能够在IT相关资讯栏目看到它的存在,甚至在一些综合新闻版面也能轻易看到. 诚然.线下商家结合线上引流这样的方法,能够带来不少订单,可是O2O是否就能够解决餐饮 ...
- O2O外卖玩众包 开放平台难解标准之痛
开放平台难解标准之痛" title="O2O外卖玩众包 开放平台难解标准之痛"> 有一种怪现象一直是国内互联网企业摆脱不了的附骨之疽--不管规模大小,总是削尖了脑 ...
- WPF杂难解 奇怪的DisconnectedItem
简单场景: 列表绑定后台数据,点击列表项在view的cs中拿点击项的DataContext进一步处理.正常情况下应该是能拿到我绑定上去的数据,但是偶尔会点出来DisconnectedItem,重现几率 ...
- vijos1369:难解的问题
描述 在你的帮助下,蔚蓝来到了埃及.在金字塔里,蔚蓝看到了一个问题,传说,能回答出这个问题的人就能受到埃及法老的祝福,可是蔚蓝日夜奋战,还是想不出来,你能帮帮他么?(XXX: 胡扯,教主怎么可能想不出 ...
- cojs1101. [Vijos1369] 难解的问题==codevs 2188 最长上升子序列
[题目描述] 在你的帮助下,蔚蓝来到了埃及.在金字塔里,蔚蓝看到了一个问题,传说,能回答出这个问题的人就能受到埃及法老的祝福,可是蔚蓝日夜奋战,还是想不出来,你能帮帮他么?(XXX: 胡扯,教主怎么可 ...
- [Vijos P1369]难解的问题
题目大意:给你一个序列,叫你求最长上升子序列长度,但必须包含第k项. 解题思路:我们把k左边的比a[k]大的数去掉,k右边的比k小的数去掉,就可以保证选到a[k]了(因为左边的数小于a[k],而a[k ...
- MATLAB学习笔记(七)——MATLAB解方程与函数极值
(一)线性方程组求解 包含n个未知数,由n个方程构成的线性方程组为: 其矩阵表示形式为: 其中 一.直接求解法 1.左除法 x=A\b; 如果A是奇异的,或者接近奇异的.MATLAB会发出警告信息的. ...
- 【双模卡的相关知识】解SIM卡前需要知道的信息(SIM年分和厂商识别)
<ignore_js_op> 二.SIM版本问题SIM卡的版本有两种说法,一是有些是制造厂制定的,二是电信公司的制定.下面以移动为例,目前我们手里的SIM有几种版本:v0.v1.v2.v3 ...
- KMP算法详解-彻底清楚了(转载+部分原创)
引言 KMP算法指的是字符串模式匹配算法,问题是:在主串T中找到第一次出现完整子串P时的起始位置.该算法是三位大牛:D.E.Knuth.J.H.Morris和V.R.Pratt同时发现的,以其名字首字 ...
随机推荐
- nvidia-smi命令输出详解
nvidia-smi命令输出如下: +-----------------------------------------------------------------------------+ | ...
- docker dcm4chee
The received images should show up in the UI of the Archive at http://localhost:8080/dcm4chee-arc/ui ...
- js正则提取数字小数,提取中文,提取英文
var value="污染物:PM2.5"; //提取中文 console.log(value.replace(/[^\u4E00-\u9FA5]/g,'')); //提取英文 c ...
- Android 获取Activity当前view
View cv = getWindow().getDecorView(); 来自为知笔记(Wiz)
- Python禁用GC优化性能
Python使用的(Garbage Collection, GC)机制是引用计数(Reference Count),其原理是为每一个内存对象进行引用计数,因此当有大量的对象新建或删除时,必须要进行大量 ...
- MATLAB 程序计算结果出现 复数(a+bi)问题
存在对负数开根号的情况了: >> (0.777)^0.1 ans = 0.9751 >> ( ans = 0.6037 >> (0.777)^2.1 ans = 0 ...
- 程序运行在.Net 4.0低版本上 报“System.NullReferenceException”错误
因为程序仅在个别机器上出现“ System.NullReferenceException”问题,而在其他机器上一切运行正常,所以认为是环境问题 具体错误信息如下: 2018-09-14 10:12:1 ...
- [转]Linux Shell 1>/dev/null 2>&1 含义
shell中可能经常能看到:echo log > /dev/null 2>&1 命令的结果可以通过%>的形式来定义输出 /dev/null :代表空设备文件> :代表 ...
- ImageMagick 转换图片格式
[root@ drawable-hdpi-v4]# convert ic_launcher.jpeg ic_launcher.png [root@ drawable-hdpi-v4]# file ic ...
- Unity输出PC端(Windows) 拖拽文件到app中
需求:给策划们写一个PC端(Window)的Excel导表工具.本来用OpenFile打开FileExplorerDialog后让他们自己选择想要添加的Excel文件就行了,结果有个需求是希望能拖拽E ...