麒麟子

~~

导航

<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(12)

随笔分类

随笔档案

Friends

WebSites

积分与排名

最新随笔

最新评论

阅读排行榜

评论排行榜

#

[导入][转]计算机编程:成功的十项必备技能

作为一个正在用C#和 XML语言编程的技术文档工程师,我认为掌握计算机语言需要一些基本技能。毫无疑问,今天的计算机编程已经和以前大不相同,因此不管是正在学习新的编程语言来提高自己的程序员,还是正在钻研一两门已经有所了解的编程语言的程序员,以下这几点相信能够帮你翻越计算机编程这座山。
   第一,基本的逻辑技巧。最常见的基本逻辑形式和编程中的判定就是do-while和if-then-else.在这里,程序员需要考虑的是可能出现的哪几种可能的结果和出现这一结果时应该做什么。
   第二,自上而下的思维方法。总的来说,一个计算机系统是由不同的“子系统”组成的,因此程序员需要掌握一些设计技巧或者自上而下的思维方法,这样才能从整体上把握全局。我设计的模块或者子系统是不是让这个系统的性能得到最好的实现?就像经济学分为宏观经济学和微观经济学一样,编程也需要这样的思维。
   第三,面向对象语言的思维方法。可以说目前很多,甚至大多数语言都是面向对象的,这意味着你必须在继承性和多态性的框架下工作。通过选择正确的类、方法、属性等,恰当地利用计算机语言访问和继承,你就能提升程序性能。
   第四,关注细节。每一个计算机编程语言都有详细的引用和关键字类型规则,这些都必须掌握。在使用类或者方法的时候,必须正确使用代码和语法。
   第五,读编程手册。程序员常常和负责系统设计的架构师一起工作,因此必须在编程手册的指导下写代码。这是个有挑战性的工作,因为程序员必须一条条理解规范,写出的代码才能够遵照统一的参数,最终成功编译。
   第六,测试能力。大多数程序员仅仅把自己当成一个写代码的。好的程序员是一个软件公司的宝贵资产,他们能够测试写好的代码、保证不同的数据得到正确使用且代码无误。一些程序员认为测试的工作是由QA来做的,但有时候程序员能够将程序读得更深入,这样QA的测试工作就对整体程序的成功起到更关键的作用。
   第七,编写程序文档。和测试类似,很多程序员认为代码才是最关键的,但对一个公司来说,一个程序员能在代码旁添加恰当的注释以便后来的程序员参考,这一点很重要。新程序设计好以后,修改代码和模块的人能够看到之前都做了些什么。
   第八,好的商业意识。对程序员来说,将自己从代码中抽身出来,以整体的眼光看待问题有时很难。但这一点很重要。所有的编程最终都要服务于更大的目标,某种角度来说,程序是要走向用户和客户的。订阅一本关注所在行业的市场趋势杂志或者关注此类博客对程序员很有好处。
   第九,耐心。耐心并非技术技巧,但却能让程序员走的更远。写代码不容易,越是有耐心的程序员,越有可能获得成功。
   第十,坚持不懈。除了耐心,坚持不懈的能力和性格对程序员的成功也很重要。有时,在所有的bug和error都搞定之前,有很多很多的编译工作要做,请坚持到底,始终不懈地努力吧。 

文章来源:http://ly-weiwei.blog.163.com/blog/static/729752832008112173644727

posted @ 2008-12-21 19:37 麒麟子 阅读(135) | 评论 (0)编辑 收藏

[导入]模版函数指针,C++委托的实现-原创

原文出处:模版函数指针,C++委托的实现-原创

今天写引擎的时候,很想加入一些回调函数,以前一直没时间整理这块,这次一定要下决心好好整整代码,纯粹用多态,很多类非要加个帽子,类之间的关系也显的很单一,有的情况需要用到委托的回调机制,这是个很好的东西,在C#里面是原生支持的,C++里面本来函数指针是个不错的选择,可到了对象里面,成员函数指针还有那么好用吗?这原本是另C++程序员非常失望和无赖的,难道一说到成员函数指针就真的那么不好用,甚至要沦为被唾弃的命运?并非入此,别忘了,C++里面还有很强的利器,C#和Java后天才具备的特性可是C++先天就具备的哦,那就是范型,C++里面的用的是模版,而且如果把 模版和成员函数指针结合在一起,那就威力无比了,那应该叫做就是“成员模版函数指针”,C++的教科书上有这个名词吗?我查了查,好像是没有,而且网上很多资料竟然说这个不能实现之类的话,我都怀疑那些如此断言的人是否太不负责仁了,误导人啊。

当然指想成员函数的指针,这里面的确有段C++设计的问题,C++的成员函数地址通过对象外去引用不能直接通过“&对象.方法”的方式来引用,这个在C++标准里面是没有的,很多人到这里就绝望了,可间接引用呢?而且用很优雅的方式来引用呢?

好了,我也不绕圈子了,给出我的代码,一个简单的 “成员模版函数指针” 的实现,看看C++是如何优雅的实现委托的,真的非常非常的优雅,由于完全自己摸索出来的,真是感慨万千啊。

#include "stdafx.h"

#include <iostream>

using namespace std;

template<typename T>

class A

{

private:

   typedef int (T::*delegateFun)(int);

   T * _This;

   delegateFun _deleGate;

public:   

 //This被代理的对象, delegateFun被代理的方法

 

 A(T * This, int (T::*delegateFun)(int))

 {

       _This = This;

       _deleGate = delegateFun;

 }

    //c被代理的参数

 int execue(int c)

 {

      return (_This->*_deleGate)(c);

 }

};

class B

{

public:

 int FunA(int a) {return a + 10;}

 int FunB(int a) {return a - 10;}

 B()

 {

 }

};

int _tmain(int argc, _TCHAR* argv[])

{

 B *objB = new B();

 A<B>  delegateObj1(objB, (&B::FunA));

 A<B>  delegateObj2(objB, (&B::FunB));

 cout << delegateObj1.execue(10) <<endl;

 cout << delegateObj2.execue(20) <<endl;

 return 0;

}

 

 

 

看完了感觉如何?以后想要设计一个callback回调函数是否明朗了许多?

再也不需要强行搞个static约束方法,那么恶心的东西了吧

 


文章来源:http://ly-weiwei.blog.163.com/blog/static/729752832008112173346660

posted @ 2008-12-21 19:34 麒麟子 阅读(171) | 评论 (0)编辑 收藏

[导入]游戏成为游戏的原因 分享

游戏成为游戏的原因 分享

http://leyeslau.blog.sohu.com/95186921.html

  首先介绍一个有趣的游戏,被称为“史上最无聊游戏”:http://tech.163.com/digi/06/0525/11/2HVDJ20400161U6V.html

    这是一个我们都很熟悉的游戏,可能80%以上的人都曾经或多或少的玩过。但是,当我们在电脑上玩过一遍后,我们却不禁会产生一个疑惑:这真的是个游戏么?

    事实上,我们从来没有过一个对游戏的清晰的,具有实用性的定义,那么OK,我们就依从于大家的主观体验,认为这不是一款游戏。接下来,我们来尝试几个小的改动:

    1.给游戏加一个计时器,再加一个排行榜。

    2.玩家每次把一屏的泡泡都点破,就有一个美女少穿一件衣服(当然,这确实是一个很庸俗的主意)

    3.这些泡泡里面的某些个是炸弹,点到了就GameOver。而当点到其他的泡泡时就会显示它旁边有几个炸弹泡泡——当然,这个游戏叫做六边形版扫雷。

    事实上,经过以上的任意一种改变,我们都会认为它足以被称作一款游戏,无论这款游戏是否好玩。那么,以上的改动究竟增加了什么呢?

    计时器,是对于玩家完成游戏好坏的一个评价,而排行榜更是一个玩家追求的方向。

    美女图片的变换为玩家提供了一个目标,同样也是玩家进行游戏时的一个追求。

    当在这个软件中加入了陷阱的挑战,以及失败的判定后,玩家自然而然的找到了游戏的目标和挑战点。

   因此而言,我认为,游戏之所以成为游戏,是因为它提供了判别标准,以及追求方向。在一款游戏中,玩家可能会选择不同的游戏行为,不同的游戏路径,但是殊途同归的,对于他们的玩法好坏是有着共同的一个或者多个判别标准的,而与此同时,游戏也会为玩家提供一个或者多个追求的目标。

   一个更加典型的例子就是《Second Life》及其同类的产品。我们常常争议的一个话题就是《SecondLife》到底是不是一个游戏,而之所以会产生这种争论,我认为正是因为《SecondLife》及其同类产品提供了一个足够开阔的虚拟世界,提供了丰富的行为给玩家,但是没有给玩家提供判别标准,也没有给玩家提供一个或多个明确的追求目标。因此的,对于中国的玩家而言,它常常仅仅被视作是一个平台,而不是一个完整的游戏。

    同样的道理,扑克并不是游戏,斗地主,21点,梭哈才是游戏。开心网不是游戏,但是争车位确实是一个游戏。


文章来源:http://ly-weiwei.blog.163.com/blog/static/729752832008112173114903

posted @ 2008-12-21 19:31 麒麟子 阅读(91) | 评论 (0)编辑 收藏

仅列出标题
共38页: First 30 31 32 33 34 35 36 37 38