摘要: 第三十一计:置空不用的对象在C++中,销毁一个对象后,一定要把指针置为NULL,否则会出现野指针,最好写成下面这样,delete后立马置为NULL,delete pObject;pObject = NULL;在Java中,当不再需要一个对象时,最好能把它置为null,这样有利于垃圾回收。第三十二计:善于利用接口 1、回调型接口 在C语言中,回调函数可以通过函数指针来实现,Java中没有指针的概念,可以利用接口来达到同样的目的,例如: public interface Callback{ public void onChanged(); } public void execute... 阅读全文
posted @ 2012-04-23 15:40 West_Link 阅读(1989) 评论(4) 推荐(6) 编辑
摘要: 第二十五计:函数体最多不超过100行记得以前看过一个函数有9000多行,很壮观啊,从那以后看到长函数时也不奇怪了,我认为过长函数的主要缺点是:1、严重影响代码的阅读,使用到某个变量的地方可能间隔几百甚至上千行,如果if-else嵌套层次较多的话那就更噩梦了。2、不利于代码的重用,短小而独立的逻辑处理单元更容易被重用,而过长的代码段则需要经过进一步分解才行。我觉得函数最好不要超过100行,对于过长的函数要尽可能地进行分解,如果实在不能分解,那么就通过注释的方式增加该函数处理步骤的说明,例如:public void foo(){// 1、验证参数、内部状态的有效性...// 2、开始倾斜角度... 阅读全文
posted @ 2012-04-20 11:23 West_Link 阅读(2095) 评论(6) 推荐(4) 编辑
摘要: 第十九计:避免类的臃肿在我接触过的大部分项目中,总会有一个“大胖子“类特别惹眼,一般来说,这“大胖子“实际上是整个系统的核心类之一,之所以“胖“,主要原因是很多人都会把自己需要的函数加到这个类中,却没有人主动请缨来为它“减肥“。可以通过以下几种方式来为它“瘦身”:1、按照某种特性(如功能、类型等)将这个类拆分成多个类。 2、合并冗余函数,保持函数粒度的最小化。 3、去除重复代码。如果实在不能再“瘦”了,那就通过实现相应的接口,让它“看上去很瘦“,举个例子:public class BigBoy{ public void foo1(); public void foo2(); public... 阅读全文
posted @ 2012-04-18 10:25 West_Link 阅读(2256) 评论(2) 推荐(5) 编辑
摘要: 第十三计:为集合类型的成员变量提供增删改查函数对于集合类型的成员变量,直接提供一个函数将其暴露出去是不够妥当的,缺点包括以下几点: 1、添加集合元素时无法校验它的合法性,例如类型是否符合要求、该元素是否已存在等。 2、无法控制集合的容量,集合的容量可能是动态分配的。 所以,更好的做法是为集合类型的成员变量提供增删改查等函数,例如某个类中有名为userList的数组,则可以为它增加几个函数:public void add(User user){ if(user == null) // 如果对象为不合法,则不添加 return; if(userList == null) // 如果集合... 阅读全文
posted @ 2012-04-17 10:19 West_Link 阅读(1986) 评论(2) 推荐(3) 编辑
摘要: 第七计:串联函数调用当一个类的大部分函数被较为频繁地调用,并且包含连续性地调用,那么可以考虑为这个类中那些没有返回值的函数增加返回值,即返回对象本身,这样就可以串联函数调用,使用起来较为方便,举个例子:// 表示用户的类public class User{ public void setName(String name); public void setAge(int age); public void setPhoneNumber(int phoneNumber);}下面是不使用串联函数调用的情况:User user = new User();user.setName("West_ 阅读全文
posted @ 2012-04-16 16:03 West_Link 阅读(2144) 评论(4) 推荐(3) 编辑
摘要: 重构,其实很简单,它的目的就是让程序变得更容易被理解,更具有可维护性,结构更合理。重构应该是我们平时写代码过程中必不可少的一部分,比如给函数起了一个更好的名字、把大函数拆分成几个小函数等都属于重构。重构的经典书籍包括Martin Flower的《重构-改善既有代码的设计》、Joshua Kerievsky的《重构与模式》,本系列的所谓36计是我多年来使用最为频繁的重构策略和编码准则,有自己总结的,也有书上提到过的,希望对大家能有所帮助。第一计:参数列表对象化 公有函数的参数应尽可能保持不变,因为很多地方都会调用它,修改参数后需要修改它的调用处,另外,它的参数列表不宜过长,数量尽量保持在5个以. 阅读全文
posted @ 2012-04-16 09:06 West_Link 阅读(2245) 评论(6) 推荐(7) 编辑
摘要: 一个Android应用给用户的第一印象非常重要,除了要有好的创意和美观的界面,性能也是很关键的部分,本文讨论的就是第一次启动的速度问题。 Android应用的启动过程不能让用户等待太长时间,个人觉得最好控制在3秒之内。一般来说,内容的初始化是影响Android应用第一次启动速度的主要因素之一,尤其是创建数据库并插入一定数量的初始记录,对于这种问题,最好的办法莫过于在首次初始化时导入静态数据库。 在Android中导入静态数据库很简单,首先将准备好的静态数据库文件放到Android工程的res目录中的raw子目录下面,如果没有这个子目录的话就手动创建该目录,然后在应用的初始化阶段通过类似下面的. 阅读全文
posted @ 2012-02-20 15:29 West_Link 阅读(7569) 评论(1) 推荐(1) 编辑
摘要: 对于有很多个邮箱的人来说,查看是否有新邮件是件挺烦琐的事情,尤其是拥有各种不同网站的邮箱,需要分别登录各个邮箱进行。如果有可以集中查看所有邮箱中新邮件的方法就方便多了,下面就向大家介绍两种方法。 第一种方法是挑选一个邮箱作为聚合邮箱,用来接收其他邮箱的新邮件,也可以在该邮箱中以其他邮箱作为发送地址。建议把Gmail邮箱作为聚合邮箱,或者其他功能比较强大的Web邮箱,使用Web邮箱的好处是随时随地都可以收发邮件,只要有一个包含浏览器的终端设备即可。把新邮件自动转发到聚合邮箱的过程很简单,只需要在邮箱设置的自动转发选项中输入聚合邮箱即可,随后聚合邮箱会收到一封自动转发确认邮件,点击邮件内容中提供. 阅读全文
posted @ 2012-02-10 08:33 West_Link 阅读(5608) 评论(5) 推荐(5) 编辑
摘要: 使用搜索引擎是程序员日常工作中必不可少的部分,绝大多数技术问题都能在网络上找到解答,但是我发现,对于硬盘上的文件,很多人的查找方法还是比较原始,完全是凭记忆去各个目录里找。我向同事索要安装包或者文档,要不就是不知道放在那里了,要不就是找半天。虽然Windows文件管理器有搜索功能,但是速度有点慢,而且不支持通配符和正则表达式。下面向大家介绍一款文件名搜索利器,它就是EveryThing,堪称神速!EveryThing是一款很小巧的文件,界面简洁,非常容易使用,如下图所示: 第一次启动时,EveryThing会为硬盘上的所有文件名创建索引,瞬间就能完成,而且它会实时更新索引,占用系统资源非常少. 阅读全文
posted @ 2012-01-16 19:46 West_Link 阅读(4770) 评论(11) 推荐(0) 编辑
摘要: 随着越来越多实用软件的涌现,人们的工作和学*效率得到了很大的提高,当然,前提是我们主动去接受和学*它们的使用,并且改变已有的*惯。*一两年智能手机的快速普及,一批新的实用软件诞生了,已有的软件也纷纷推出了手机版本,使得这些软件变得更加实用,让我感受最深的两类软件是网络笔记本和网络文件同步工具,作为一名程序员,如果没有使用过它们,那真是.......,不知道该咋说。 做笔记是一种很好的*惯,好记性不如烂笔头,更何况大部分人的记性都不太好,一本书看过一遍,过一段时间可能都被忘的差不多了,如果不随时做笔记,再看一遍的效果可能差不多,至少我是这样的,记得《COM技术原理》、《深入探索C++对象模型》. 阅读全文
posted @ 2012-01-09 20:20 West_Link 阅读(7430) 评论(21) 推荐(4) 编辑