- 博客(15)
- 收藏
- 关注
原创 面向对象原则小总结
1. 开放--封闭原则(Open--Close Principle){ 1.1 开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。1988年,勃兰特·梅耶(Bertrand Meyer)在他的著作《面向对象软件构造(Object Oriented Software Construction)》中提出了开
2015-10-18 09:52:36
316
原创 谈谈可读性在团队软件工程中的重要性--发表在公司黑板报的第二篇文章
尽管很多软件工程相关的书目、以及项目组平时的代码检视中都会提及代码可读的重要性,但在我们的实践中,代码可读依然没有得到足够的重视。可读性较差的代码会导致其读者(团队其它成员、后期维护的同事、新员工)花费更多的力气去理解代码。代码往往被写一遍,被读何止十遍?特别是长生命周期的项目,代码提交到代码库后,一位作者,几十位读者,如果每位都多花几分钟去理解代码,那么总体上效率的损失是可观的。 损失还
2015-06-11 07:55:16
467
原创 谈防御式编程---发表于公司黑板报的第一篇文章
最近一段时间,时常会出现BCC进程在业务过程中挂掉之后重启,或者干脆挂掉不重启的问题。每次问题定位之后,总是最简单的失误,绝大多数是指针没有进行空保护就使用,也有类声明了构造函数而未实现引起Fail的问题。被问题牵着走总是苦恼的,定位的过程也常常艰辛,有Core文件的帮助的话一般能比较快速的定位,没有Core文件时定位问题过程相当煎熬。与其艰难定位,不如在编程时考虑代码的防御性。举例来说,
2015-06-11 07:53:34
395
原创 有效的STL学习记录
10.25{ 1. 你不可能在不知道怎么写自己的函数对象的情况下有效地使用STL 2. 讨论STL而没有提及引用计数是几乎不可能的, 基于指针的容器的设计几乎总要导致引用计数 3. STL编程的四大金刚:容器、迭代器、算法、函数对象 }{ 1. 仔细选择你的容器 { 1.1 有哪些容器? 标准STL序列容器:vector、string、deque和li
2014-10-27 20:53:52
252
原创 Linux下的程序调试
Linux下的C、C++程序常常会因为内存访问错误等原因造成segment fault(段错误),此时如果系统core dump功能是打开的,那么将会有内存映像转储到硬盘上来,之后可以用gdb对core文件进行分析,还原系统发生段错误时刻的堆栈情况。这两天哥试着学习了下linux下的程序调试,虽然没有VS集成环境那样直观直接,但对于定位错误发生点还是很给力!记录一下学到的知识。1.
2014-10-25 20:25:01
257
原创 (五)Decorator模式学习
Decorator模式与适配器模式、包装器模式有点像。原有的抽象类AbsClassItf定义了某种接口ItfX。原有的具体类ConClass实现了这个接口。原有的接口ItfX和其派生的功能实现成员函数都有很好的概念一致性。但是有些特殊的场合、流程下,需要对ConClass的ItfX实现增加一些额外的功能。如果将这些额外的功能加入到ConClass的实现中,一是会使原函数变的臃肿,复杂,破坏
2014-10-25 20:19:28
330
原创 (四)模板方法学习
//模板方法---多个子类,对于某一种流程,处理方法只有细微的差别,此时,可以将不同对象之间相同的处理,集中到其基类中处理,//而有差别的地方,在子类中进行分别实现。//定义一个抽象基类,其public接口:首先---实现公共的处理,然后---调用由子类必须实现的虚函数,实现差异化的处理----//这里需要注意的是,要特别仔细的辨别算法中哪里部分是稳定的,不变的公共部分。否则一旦发现公
2014-10-25 20:18:12
254
原创 Linux学习记录(四)
1.1 function fun_name { commands } 或者 func_name() { commands } 两种方法定义函数 1.2 函数在使用前必须已经定义过,否则出错 1.3 函数重定义不会报错,但新定义取代旧定义 1.4 函数的返回值与脚本的执行状态类似,用"$?"来获取函数返回值。 用 return 语句返回值,return 返回的值 范围为0---25
2014-09-27 08:04:59
245
原创 Linux学习记录(二)
//基本脚本{ 1. expr 后面的计算式,算符前后 要有空格 ,不然会当字符串输出 2. 用expr做计算式不方便,更好的用var=$[1+2*3] 这样的方法,缺点是,只能用于整数。 3. 计算浮点数:用bc命令进入计算器,用quit命令退出, scale=4 设置小数点显示后4位。 4. bc可用于脚本之中,方法是用echo 将命令管道到bc中,命令必须用双引号,不能用
2014-09-27 08:03:40
270
原创 Linux学习记录(三)
1. if 和 then 要放在不同的行,同一行时,脚本运行出现语法错误。 2. 脚本中用到赋值时,=号前后不能有空格;但(()) 双圆括号中是个例外 3. $0表示程序名称,$1表示第一个参数,以此类推,多个参数用空格分隔; 3.1 如果参数本身带空格,用“”引号括起来 3.2 如果参数多于9个,要用${10}, ${11}来表示,以此类推 3.3 脚本中用$#表示输
2014-09-27 08:03:26
318
原创 Linux学习记录(一)
//Linux命令使用://1.基本命令1. 查看内存信息: cat /proc/meminfo2. 查看共享分页内存信息: ipcs -m3. Linux的运行级别:1~5 4. 查看当前Linux系统中运行的进程 :ps ax5. GNU coreutils: 处理文件的实用程序、管理进程的实用程序、操作字符的实用程序 6. 改变文件目录:cd desitina
2014-09-27 08:02:43
239
原创 (一)职责链模式学习
//职责链模式:一种将处理同一个请求的多个对象串连起来的设计模式。它使得请求只与多个对象中的一个交互,而不用让请求与多个对象都发生交互,从而避免了一个请求与多个对象的耦合。// 首先定义要处理的请求(可以将该请求封装于一个类中)// 然后定义抽象的处理该请求的类, 此类中有一个成员变量和一个“设置继任处理者”的方法,以及“处理请求”接口,处理请求接收“请求的类”为形参// 再定义几个具
2014-09-27 08:01:09
217
原创 (二)抽象工厂学习心得
去年买了GoF的设计模式的书,始终无法能够入门。 由于平时的编程以C语言为主,C++也只是用到了一些容器的便利性,没有真正的面向对象的思维方式,看这本设计模式的书时,始终无法理解其中的深意。今年买了本大话设计模式,照着书中的例子学习,再加上书本中对设计模式较为浅显的讲解----有的地方讲的并不准确,但却可以用例子让我最快的明白这个模式的大意。粗粗的看完大话,再看GOF的书,才觉得有
2014-09-27 07:59:41
472
原创 (三)Singleton模式
//单体模式保证程序中一个类只有一个唯一的实例。通过将类的构造函数私有化,使得类用户无法得到类的实例;同时类的内部产生一个实例,并保存,然后提供一个接口,返回这个唯一的实例#ifndef _SINGLETON_H_#define _SINGLETON_H_#include #include using std::string;using std::cout;using
2014-09-24 19:06:04
303
原创 初学MqSql在Linux中的使用
1. 基本语句: bash> which mysql ----查看mysql运行的目录 mysql -u userName -pPassword ----登录到mysql use database; ----连接到某个数据库 show databases;----当前已经创建的数据库 show tables; ----显示当前数据库中的表 create dat
2014-09-19 17:24:06
365
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人