最难解的耦合 — 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同时发现的,以其名字首字 ...
随机推荐
- 大数据学习环境搭建(CentOS6.9+Hadoop2.7.3+Hive1.2.1+Hbase1.3.1+Spark2.1.1)
node1 192.168.1.11 node2 192.168.1.12 node3 192.168.1.13 备注 NameNode Hadoop Y Y 高可用 DateNode Y Y Y R ...
- ubuntu16.04 npm安装
$ sudo apt-get install python-software-properties $ curl -sL https://deb.nodesource.com/setup_6.x | ...
- EntityFramework.Extended 对EF进行扩展
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- 移动端禁止页面拖动 h5禁止拖动页面
PC上css控制滚动仅css("overflow","hidden")已足够. 但是,如果在Mobile上还是可以拖动的!所以需要监听touchmove事件. ...
- 试水STF(smartphone test farm)
STF简介 简介: STF , smartphone test farm, 是一款能够通过浏览器远程管理智能设备的系统, 能为移动自动化测试提供方便快捷的服务,免去测试工程师的后顾之忧. 功能点: 支 ...
- apache中如何调用CGI脚本
参考: http://www.jdon.com/idea/cgi.htm http://www.jb51.net/article/49069.htm 在Apache在配置对CGI的支持 LoadMod ...
- Django-jet自定义菜单
Django-jet自定义菜单:并且可设置权限.https://jet.readthedocs.io/en/latest/config_file.html#custom-menu
- CentOS 服务器添加简易"回收站"
删除是危险系数很高的操作,一旦误删可能会造成难以估计的损失.比如,一条简单的语句:rm –rf /* 就会把整个系统全部删除,而 Linux 并不会因为这条语句的不合理而拒绝执行. 在 Windows ...
- 怎么让Windows2012和Windows2008多用户同时远程---经过测试有效
链接地址:https://jingyan.baidu.com/article/cd4c2979f19765756e6e60ec.html 怎么让Windows2012和Windows2008多用户同时 ...
- [加密]证书、CA、证书信任链
转自:https://www.jianshu.com/p/6bf2f9a37feb TLS 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(S ...