- 博客(14)
- 收藏
- 关注
原创 vim学习笔记
什么是vim?vim其实是由vi演化出来的一个程序员常用的装逼利器。各种人家看不懂的骚操作,然这个编辑器成为在linux环境中大受欢迎的宠儿。今天就来总结一些vim中常用的操作。 首先,如何安装vim呢?在Ubuntu中,我们使用命令 sudo apt-get install vim即可安装,在centos下,一般是有默认安装了的,也可以用yum -y install vim进行安装...
2018-03-24 22:01:13 217
原创 《敏捷软件开发-原则、模式与实践》-第十二章 接口隔离原则(ISP)
如果类的接口不是内聚的,则这个接口是“胖”接口,它可以分解成多组方法。乍一看这个概念,让我有点摸不着头脑,所以接着看后面的内容。 首先,我们了解什么叫“接口污染”。举个栗子:有几个类:door(接口),timeDoor,Timer,TimerClient。当我们需要一个可以定时功能的timeDoor时,我们需要将timeDoor注册到timer中去(public void regis...
2018-03-07 15:47:00 285
原创 《敏捷软件开发-原则、模式与实践》-第十一章 依赖倒置原则(DIP)
首先解释DIP:1、高层模块不应该依赖于底层模块,二者都应该依赖于抽象;2、抽象不应该依赖于细节,细节应该依赖于抽象。相对于我们传统的"过程式方法设计",我们的依赖关系是反的,因此叫做依赖倒置。如果我们的高层模块依赖于底层模块就会直接导致底层模块的改动联动影响高层的各个模块,这是非常荒谬的。低层依赖于高层也让我们的高层代码能够更多的得到复用。DIP原则在我们设计框架的时候是一个核心的原则。...
2018-03-06 18:06:06 221
原创 《敏捷软件开发-原则、模式与实践》-第十章 Liskov替换原则(LSP)
LSP就是:子类型必须能够替换掉它们的基类型。接下来文中举了一个违反LSP的例子并指出违反LSP也会潜在的违反OCP。有三个类,shape,circle,square。其中shape是父类。circle和square都有draw方法。shape中有drawShape()方法,在这个方法中通过判断传入的是circle还是square来调用不同的draw方法。而这么设计是因为工程师觉得多态的开销太大了...
2018-03-06 14:47:11 283
原创 《敏捷软件开发-原则、模式与实践》-第九章 开放-封闭原则(OCP)
首先第一句:软件实体(类,模块,函数等)应该是可以扩展的,但是不可修改的 如果我们实现了OCP,那么直接得到的好处就是:我们对系统进行改动时,只需要添加新的代码,而不必改动已经正常运行的代码 遵循OCP的模块有两个主要特征: 对于扩展是开放的,模块的行为是可以扩展的 对于更改是封闭的,当对模块功能进行扩展时,不必改动源代码,亦或是可链接的库,jar文件等等都无需改变 我们...
2018-03-05 14:33:41 263
原创 《敏捷软件开发-原则、模式与实践》-第八章 单一职责原则(SRP)
从本章开始介绍敏捷设计的一些原则,首当其冲就是单一职责原则,这在之前第六章中的敏捷编程实践中提到过。 一句话说明白这个原则就是:一个类应该仅有一个原因使得它变化。 那么为什么要遵循这个原则将两个不同的职责写到两个类当中呢?如果一个类承担了过多的职责,那么就会有多个原因导致该类需要进行改变,而该由于这个类承担了多个职责,修改这个类就有可能引起多个职责的问题出现。这就是我们前面软件...
2018-03-04 22:29:57 225
原创 《敏捷软件开发-原则、模式与实践》-第七章 什么是敏捷设计
在完成了第一部分《敏捷开发》部分的阅读后,第七章开始介绍敏捷设计。 在本章。作者主要介绍了敏捷设计的一些基本概念。 软件正在腐化的标志:僵化性:一个改动会引起很多的改动,这个设计就是僵化的脆弱性:一个改动会引起很多的问题,而这些问题与修改的地方没有概念上的关联牢固性:包含了对其他系统有用的部分粘滞性:包括软件和环境的粘滞性不必要的复杂性:不必要的重复:其实感觉第五点和第六点就是...
2018-03-04 21:37:41 217
原创 《敏捷软件开发-原则、模式与实践》-第六章 一次编程实践
本章给出了敏捷编程的一次完整的实践。需求是完成一个保龄球的计分程序,两个人进行结对编程的整个过程(居然还包括的心理活动),让我认识到了什么叫表面笑嘻嘻,心理妈卖批。 当我一看到这一章,我直接跳到最后介绍保龄球得分规则的部分,然后合上书,打开eclipse。菜鸟的我花了将近两个小时才算把这个程序比较完善的写完了,当然其中包含了我上一章所学到的重构。然后我打开书先看了一下程序的最终版本,...
2018-03-04 16:53:36 349
原创 《敏捷软件开发-原则、模式与实践》-第五章 重构
本章的主要讲的是重构,但是仅仅给出了一个重构的例子以及简略说明了一些重构的方法。重构的知识我认为对于开发人员还是很有必要去单独去找一本书仔细去学习的。这里只大略讲一下本章中提到的一些知识点。 本章站在第一视角,对一个素数产生的程序进行了重构。看到书中最原始的程序版本,我不禁冒出了一句:“什么鬼?!”。程序中竟然还有变量的名字为s,f这种完全没有意义的东西,甚至是一个函数写到了底。接下...
2018-03-04 16:32:42 171
原创 《敏捷软件开发-原则、模式与实践》-第四章 测试
测试,是软件开发中必不可少的一项。它的意义在于:1、验证程序的正确性;2、迫使我们使用不同的(程序调用者的角度)观察点;3、使得程序设计为可测试的; 在本章中,作者还给出了一个示例,有兴趣的读者可以看一看,我认为其核心就是想告诉我们单元测试能够让我们的程序设计更多的解耦,这才设计当中是非常有好处的。 对于开发人员,更多关注的就是单元测试了,而测试在程序设计上提供的视角我认为还是...
2018-03-04 16:12:14 217
原创 《敏捷软件开发-原则、模式与实践》-第三章 计划
本章主要是介绍了在敏捷开发中关于开发计划上的一些东西。首先我们要和客户商讨,将需要完成的任务以用户素材的方式展示出来,各个用户素材应该差不多大,太大的应该被分解,而小的素材应该合并。在开发的前期阶段,我们完成了一些素材点,这样就能对团队的开发速度做出一个基本的估算,越久估算的就越准确,从而有利于我们对开发进行良好的计划,并粗略的计算出开发的成本。 客户首先选出一些用户素材需要开发团队...
2018-03-04 16:02:56 168
原创 《敏捷软件开发-原则、模式与实践》-第二章 极限编程概述
极限编程(extreme Programming,简称XP),是敏捷方法中最著名的一个。 在XP中,和第一章说的一样,也是强调客户作为团队的成员。有一个新的概念就是用户素材,其实就是对于需求的交流所记录的下来的东西。另外XP也有短的交付周期,通常小的迭代一次是两周,6次及3个月是一次大的迭代。 此外本章还讲了结对编程,这个我个人觉得还挺有意思,两个人可以相互学习,但是我很怀疑在...
2018-03-04 00:22:36 238
原创 《敏捷软件开发-原则、模式与实践》-第一章 敏捷实践
作为一只菜鸡,刚刚毕业,还未进入华为工作,先读一读本岗位所推荐的书籍,为未来做好准备。写写博客,就当总结,记录每一章自己的收获,先从第一章开始。 第一章其实干货不多,主要就是介绍了一下敏捷联盟的一些历史,以及敏捷宣言,以及一些原则。 敏捷宣言:个体交互 胜过 过程和工具;可以工作的软件 胜过 面面俱到的文档;客户合作 胜过 合同谈判;响应变化 胜过 遵循计划; ...
2018-03-03 17:24:19 2034
原创 开通博客第一天
今天是我写的第一篇个人博客。在研究生阶段,我从化学行业步入了计算机行业,非常感谢中科大给我这个机会,能够让我在程序员的这条道路上开始拼搏。也就是在18年的4月,我即将告别校园,正式步入工作。很幸运,华为成为了我的第一家公司,我的内心非常兴奋,也非常紧张,怕自己太弱,满足不了公司对我的期待。 听说,每个技术人员都应该有自己的博客,写技术博客能够加强自己的技术实力,总结总结自己的经验,同...
2018-03-03 17:04:40 155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人