- 浏览: 42880 次
- 性别:
- 来自: 北京
文章列表
抽象指的是从纷繁复杂的事物中提炼本质的过程,是一个具体到概念的过程, 例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。
在软件业,抽象能力的重要性怎么说都不为过,因为软件开发是一个高度复杂的智力活动,程序员经常需要面对、处理异常复杂的业务和逻辑,如果你不具备强大的 抽象能力,无法把具体变成概念,进而驾驭概念进行思考, 你就很难降低问题的复杂度,从而陷入泥潭,无法自拔。 无论你学会了多么强大的程序语言,你的编程能力也很难有质的提高。
当然抽象不仅仅是软件开发的独有概念,在别的领域可以看到更多,例如帝国经常提的“三. 个. 代. 表”,“和. ...
传统的开发团队通常按角色就行分工, 开发人员只管开发, 测试人员只管测试, 在自己的职责之外的事, 要么是看不见, 要么是觉得不是我的活,我不用去管,做好做坏和我没有关系。
而敏捷软件开发恰恰相反, 更加强调“Whole Team”, 即整个团队对外做出承诺, 团队中的所有人对所有的开发,测试,文档等任务附有责任。
如果不能按时交付高质量的软件, 就是整个团队的责任, 某一个Developer/Tester做的再好也不行。
这就要求团队中的人能互相帮助, 正像华为公司说的“败则拼死相救, 胜则举杯相庆”。 所以团队中的人员最好具备多种技能,Developer能帮助测试 ...
我是一个科幻小说迷, 记得第一次看科幻小说是在上初中的时候, 在父亲工厂的图书阅览室中看到一本《郑文光科幻小说选》 , 被其中的《仙鹤和人》,《古庙奇人》,《太平洋人》,《飞向人马座》等深深吸引,顿时觉得除了武侠之外还有如此好看的东西, 从此一发不可收拾。
可惜的是当时科幻小说实在是太过稀少, 我家所在的小城镇文化资源更加稀缺,我翻来覆去还只是那本《郑文光科幻小说选》
郑文光可以说是中国科幻小说之父, 以科幻作家身份加入中国作家协会的第一人。他的优秀小说大都创作于70年代末和80年代初, 非常可惜的是83年因病停止了创作。就像金庸封笔一样,让人叹息。
郑文光的小说文笔非常清新自然, 读起 ...
接上一篇 《茶余饭后:聊一聊那些神一样的程序员们 》
这一篇主要聊一聊安德斯·海尔斯伯格(Anders Hejlsberg ),他没有获得过图灵奖, 在名气上比不上前面几位,但也是另外一个传奇。
其实安德斯还真的和图灵奖有 ...
中午吃饭回来, 路上和同事偶尔聊起了IT界的一些牛人们, 他们做出的那些常人难以企及的开创性的工作,常常让我们是叹而观止,仅仅用“牛”来形容已经不够了, 得用“神一样的超级程序员” 才能表达敬仰之情,这里总 ...
[置顶] 软件为什么这么复杂
- 博客分类:
- 感想
春节前和同事在回家的路上看到了建筑工地,不由的感慨建筑业相比软件业来讲实在是成熟太多了! 想想看,建筑师设计好图纸,交给建筑公司(大包工头), 大包工头再报给小包工头, 小包工头随便抓一些农民工就可以干活了! 农民工们可不懂得那么多高深的建筑原理, 对整个建筑也并不了解,可是他们只需要把自己的一砖一瓦做好,整个建筑就能做成了 -- 当然也有豆腐渣工程-- 但毕竟是少数,排除在外。
更重要的是他们根本不用担心项目的后期客户突然想改设计方案,客户不会也不可能要求你把朝北的窗户挪到南边去,也不会要求把10层楼中的第3层和第7层扒掉重盖。
我们这些苦苦挣扎的码农们肯定会想, 什么时候软 ...
11年刚进入一个新部门,接手一个老项目,典型的legacy code , 一个jsp 好几千行,那叫一个乱。
但是细细瞧瞧, 还有不少代码是不错的,依稀能看到漂亮代码的影子,可以想象,当初的架构应该还是优美的,只不过经过了若干程 ...
为一个咨询项目做准备,学习了几种对C语言函数进行mock的方法,由于C语言面向过程, 缺乏封装,继承,多态等面向对象语言的特性, 也无法利用面向对象中多态这个特性来实现mock,相对来说比java等OO的语言难于测试。 但也不是没有办法,先看例子: 下面的代码中account_update函数使用了db_update这个函数,它会直接调用数据库,是个重量级的依赖。 为了对这段代码进行测试, 需要把db_update函数隔离,怎么处理?#include <DFHLItem.h>#include <DHLSRecord.h>extern int db_update(in ...
ResourceBundle是java开发中非常实用的一个类,主要用来处理应用程序多语言这样的国际化问题。
如果你的应用程序如果有国际化的需求,可以考虑使用ResourceBundle, 你要做的就是给出满足特定格式的Properties 文件,例如
resource.propreties
resource_zh_CN.properties
resource_ja_JP.properties.
然后应用程序使用ResourceBundle.getBundle(“resource”, locale) 就可以自动的搜索的相应Locale的Properties ...
刚刚开始接触Node.js时, google了很多文章,但发现大部分都是泛泛的介绍安装,配置,以及介绍几个小例子
有一种雾里观花的感觉,所以非常困惑,不知道Node.js到底解决了什么问题,它的优势到底在哪儿,为什么这么火。
经 ...
乔帮主当年推出iPad的时候, 果粉们欢呼雀跃,还有很大一部分人冷眼旁观, 我就属于后者,一直很疑惑这东西到底有什么用,我是个实用主义者, 公司用台式机, 家里好几台旧笔记本电脑, 上网,看电影,听歌,打游戏绰绰 ...
“苹果今天发布了2011财年第二季度财报。报告显示,苹果第二季度营收为246.7亿美元
,创下历史新高,比去年同期的135.0亿美元增长83%;苹果第二季度净利润为59.9亿美元
,同样创下历史新高,比去年同期的30.7亿美元增长95%。”
http://tech.sina.com.cn/it/2011-04-21/05065431395.shtml
再对比一些蓝色巨人IBM 的2011第一季度财报:
“IBM
今天发布了2011财年第一季度财报。报告显示,IBM第一季度营收为246亿
美元
,比去年同期增长7.7%;净利润为28.6亿美元
,比去年同期增长1 ...
问题: 我已经通过添加删除程序删除了Websphere,也手工删除了安装的文件夹,再次安装到同一目录的时候报下面错误:
“在重新安装到同一目录前,指定不同的目录或执行手工卸载以除去所有程序包”。
这一问题折腾了我好久,清除了注册表,清除了Service,都不管用。后来发现在C:\Windows目录下有个 vpd.properties 文件, 删除以后居然解决了。
不知道这一文件是做什么的,有什么副作用没有?
我们已经看到了太多的TDD例子, 无非是一些计算器,Stack,保龄球游戏, 拍卖物品等等。 它们都太简单了,只能拿来吸引眼球,展示一些基本的TDD概念。
每个人都很容易理解TDD的基本步骤:
编写一个失败的测试
开发足够的代码让测试通过
重构
但是为什么我们不能把它们应用到自己的实际开发工作中去? 为什么我们想利用TDD进行新需求开发的时候还是手足无措,不知道如何下手?
敏捷实践中的TDD只是告诉了我们形式
,没有告诉我们内容
, 更重要的是对于不同类型的应用程序 它没有告诉我们如何开始
!
首先需要澄清一个问题,TDD只是针对单元测试吗?我想答案是 ...
一个软件的品质分为两类:外部品质和内部品质, 外部品质例如可用性,稳定性等等因为要交付给客户,很容易被管理者和开发人员关注,
但是内部品质例如可维护性,可扩展性等很容易被抛之脑后。 开发人员都习惯于这儿改一下,那儿改一点来完成一个功能, 不愿意(没有勇气,没有时间...)来把代码变成 Clean Code.
但是 事实无数次的告诉我们,代码被阅读的时间远远大于代码被编写的时间
,如果没有Clean Code, 代码库很快就会变得难于理解, 无法维护, 只好不停的打补丁。 最后代码库变成了一个大怪兽。 任何一个试图修改它的人都变得战战兢兢,如履薄冰。
以Clean Code为标准, ...