Atitit 深入理解软件的本质 attilax总结 软件三原则"三次原则"是DRY原则和YAGNI原则的折

1.1.1. 软件的本质:抽象  1

1.2. 软件开发的过程就是不断抽象的过程 1)机器语言--> 汇编语言-->高级语言,这就是一个不断抽象的过程,1

1.3. 代码的抽象三原则_软件工程_酷勤网.htm1

1.4. “软件是存储、通信、UI(user interface)和业务逻辑的紧密结合体2

1.5. 在软件的生命周期中,较稳定的是存储和通信,最易变化的是业务逻辑;2

1.6. 在软件的层次上,存储和通信一般处于底层,而业务逻辑处于最上层2

1.7. 软件的抽象如何进行抽象??抽象的层次不超过三层2

1.8. 何谓抽象?? 即是可以把它大概画出来即为第一层抽象2

1.1.1. 软件的本质:抽象  

1.1. 软件开发的过程就是不断抽象的过程 1)机器语言--> 汇编语言-->高级语言,这就是一个不断抽象的过程,

随着层次的提升,人们的开发效率也越来越高。函数/过程是重要的抽象

文件也是抽象的一个层次

人认为java语言中的包、c#的命名空间属于在此层次之上的更高层次的抽

软件架构的模块划分,是对系统的抽象

1.2. 代码的抽象三原则_软件工程_酷勤网.htm

一、DRY原则

二、YAGNI原则

YAGNI是 You aren't gonna need it 的缩写,意思是"你不会需要它"。

三、Rule Of Three原则

Rule of three称为"三次原则",指的是当某个功能第三次出现时,才进行"抽象化"。

二、三种常见的抽象方法 分类class化,聚集aggrate

分类class化  学生(王兰,李伟)

聚集aggrate   对象与属性的关系。(李伟,名字,年龄)

概括 generation  学生》》本科生,研究生

 

 

1.3. “软件是存储、通信、UI(user interface)和业务逻辑的紧密结合体

1.4. 在软件的生命周期中,较稳定的是存储和通信,最易变化的是业务逻辑;

1.5. 在软件的层次上,存储和通信一般处于底层,而业务逻辑处于最上层

1.6. 软件的抽象如何进行抽象??抽象的层次不超过三层

1.7. 抽象层次越高,接口的语意就越模糊,适用的范围就越广,到最后就会变成数学模型或者概念:

1.8. 何谓抽象?? 即是可以把它大概画出来即为第一层抽象

比吗,画出马,就是第一个抽象。。

在上抽象就是动物,动物,就没办法话出来了。。在上一层,生物,根加没办法。

1.9. 抽象的层次性  具体的 vs抽象

当说“这是一只猫”的时候,如果站在哺乳动物的角度来看这句话是具体的,而如果站在波斯猫的角度来看这句话是抽象的。可见同一段描述在高于它的抽象层次来看就是具体的,在低于它的抽象层次来看就是抽象的。波斯猫->猫->哺乳动物->动物->生物->物质->万事万物,事物的抽象层次不断提升达到顶级的时候,就是中国古代智慧结晶《易经》中所谓的阴阳变化,

参考资料

软件抽象 - Tony Bai - 博客大巴.htm

数据抽象及三种抽象方法_百度文库.htm

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher 王中之王King of Kings 虔诚者Pious 宗教信仰捍卫者 Defender of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak

简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名::Emir Attilax Akbar bin Mahmud bin  attila bin Solomon Al Rapanui

埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门  阿尔 拉帕努伊

常用名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源:attilax的专栏   http://www.cnblogs.com/attilax/

--Atiend

Atitit 深入理解软件的本质 attilax总结 软件三原则"三次原则"是DRY原则和YAGNI原则的折的更多相关文章

  1. Atitit 深入理解抽象类与接口 attilax总结

    Atitit 深入理解抽象类与接口 attilax总结 1.1. 主要区别接口侧重于动作抽象..抽象类是属性名词抽象..1 1.2. 抽象层次类>>抽象类>>接口1 1.3. ...

  2. Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别

    Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别 通常来说函数调用要用到的两条基本的指令:”CALL”指令和”RET”指令.”CALL”指令将当前的指令指针(这个指 ...

  3. Atitit 深入理解耦合Coupling的原理与attilax总结

    Atitit 深入理解耦合Coupling的原理与attilax总结     耦合是指两个或两个以上的电路元件或电网络等的输入与输出之间存在紧密配合与相互影响,并通过相互作用从一侧向另一侧传输能量的现 ...

  4. atitit.attilax的软件 架构 理念.docx

    atitit.attilax的软件 架构 理念.docx 1. 预先规划.1 2. 全体系化1 3. 跨平台2 4. 跨语言2 5. Dsl化2 5.1. 界面ui h5化2 6. 跨架构化2 7. ...

  5. Atitit 图像金字塔原理与概率 attilax的理解总结qb23

    Atitit 图像金字塔原理与概率 attilax的理解总结qb23 1.1. 高斯金字塔  (  Gaussianpyramid): 拉普拉斯金字塔 (Laplacianpyramid):1 1.2 ...

  6. Atitit 游戏的原理与概论attilax总结

    Atitit 游戏的原理与概论attilax总结 1. 游戏历史2 1.1.1. 盘点PC游戏史上最重要的50款游戏2 1.1.2. 回味人类文明进程 五款经典的历史游戏2 2. 游戏类型(主要分为6 ...

  7. Atitit  深入理解命名空间namespace  java c# php js

    Atitit  深入理解命名空间namespace  java c# php js 1.1. Namespace还是package1 1.2. import同时解决了令人头疼的include1 1.3 ...

  8. Atitit  ocr识别原理 与概论 attilax总结

    Atitit  ocr识别原理 与概论 attilax总结 1.1. Ocr的过程与流程1 1.2. OCR不同技术细分略有不同,但大概原理是一样的. 即主要技术过程是:二值化(又叫归一化)----- ...

  9. Atitit.并发编程原理与概论 attilax总结

    Atitit.并发编程原理与概论 attilax总结 1. 并发一般涉及如下几个方面:2 2. 线程安全性 ( 2.2 原子性 2.3 加锁机制2 2.1. 线程封闭3.3.1Ad-hoc线程封闭 3 ...

随机推荐

  1. iOS 之 SVN提交错误:"XXX" is scheduled for addition, but is missing

    今天使用SVN提交项目时,出现了这样的提示:"XXX" is scheduled for addition, but is missing.(无关紧要的东西用XXX代替). 看报错 ...

  2. iOS 常用第三方类库、完整APP示例

    一.第三方类库 1:基于响应式编程思想的oc地址:https://github.com/ReactiveCocoa/ReactiveCocoa2:hud提示框地址:https://github.com ...

  3. js jquery中判断checkbox是否被选中的方法

    在js中: document.getElementById("checkboxID").checked   返回true或者false jQuery中: $("input ...

  4. css3复杂选择器+内容生成+Css Hack

    1.复杂选择器2.内容生成3.多列4.CSS Hack(浏览器兼容性)=======================================1.复杂选择器 1.兄弟选择器 1.特点: 1.通过 ...

  5. 关于UIAlertAction如何修改sheet上的字体颜色

    相信很多程序员都会遇到需求是这样的: 但是你发现无论怎么设置cancel和Destructive都无法让红色字体移动到下面取消按钮上: 其实之前一直用错,用了ios9之前的UIActionSheet这 ...

  6. 数据分析之Numpy基础:数组和适量计算

    Numpy(Numerical Python)是高性能科学计算和数据分析的基础包. 1.Numpy的ndarray:一种多维数组对象 对于每个数组而言,都有shape和dtype这两个属性来获取数组的 ...

  7. ubuntu自定义分辨率

    首先说下为啥要专门敲个文章来说明这个问题,因为我最近入手了一台分辨率为3200*1800的高分辨率笔记本,但使用的时候发现现在的操作系统及其诸多软件对高分辨率屏幕的支持真的是太烂,字体发虚或者变得非常 ...

  8. linux下打包zip文件

    zip [参数] [打包后的文件名] [打包的目录路径] linux zip命令参数列表:-a 将文件转成ASCII模式-F 尝试修复损坏的压缩文件    -h 显示帮助界面-m       将文件压 ...

  9. IOS网络第六天 ASI (略)

    **** 02-ASI01-基本使用(了解) 03-ASI02-其他用法(了解) 04-ASI03-POST请求(了解) 05-ASI04-文件下载(了解) 06-ASI05-文件上传(了解) 07- ...

  10. 使用Word2013发布博客

    步骤一.新建博客文章 打开Word软件,新建->博客文章(第一次在模板下面可能找不到,可以在搜索栏中搜索"博客",下次在首页就能直接找到). 步骤二.编辑博客文章 1.输入文 ...