摘要: 不必要的和(或)临时的变量经常是罪魁祸首,它让你在程序性能方面的努力功亏一篑。如何才能识别出它们然后避免它们呢?ProblemJG Question: 1. 什么是临时变量?Guru Question: 2. 假设你正在代码审查,一个程序员写了如下的的一个函数,这个函数至少在三个地方使用了不必要的临时或者额外的对象。你能辨别出哪些?其如何修正它们?string find_addr( list emps, string name ) { for( auto i = begin(emps); i != end(emps); i++ ) { if( *i == name ) {... 阅读全文
posted @ 2013-09-22 22:20 Navono 阅读(351) 评论(0) 推荐(1) 编辑
摘要: Answer 2. 下面每行代码都做了什么? 在Q2中,我们创建了一个vector且传了参数10和20到构造函数中,第一种情况下(10,20),第二种情况是{10, 20}。 它们都将调用构造函数,但是是哪个?vector有好几个带两个参数的构造函数,但只有两个能在参数10和20下正确调用。为了简单,在此忽略了默认可选的allocator参数。这两个构造函数是: vector( size_t n,... 阅读全文
posted @ 2013-09-19 17:04 Navono 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://herbsutter.com/2013/05/09/gotw-1-solution/第一个问题强调的是要明白自己在写什么的重要性。下面有几行简单的代码--它们大多数之间都有区别,尽管在语法上只有轻微的不一样。ProblemJG Question1. 下面代码存在差异吗?widget w; // ( a )widget w(); // ( b )widget w{}; // ( c )widget w( x ); // ( d )widget w{ x }; // ( e )widg... 阅读全文
posted @ 2013-09-19 15:52 Navono 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 这是篇老外写的文章,主题是针对网络上的一些宗教式的争论,作者叙述了他自己的一些观点。主要从以下6点做了陈述。为了表达的精确性,就直接用英文。 1. Reject dogmatic thinking about tools, practices, and processes. 2. value flexibility over repetition. 3. Weigh all considerati... 阅读全文
posted @ 2013-09-08 15:41 Navono 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 一般来说,从DLL导出函数有两种方法。一种是使用.def文件;另一种是使用__declspec(dllexport)。 使用上面两种方法各有优缺点。使用.def文件就是需要额外维护,当导出函数更改名字或者追加导出函数。而使用__declspec(dllexport)则需要注意使用的调用约定,在使用C++编译器时。 调用约定 在使用C++或者在常见的windows API的声明头文件常见的WI... 阅读全文
posted @ 2013-08-29 21:35 Navono 阅读(1508) 评论(0) 推荐(0) 编辑
摘要: 用VS2012新建C++工程都预定义了宏__cplusplus,所以引用到的都是C++的定义。但是要用C实现的话,一般都是也就不是C++的了。比如以下代码: #undef INTERFACE#define INTERFACE IExampleDECLARE_INTERFACE_ (INTERFACE, IUnknown){ STDMETHOD (QueryInterface) ... 阅读全文
posted @ 2013-08-26 20:35 Navono 阅读(702) 评论(0) 推荐(0) 编辑
摘要: 今天看到个说获取数组中重复项的题目,网上也有很多答案。然后自己也想也下,于是就有了下面的代码Int32[] testArray = { 1, 2, 6, 4, 8, 6, 8 };var nonDupList = testArray.Distinct();var dupNumbers = testArray.Except(nonDupList); 咋一看,好像是那么回事,先把testArray中重复项过滤掉放入nonDupList中,然后再用Except方法把两个数组的交集获得,也就是重复项。代码很完美。 可运行上面代码不是那么回事,dupNumbers里面什么也没有。接着就看MSDN,下面. 阅读全文
posted @ 2013-04-20 18:21 Navono 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 在前面的文章IoC容器和MVVM中,介绍了IoC容器如何在大量用户类中帮助创建和分配用户类的实例。本文将介绍IoC容器如何帮助应用程序解耦,比如那些根据MVVM模式开发的应用。此模式广泛应用在基于XAML的应用程序(Silverlignt, WPF, Windows Phone, Windows 8)中,因为此模式与数据绑定系统和用于这类程序设计的工具匹配的很好,尤其是在VS 设计器和Blend中。 在典型的XAML程序中,开发者利用数据绑定系统声明一个XAML UI元素的属性和应用程序中其他对象的属性之间的同步。这种绑定可以是单方向和双方向的。数据绑定非常方便,特别是在用可视化设计器的时候. 阅读全文
posted @ 2013-04-14 10:48 Navono 阅读(823) 评论(1) 推荐(0) 编辑
摘要: 在面向对象编程的早期,开发者要面对在应用程序或者类库中创建或检索类的实例的问题。针对这个问题有很多的解决方案。在过去几年中,依赖注入(DI)和控制反转(IoC)在开发者中很流行,并且取代了老的方案,比如Singleton。 Singleton是创建和暴露类实例的一个方便的办法,但是它有几个缺点,从下面代码可以看出,类利用Singleton模式暴露了一个属性。Figure 1. Singleton Pattern Implementationpublic class DataService{ private static DataService _instance; public stat... 阅读全文
posted @ 2013-04-05 21:37 Navono 阅读(1419) 评论(0) 推荐(1) 编辑