本周我阅读了某同学推荐的<创新者>,这本书实际上是两个世纪以来信息技术的编年史,从巴贝奇的差分机到如今互联网时代的超级计算机,作者通过各个时代里一位位杰出的创新者,将计算机诞生.发展.崛起和蓬勃的历程娓娓道来.从一篇篇人入胜的创新者传记中,我看到了埃达·洛夫莱斯的诗意想象.技术热忱与自信坚强,见证了阿塔纳索夫的灵感眷顾与没落,感慨于莫奇利“集百家之长”的智慧……创新者们站在时代的最前沿,推动着历史车轮滚滚前行,也以亲身经历展示着创新之道. 一.创新:想象与实践 想象,是创新者不可或缺的要素.回…
每逢读书笔记上交作业时刻,班级blog页面上总能看到<人月神话>相关的读书笔记,本次软工课邓老师推荐的第一篇读书笔记也是写的<人月神话>,算是对它“耳濡目染”了.本周,我终于抽空读了这本书,感觉确实名不虚传.以下,我将从几方面谈谈我的感想. 一.焦油坑与银弹 书中将大型项目形象地比作焦油坑,开发者往往在巨大的项目里遇到纷繁复杂的问题,并在其中越陷越深,难以掌握全貌和本质.在我看来,软件的开发确实存在其固有问题,在一个开发团队开始挖坑时,由于思路的些许偏差.交流和认知水平的些许欠缺或…
编程中,调试几乎是必不可少的,一劳永逸.一次完成预想功能而完全不出bug的情况凤毛麟角,出现bug→调试→再出现bug→再调试……基本是软件工程中的常态.可以说,软件调试是每个coder的必修课,而<软件调试修炼之道>便是一本调试教科书,考虑到前两次大作业中出现的各种bug,我有必要系统地学习debug的一些思想和技巧,因此本周我阅读了这本书的Part 1:问题的核心.这一部分由五章组成:山重水复疑无路,重现问题,诊断,修复缺陷,反思.以下我将分别浅谈我的阅读感想. 1.概览调试:流程.问题和…
 本周在考虑阅读材料时,我翻阅了<移山之道>,正好看到这一章:两人合作,心想:正好,我们正值结对作业的紧要关头,书中两人合作的宝贵经验和教诲应当对我们有很大帮助.于是,我开始一边在ddl苦海中扑腾挣扎,一边抽空读完了这一章,确实受益匪浅. 这一章首先由一个时间估计的小故事引入:从北京火车站到八达岭长城需要多久.书中两位同学分别考虑不同情况,给出了截然不同的估计,由此引出项目管理要素三角形:功能.资源和时间.这三者在项目中相互制约,维持其平衡方能做好项目.回想这一周我们奋战的经历,首先时间方面紧…
这段时间我阅读了<构建之法>的大部分章节,包括个人技能.软件测试.用户体验和需求分析等相关内容.之前的个人作业和结对作业结束后,我们的工作重心终于转向了团队项目,作为团队中前端组的组长,我和组员们每周碰面.共同商讨团队项目细节并一起实现.因此,书中与团队项目开发有关的第五章.第六章的“团队和流程”“敏捷开发”两部分内容最令我印象深刻.受益匪浅,本次读书笔记主要记录阅读这两章的心得体会. 1.团队模式和开发流程: 团队项目的开发与团队工作模式(分工模式)和整体开发流程息息相关.我们的团队在决定开…
<代码整洁之道>ch5~ch9读书笔记 本周我阅读了本书的第5~9章节,进一步了解整洁代码需要注意的几个方面:格式.对象与数据结构.错误处理.边界测试.单元测试和类的规范.以下我将分别记录各章的阅读心得体会. 1.      Ch5: 代码格式:简单而一致 一直以来,“让代码能工作”是我编程时的头等大事.但事实上,尤其是涉及到体量庞大.经常修改的工程代码时,代码格式才是重中之重.显而易见,一套整洁规范的代码格式能给软件的开发.测试和维护提供巨大方便,而随心所欲或不统一的代码格式则会大大增加代码…
<Practices of an Agile Developer:Woring in the Real World>读书笔记  本周我阅读了<高效程序员的45个习惯:敏捷开发修炼之道>(标题中书名的中文译名)一书,本书并未繁复啰嗦地具体告诉读者如何在软件开发的每一步中做到敏捷,而是从宏观层面介绍了成为高效开发人员需要具备的习惯.观念和思想方法. 所谓敏捷,书中有一句精辟概扩:“敏捷开发即在一个高度协作的环境中,不断地使用反馈进行自我调整和完善”.简而言之,敏捷开发意味着“小团队”“…
<代码整洁之道>ch1~ch4读书笔记  <clean code>正如其书名所言,是一本关于整洁代码规范的“教科书”.作者在书中通过实例阐述了整洁代码带来的种种利处以及混乱代码.冗余注释等带来的毁灭性后果,并且结合多段代码块.非常详尽地将“书写整洁代码的技巧与守则”教给读者.以下,是我本周细读其前四章的心得体会. 1.      Ch1:整洁代码三问:是什么,为什么,怎么做 为什么要写整洁代码?书中首先列举了几条案例,比如某公司的热门软件由于混乱代码导致无法维护.开发团队因为混乱代…
第五回深入浅出关键字---把new说透  ------你必须知道的.net读书笔记 new一个class时,new完成了以下两个方面的内容:一是调用newobj命令来为实例在托管堆中分配内存:二是调用构造函数来实现对象初始化. new一个struct时,new运算符用于调用其带构造函数,完成实例的初始化. new一个int时,new运算符用于初始化其值为0. 另外必须清楚,值类型和引用类型在分配内存时是不同的,值类型分配于线程的堆栈(stack)上,并变量本身就保存其实值,因此也不受GC的控制,…
接上篇<android开发艺术探索>读书笔记(十四)--JNI和NDK编程 No1: 如果<include>制定了这个id属性,同时被包含的布局文件的根元素也制定了id属性,那么以<include>指定的id属性为准 No2: 绘制优化 1)onDraw中不要创建新的局部对象 2)onDraw方法中不要做耗时的任务 No3: 内存泄露优化 场景一:静态变量导致的内存泄露: 如果静态变量持有了一个Activity,会导致Activity无法及时释放. 解决办法:1使用Ap…