0%

英文原文:10 steps to becoming a better programmer
这篇文章要介绍的,是我作为专业程序员这些年来学到的能真正提高我的代码质量和整体工作效率的10件事情。

  1. 永远不要复制代码

不惜任何代价避免重复的代码。如果一个常用的代码片段出现在了程序中的几个不同地方,重构它,把它放到一个自己的函数里。重复的代码会导致你的同事在读你的代码时产生困惑。而重复的代码如果在一个地方修改,在另外一个地方忘记修改,就会产生到处是 bug,它还会使你的代码体积变得臃肿。现代的编程语言提供了很好的方法来解决这些问题,例如,下面这个问题在以前很难解决,而如今使用 lambdas 却很好实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/// <summary>
/// 一些函数含有部分重复代码
/// </summary>
void OriginalA()
{
DoThingsA();

// unique code

DoThingsB();
}

/// <summary>
/// 另外一个含有部分重复代码的函数
/// </summary>
void OriginalB()
{
DoThingsA();

// 没有重复的代码

DoThingsB();
}

现在我们重构含有部分相同代码的函数,用delegate模式重写它们:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/// <summary>
/// Encapsulate shared functionality
/// </summary>
/// <param name=&quot;action&quot;>User defined action</param>
void UniqueWrapper(Action action)
{
DoThingsA();

action();

DoThingsB();
}

/// <summary>
/// New implmentation of A
/// </summary>
void NewA()
{
UniqueWrapper(() =>
{
// unique code
});
}

/// <summary>
/// New implementation of B
/// </summary>
void NewB()
{
UniqueWrapper(() =>
{
// unique code
});
}
  1. 留意你开始分心的时候
    当你发现自己在浏览facebook或微博、而不是在解决问题,这通常是一种你需要短暂休息的信号。离开办公桌,去喝一杯咖啡,或去跟同事聊5分钟。尽管这样做看起来有点反直觉,但长久去看,它会提高你的工作效率。

  2. 不要匆忙赶任务而放弃原则
    当带着压力去解决一个问题或修改一个bug,你很容易失去自制,发现自己匆匆忙忙,甚至完全忘了一直坚持的重要的测试过程。这通常会导致更多的问题,会让你在老板或同事眼里显得很不专业。

  3. 测试你完成的代码
    你知道你的代码能做什么,而且试了一下,它确实好用,但你实际上需要充分的验证它。分析所有可能的边界情况,测试在所有可能的条件下它都能如期的工作。如果有参数,传递一些预期范围外的值。传递一个null值。如果可能,让同事看看你的代码,问他们能否弄坏它。单元测试是到达这种目的的常规方法。

  4. 代码审查
    提交你的代码之前,找个同事一起坐下来,向他解释你做了哪些修改。通常,这样做的过程中你就能发现代码中的错误,而不需要同事说一句话。这比自己审查自己的代码要有效的多得多。

  5. 让代码更少
    如果你发现写了大量的代码来解决一个简单的问题,你很可能做错了。下面的boolean用法是一个很好的例子:

    1
    2
    3
    4
    5
    6
    7
    8
    if (numMines > 0)
    {
    enabled=true;
    }
    else
    {
    enabled=false;
    }

    这时你应该写成这样:

    1
    enabled = numMines > 0;

    代码越少越好。这会使bug更少,重构可能性更小,出错的几率更小。要适度。可读性同等重要,你可不能这样做而使代码丧失可读性。

  6. 为优雅的代码而努力
    优雅的代码非常的易读,只用手边很少的代码、让机器做很少的运算就能解决问题。在各种环境中都做到代码优雅是很难的,但经过一段时间的编程,你会对优雅的代码是个什么样子有个初步的感觉。优雅的代码不会通过重构来获得。当你看到优雅的代码是会很高兴。你会为它自豪。例如,下面就是一个我认为是优雅的方式来计算多边形面积的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
static public double GetConvexPolygonArea(Vector2[] vertices)
{
double area = 0;
for (int i = 0; i < vertices.Length; i++)
{
Vector2 P0 = vertices[i];
Vector2 P1 = vertices[(i + 1) % vertices.Length];

area += P0.Wedge(P1);
}

return area / 2;
}
  1. 编写不言自明的代码
    勿庸置疑,注释是编程中很重要的一部分,但能够不言自明的代码跟胜一筹,因为它能让你在看代码时就能理解它。函数名变量名要慎重选择,好的变量/方法名字放到语言语义环境中时,不懂编程的人都能看懂。例如:
    1
    2
    3
    4
    5
    6
    7
    void DamagePlayer(Player player, int damageAmount)
    {
    if (!player.m_IsInvincible &amp;&amp; !player.m_IsDead)
    {
    player.InflictDamage( damageAmount );
    }
    }
    能自我说明的代码不能代替注释。注释是用来解释“为什么”的,而自我说明的代码是来描述“是什么”的。
  2. 不要使用纯数字
    直接把数字嵌入代码中是一种恶习,因为无法说明它们是代表什么的。当有重复时更糟糕——相同的数字在代码的多个地方出现。如果只修改了一个,而忘记了其它的。这就导致bug。一定要用一个命名常量来代表你要表达的数字,即使它在代码里只出现一次。
  3. 不要做手工劳动
    当做一系列动作时,人类总是喜欢犯错误。如果你在做部署工作,并且不是一步能完成的,那你就是在做错事。尽量的让工作能自动化的完成,减少人为错误。当做工作量很大的任务时,这尤其重要。
  4. 避免过早优化
    当你要去优化一个已经好用的功能代码时,你很有可能会改坏它。优化只能发生在有性能分析报告指示需要优化的时候,通常是在一个项目开发的最后阶段。性能分析之前的优化活动纯属浪费时间,并且会导致bug出现。
    好吧,我说是10个,但你却得到了额外赠送的一个!
    这些就是我要说的,我希望它们能帮助你改进编程开发过程。
    下次再见!祝快乐!
    Cheers, Paul.

折腾 st2 的时候发现有一个,Building System 不过里面木有 PHP 的,自己添加吧。很方便的脚本调试,
以后只需要在编写的文件中按ctrl+b或者f7 就可以测试了

Read more »

一直对notepad++的配色方案很纠结,这也是我转到sublime text的原因之一, 不过最近发现的一个网站不错 可以转换textmate的主题,变成notepad专属。
textmate的主题可是相当丰富的。。

步骤如下:
1.打开 http://wiki.macromates.com/Themes/UserSubmittedThemes 找一个心仪的主题
2.下载主题,用编辑器打开,copy所有代码,粘贴到theme converter page里, 点击“Download”

3.把转化完的主题放到“x:Program FilesNotepad++themes” 中

4.重启Notepad++ , 设置->语言格式设置->选择刚添加的主题。成功!

5.放几张图 :)

昨天github在天朝被墙,估计是由于之前的12306抢票助手导致的。。这对程序猿来说 太悲剧了。。
暂时的解决办法:
将以下地址添加到host中:
207.97.227.239 github.com
204.232.175.78 pages.github.com
204.232.175.94 gist.github.com

之前只知道echo重定向输出 今天稍稍整理下

方法大致有如下几种:

1.echo …. > tmp.txt 通过重定向输出,创建文本文件tmp.txt
echo …. >> tmp.txt 向tmp.txt中追加…内容

  1. copy con tmp.txt 创建tmp.txt 内容
    此时输入内容 按ctrl+z 你会发现多了一个tmp.txt 里面的内容就是刚刚输入的

    稍微解释下:copy就不说了,
    con 是dos 设备文件的简称。 在dos中把很多外部设备作为文件,称为设备文件。dos中这样规定的:con 控制台(键盘/显示器) aux (或com1)第一个串口 lpt1 第一个并行打印机接口,nul 不存在 的设备

    所以copy con tmp.txt的意思就是把从键盘中输入的文字复制tmp.txt中,当ctrl+z结束后输入的文字就会保存在tmp.txt中了

    如果反过来 copy tmp.txt con 这样就会把tmp.txt复制到屏幕上了。

3.edit tmp.txt 编辑tmp.txt ,调用command.com中创建文本文件的命令。
如果tmp.txt不存在则创建文件,输入内容 保存

最近看一个coding的视频,看到作者在用sublime 不过他是在命令行下直接敲打 sublime . 直接把当前目录载入到sublime的sidebar里去了,感觉挺好的。
自己折腾了一下,也实现了这个功能。
我之前写了如何把一个文件夹通过右键用sublime打开,可以参考给sublime text添加右键打开文件夹

现在讲讲如何在命令行下打开sublime。
我的安装目录D:Program FilesSublime Text 2 大家可以对照着修改。
首先复制sublime text2 的安装路径到环境变量的path里面(注意用;号分隔开)
操作:win+pauseBreak->高级系统设置->环境变量->path

然后cmd下进入到sublime text2的安装目录,做一下mklink

1
2
cd &quot;D:Program FilesSublime Text 2&quot;
mklink sublime.exe sublime_text.exe

完工

此时cmd下进入任何目录只需要输入sublime 就可以打开 sublime text2 如果输入sublime 文件夹名 就可以将这个文件夹包含到sublime的sidebar中了。

最近试用xmarks统一管理自己的书签,在合并chrome和palemoon的书签时,由于书签众多,导致费时费力。找了一个chrome扩展,解决了这个问题。

Bookmark Sentry是chorm上的一个扩展,可以用来删除失效以及重复的书签,简单快捷

下载地址:chrome商店

下载完后到扩展中打开选项 选择Scan Now

可以删除不存在的链接,这个判断可以在上图的connection timeout中设定 通过设定超时时间来判断网站的链接度。

删除重复链接

嗯 完美解决 重复问题 省时省力 。

1、十行代码九个警告八个错误竟然敢说七日精通六天学会五湖四海也不见如此三心二意之项目经理简直一等下流。

2、一想到万一努力Coding、熬夜Debuging,出人头地了就会有人检查我的学位论文,我就翻身又睡了。

3、有时代码写的闷了,会临时去WC,随便赶上哪个蹲坑就上哪个蹲坑,独自蹲着,不发一语,然后再回座位,当没事发生过,突然觉得这TM才叫IT民工 !

4、【路人甲问】:如果失去杨元庆,雅虎将会怎样?【我答】:难道他,姓杨,名致远,字元庆?【路人乙答】:雅虎将不再是我们熟悉的那个谷歌了。

5、【技术宅男如何把妹?】1自制系统盘内置马儿随时知道MM在做什么,计划任务定期搞崩系统从而保持用户粘性;2.给MM推荐自制APP,随时知道mm位置给她惊喜;3.经过一段时间你就积累了大量数据,做一下数据挖掘就知道她的一切喜好习惯;4.将该应用免费开放给更多宅男,于是有了海量数据。–这就是云把妹。

6、每一次debug就是把程序的内伤化作自己的内伤

7、I’ll be there in 5 minutes. If not, read this again. 我5分钟后到,如果没到,请再读一遍此短信……

8、【婴儿般睡眠】昨天问一资深IT同事:“最近听说服务器总坏,遭到同事集体投诉你、老板连番数落你,睡眠怎样?”他说:“像婴儿般睡眠。”我说:“不愧是高手!这都能睡得着!”他沉默半响道:“半夜经常醒来哭一会儿再睡。”

9、区分是否程序员的方法之一:push的反义词是什么? 非程序员:pull ;程序员:pop。

10、年会方到酣处,奖才抽到三等。有冲动的程序猿已经喝高了。邻桌的一位吐啊吐啊,走几步吐一口。那种“一处喝完,到处呕吐”的跨平台气概,让人能够分辨出他一定是搞JAVA的。搀扶他的兄弟,象是一款完美的应用服务器,默默地支持着他。

11、《c++程序设计语言》比《c程序设计语言》厚了几倍。。。果然有了对象就麻烦很多么。。。

12、【 程序猿的三重境界】第一重:无尽bug常作客,困闷调试伴不眠。第二重:千行代码过,bug不沾身。第三重:编码间,bug灰飞烟灭。

13、“我的密码都很简单,都是我女朋友的姓名首字母加生日……所以……我养成了经常更换密码的好习惯。”

14、提交代码不写注释的人,小鸡鸡就跟注释一样长。

15、从一个程序猿的角度看朝鲜。其实金正恩已经公测很久了,群众对这个beta版的呼声也很高。这次转正毫无悬念。为什么金日成金正日都要弄成干尸呢?因为SVN嘛,要做好版本控制,方便回滚状态。

16、程xx遭遇车祸成植物人,医生说她活下来的希望只有万分之一,唤醒更为渺茫。她的同事和亲人没放弃,并根据程xx对testing痴迷的作风,每天都在她身边念:“你测的模块上线后回滚了…”奇迹发生了,程xx醒来第一句话:确认那模块是我测的?

17、现在每天的工作都充满计划性:早九点经理飘入办公室拍着开发人员肩膀问”怎么样”看界面;九点半项目经理电话响起去总经理办公室开会;十点项目经理回到办公室”大家停一下需求有点变动”开发人员说”我靠”;十点一刻开发组开会讨论修改方案;十一点半开始修改代码.第二天九点经理飘入问”怎么样”

18、马总坐飞机,旁边一个小孩拿着杂志看,一边看一边念叨:云计算要火? 老板听了,回去问VP:什么是云计算?VP回去告诉总监:我们可能要做云计算;总监回去告诉经理:公司要做云计算,马上招人.经理面试,有一个就是前几天那个拿杂志的毕业生,毕业生说,没想到云计算真的要火?机会还是给有准备的人.

19、【世界上最没用的几句话】 1、警察:不要跑! 2、国足:必胜! 3、老师:同学们不要睡了! 4、病人:医生,您轻点儿! 5、父母:孩子,不要闹了 !6、罪犯:我是冤枉啊!7、女人:不要嘛!8、男人:我发誓!9、:程序员:这个不能实现!

20、真正牛逼的公司只需要一款产品就能改变世界,像苹果和Adobe。前者拯救了无数等待器官移植的病人,后者拯救了无数女人。

21、学<数据结构>的童鞋注意了,告诉大家一个真相,中国实行计划生育最终目的是为了能够用二叉树进行统计管理,因为二叉树最多可以生两个孩子,多了就超生。

22、客户被绑,蒙眼,惊问:“想干什么?”,对方不语,鞭笞之,客户求饶:“别打,要钱?”,又一鞭,“十万够不?”,又一鞭,“一百万?”,又一鞭。客户崩溃:“你们TMD到底要啥?”“要什么?我帮你做项目,写代码的时候也很想知道你TMD到底想要啥!”

23、毕业后已经改用C++,有对象了

24、好故事里都有冲突,任何棘手的冲突都是递归的。

25、四个2B青年掐架。A:你丫等着,我爹是敏感词!B:操你大爷!你丫牛逼神马,我爹在百度索根本无法显示!!C: 我爹404 not found!!! D:我爹 Connection Reset !!!!

26、天冷了,办公室的门上出现了一张告示,赫然写着,“不关门,有BUG”,然后就见每个出去的程序员,非常虔诚的把门关上了。

27、曾经有两位技术宅童鞋讨论”为什么我们对初中的知识记得很清楚反而本科研究生的课程内容却很模糊呢?“ 他们认为,这符合“记忆的堆栈原理”——后进先出,所以这也可以解释为什么人老了只记得很久以前的事而近期发生的事却不记得

28、程序员找不到对象,一般有三种情况:1、 C# JAVA都有对象,但是经常找不到对象。2、ASM C直接没有对象。3、javascript都是伪对象,最多算暧昧。但C++日子一直都好过,因为C++是多继承,富二代呀!!!

29、汇编,C和C++是好朋友,每天一起吃饭。可是前天晚上C++一个人去吃饭了。问他怎么了,他说“汇编和C没有对象,他们去过节了。。。

30、今天小师妹叫我上她家修电脑,我问“要不要带套………”结果,她啪地一声就把电话给挂了,我连:“工具”两个字都没来得及说出口……

31、男孩在光棍节前表白,短信如下:n 55!w ! n a^o7 ! 只要把手机倒过来就可正常解读。他觉得自己心意一定能打动她,可是光棍节这一天过去了也没有回讯,男孩伤心欲绝。只是他不知道,他的老款诺基亚永远也不懂陀螺仪和重力感应是什么。

32、问:请用最简洁的语言描述中国法律? 答:rwxr-xr–

33、【宪法顶个球】中国的法律都是.txt文件,不是.exe文件。

34、某女遭遇劫匪,颤抖曰“大哥,我是学测绘的,三十岁了还2000一月,你看工资条就知道了,你考虑一下劫色吧。”劫匪痛哭流涕“妹子,俺也是学测绘的,快 吃不起饭才出来做匪的,你走吧,拿好工作证,后面的会放你。对了,边上那条路千万不要走,更凶些,全是写程序的,穷疯了。

35、一群男程序员酒后乱逛,正要集体侵犯一个女子。女子见势不妙,问:那你们说最好的编程语言是什么?程序员们就地讨论了三天三夜不欢而散,女子趁机顺利脱身。

36、我是一枚可怜的野指针,感情没有目标地址,内存得不到释放,要当机了。

37、二叉树→binary tree→简称BT→偏偏还叫“二”叉树→集变态和二于一身,真是骂人的好词啊,“你这二叉树”什么的

38、《程序员的雨巷》开着MyEclipse,独自彷徨在悠长、悠长又寂寥的雨巷,我希望逢着一个和我一样的调试代码的姑娘。她是有需求一样的凌乱,设计一样的荒唐,测试一样的忧愁, 在代码里哀怨,哀怨又彷徨;她彷徨在这寂寥的雨巷。

39、软件工程发展的最大矛盾在于日益增长的用户需求和薪水不见涨的苦逼程序员之间的矛盾

40、程序猿:我的第一个问题是,对於我第二个和第三个问题,你可不可以只用‘能’和‘不能’来回答? 老板:“OK!” 我的第二个问题是,如果我的第三个问题是我可以不可以涨工资?,那麽你对於我的第三个问题的答案能不能和第二个问题的答案一样? 老板:….

41、一女同学在食堂吃饭时,一程序猿凑到旁边,“同学,我能和你说话不,我已经一个月没和女生说话了。

42、栈和队列的区别是啥? 吃多了拉就是队列;吃多了吐就是栈

43、网友A留言:“C确实不适合做应用层,C有C的地盘。” 网友B回复:“就是传说中的C盘么。”当时我就笑喷了……

44、一个IT经理走进一家拉面馆说:“你们需要客户端吗?” 老板说:“面一般是伙计端,忙的时候才需要客户端。

45、一同学问我,软件外包是什么。解释了几句还没明白,遂想了一下:包工头知道吧?顿悟!

46、正在码代码ing,医院回来的同事一脸的苦逼样子,问他怎么了?他回答:得了类风湿性关节炎了,我怕会遗传给下一代啊。我一脸的问号:谁说类风湿性关节炎能遗传的?丫一脸诧异:类不是继承的吗?

47、世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你眼前,你却怎么都找不到她。。。

48、真的勇士,敢于直面惨淡的warning、敢于正视淋漓的error。

49、成功chroot过很多系统,却从未成功chroot过妹子的心。

50、某小偷潜入某IT公司欲行窃,没想到始终有人,他只好等啊等啊等,结果始终有一大拨人在加班。过了一个月,小偷终于逮到机会溜出来,同伙问:去哪了?小偷:在IT公司呆了一个月。同伙:收获不错吧?小偷苦笑:别TM提了,三十个大夜下来,我现在已经学会写程序了。

51、继承,是幸福的延续;重载,是幸福的重生。

52、一同事最近bug特别多,假装关切问他有多少个bug,他回答:10。过几日,再问,他回答:10。我:“这么多天过去了,怎么一点变化都没有?”,他:”哪里没有变化啊,以前是十进制,现在变成十六进制。

53、我很奇怪客栈这个词。难道后入住的必须先退房吗?

54、假如生活欺骗了你,找50个程序员问问为什么编程;假如生活让你想死,找50个程序员问问BUG改完了没有;假如你觉得生活拮据,找50个程序员问问工资涨了没有;假如你觉得活着无聊,找50个程序员问问他们一天都干了什么!

55、话说,决定一个程序员跳槽与否的关键因素是他前同事的现工资~

56、程序员最憋屈的事情就是:你辛辛苦苦熬夜写了一个风格优雅的源文件,被一个代码风格极差的同事改了且没署名,以至于别人都以为你是写的。。。

57、昨天晚上做梦梦见我得到了九阴真经的武功秘籍,打开第一页一看,我X,赫然写着口诀“hello world!”

58、服务器按功能可以分为:数据库服务器,web服务器,cache服务器,下片儿服务器等等。

59、据说某互联网公司的自动售货机上写着只收5元和10元的纸币,一日被一个同事发现竟然还可以识别1元的纸币,不过每次交易只能识别一张。 他冷静的说:”这个机器,5块10块肯定是用while-do写的,1块的是用do-while写的。

60、一个不舍得给程序员涨工资的软件公司,早晚得花高价请猎头招聘程序员。。。

61、和朋友QQ 聊天 想关闭窗口 突然输个 exit();……大囧。。。

62、这个是真的,我想修改QQ备注,结果按了F2。

63、谁说我没后台了!我有!还是apache的~

64、真的猛士,敢于直面混乱的程序,敢于正视变幻的需求。

65、早年,某公司,买了一台电脑,放在某人的办公桌上。有一天这个人被领导郊区谈话,领导说:这个电脑呢,是放在你的桌子上,主要是你在用,但是它并不是你的个人财产,你在电脑上写我的电脑,影响很不好。于是,我的电脑被重命名为我们的电脑。

66、大二时,问同学:买电脑吗?答:当然,学网络不买电脑怎么学;再问:联网吗?答:当然,买电脑不联网怎么学。再问:联网干嘛?答:网络工程嘛,当然是你攻我防、我攻你防了。于是就买了,两周后去TA宿舍,TA正在连机打CS。我一看,真是你攻我防、我攻你防

67、一个加班加到身心俱疲的白领对“人力资源咨询师”说:“我的工作效率太低,干什么都慢。” ,“人力资源咨询师”当着他的面打开机箱,换了一个最新的CPU。

68、乔布斯:Windows又烂又慢,还经常死机啊! 盖茨:对啊。乔布斯:那为什么不改进一下? 盖茨:改进了男生还怎么进女生宿舍修电脑?

69、去IT公司面试应该穿得不修边幅一点,头发蓬乱一点,眼圈描黑一点,神情装得憔悴一点,至少看上去要像个程序员……

70、《未来的云计算服务》张总在办公室下载了苍井空,按下CTRL+X后就回家了。晚上躺在床上按下CTRL+V继续观看,旁边的小蜜惊呆了,张总淡淡的说:云剪贴。

71、J20为毛什么隐身知道吗?据说如果用雷达搜索J20隐形飞机,雷达显示屏上会出现:根据相关法律法规和政策,部分搜索结果未予显示。

72、经考证,C语言是女的…原因如下:1.无论你让她干什么,她绝对不可能自己找到方法。2.总是用复杂的方法解决简单的问题。3.不可能自主认识到本身错误。4.浪费时间是十分正常的事情。5.无论跟她说什么,都得用她能理解的方式做充分说明。6.只要你有一点错,她一定可以挑出来。7.反正,是你的错。

73、一姑娘在声讨她土木工程的前男友。她闺密帮腔说:土木工程嘛,又土又木…………那软件工程的童鞋们情何以堪。

74、本着相关性为主的原则来做SEO,哪怕现在排名不好,过几年也会上来,因为百度技术终于变强了。

75、Intel收购McAfee的真实理由 Intel的CEO坐在办公椅上边吃巧克力豆,边和下属视频会议,说道:「公司是不是需要杀毒软件?买McAfee吧。」15分钟后,有人在视频那头传话,「McAfee买下了。」CEO问道,「什么版本的?」下属:「啊?版本?…版本?」

76、编程的时候,总是想着那个维护你代码的人会是一个知道你住在哪儿的有暴力倾向的精神病患者。—— Martin Golding

77、据说在每一个互联网公司里,都有一个扫地的老太太。很偶然地,当她经过一个程序员的身边,扫一眼屏幕上的代码,会低声提醒对方说:小心,栈溢出了。

78、蔡学镛:做文件迁移的时候(迁移到Mac),发现一些以前写的Java与C#代码,顿时掉入时空隧道,思绪回到那个时候。许多人靠著照片回忆过去,而程序员靠著代码回忆过去。

79、必备技能:去得了公司,回得了厨房;不羡慕好车,不想买新房;不惊动腾讯,不激怒同行;写得了代码,查得出异常;做得出产品,看得准市场;接触过VC,见识过投行。

80、为了程序没日没夜的研究学习,为了程序整天灌输OO思想,为了自己的爱好拼命的敲着代码,张口闭口的类和对象,这些都值得吗?到头来把对象给实例化了,自己的对象没找着…

81、如果你的朋友最近没和你联系,要理解!只有三种可能:第一,他死了;第二,他改行当程序猿了;第三,需求又改了!

82、据说一老外年轻的时候,立志要当一名伟大的作家。怎么才算伟大呢?他说:我写的东西全世界都要看到!看完他们必定会歇斯底里!会火冒三丈!会痛苦万分!结果,他成功了,他在微软公司负责写系统蓝屏时的报错提示信息。。。

83、什么是程序员的标准生活?那就是他一推键盘靠在椅背里,兴高采烈地宣布:本周的工作终于全部完成了!而此刻的时间是周日晚上23:59

84、许许多多的人选择编程,首要的原因就是,他们宁愿将自己的时间花在一个公平有序的地方,一个严格的能者上庸者下的地方,一个只要你是对的就能赢得任何争论的地方。–Joel Spolsky

85、啥叫职业病?职业病就是作为一个挨踢民工,如果有一天5点钟就下班,你会很无比内疚;如果连续两天5点下班,你会无比自责;如果连续三天5点下班,你会严重怀疑公司是不是准备把你给炒了。

86、据说,程序员们敲键盘时,发现只有两只大拇指比较闲,可以用来扳着计算,所以采用了二进制。

87、某日和同学聊起对象问题,我答道:哥最不缺的就是对象了,要知道哥是程序员,每天不知道要new多少个对象出来,而且想要啥类型就有啥类型。如果你想要,哥给你来个for循环嵌套,new上她千个百个。

88、老婆给当程序员的老公打电话:“下班顺路买三个包子带回来,如果看到卖西瓜的,买一个。” 当晚,程序员老公手捧一个包子进了家门。。。 老婆怒道:“你怎么就买了一个包子?!” 老公答曰:“因为看到了卖西瓜的。”

89、某程序员编程编的昏天地暗,去小店买吃的, 开口第一句:“师傅你们这里支持菜票吗?” 师傅:“我们这里兼容钞票和菜票。”

90、做为一名程序员,我每次看到工资单的时候,都会想:那些数字为神马不是16进制。

91、《程序员的自我修养》中在解释多核CPU的局限时提到“就比如一个女人可以花10个月生出一个孩子,但是10个女人并不能在一个月就生出一个孩子一样。” 很精辟吧!

92、比尔盖茨:我家没有任何一款苹果产品,我们全家也从来不吃苹果;乔布斯:我家一个窗户都没有。

93、互联网创业最害怕的两件事情,百度搜不到,腾讯加关注。

94、程序员最讨厌的两件事情是:写文档和别人不写文档。。。

95、一个程序出错信息: Keyboard not found … press F1 to continue

96、Borland说我很有前途,Sun笑了;Sun说我很有钱,IBM笑了;IBM说我很专业,Sybase笑了;Sybase说我数据库很牛,Oracle笑了;Oracle说我是开放的,Linux笑了;Linux说我要打败Unix,微软笑了;微软说我的系统很稳定,我们都笑了。

97、只有2种编程语言:一种是天天挨骂的,另一种是没人用的。

98、Unix是用户友好的,只是要成为Unix的用户很困难。

99、c程序员看不起c++程序员, c++程序员看不起java程序员, java程序员看不起c#程序员,c#程序员看不起美工, 周末了,美工带着妹子出去约会了…一群SX程序员还在加班!

100、一个合格的程序员是不会写出诸如 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去。

101、同事小G,吃饺子基本10个左右。某日,小G的水饺吃了2/3,开始对着一个咬了一半的饺子发愁。一同事问,是不是到临界点了?小G点头~我说,还是别吃了,搞不好会溢出… 另一同事接道,那要看情况,如果是栈溢出,一般恶心;如果是队列溢出,就太恶心了!

102、某程序员对书法十分感兴趣,退休后决定在这方面有所建树。于是花重金购买了上等的文房四宝。一日,饭后突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下:hello world

103、爱情就是他妈这么个过程:确定喜欢的类型是需求分析;初步接触是概要设计,深入接触是详细设计;确定恋爱关系是编写代码;同居就是测试;吵架就是fix bug;上线就是结婚;项目经理离职是丧偶;项目升级是生孩子;项目下线就是他妈的离婚。

104、程序员都是好男人,因为他们一整天都在扪心自问:我到底错在哪了,让我知道,我一定改…

105、某游戏公司招了个日本人当主策,上班第一天就对下属说:“我是个加班狂,希望大家配合我。”一个月之后他回日本了,最后一句话是:“你们这样加班是不人道的。”

106、某程序员:从优酷刚跳槽到土豆,现在又合并…… 我的职业生涯太神奇了!! //注:优酷和土豆刚刚发布要合并的消息。

107、“朋友说不要找经历太复杂或者差异太大的人。我觉得也是这样。 唉。非常丧气。其实我就想找个IT男。简单。生活也简简单单。平平淡淡。多好。” IT男真是各种躺着中枪!

108、程序员有时候加班闷了,会临时夜里回趟家,随便赶上哪个IDE就用哪个IDE,比如Eclipse,独自趴在电脑前写一夜代码,不发一语,第二天清晨再回到公司,当没事发生过,突然觉得这TM才叫生活。

109、程序员应聘必备词汇:了解=听过名字;熟悉=知道是啥;熟练=用过;精通=做过东西。

110、某程序员路过一报刊亭:“老板,有《程序员》吗?” 老板:“没有,言承旭要不?”

111、两程序员聊天,程序员甲抱怨:做程序员太辛苦了,我想换行……我该怎么办?程序员乙:敲一下回车。

112、小女儿睡前非要他爸爸给讲一个故事,她爸爸想了想说:“很久很久以前,有一个青年,是一个程序员,他会C、C + +、C#、Delphi、Visual Basic、Perl、Python、Ruby、Javascript、ActionScript、bash、shell、Java、php、object C…女儿听着听着,很快就睡着了。

113、【程序员每日安排】 do { write_code(); eat(); sleep(); }

114、宝宝数学太好了,2岁就可以从1数到10了。后来,我告诉他0比1还小。今天吃饺子,我说:“宝宝,你数数你想吃几个饺子?”“0,1,2,3。”一边说着一边拿起一个饺子,“这是第0个。”老婆怒吼:“下一代还是做程序员的命!”

115、歌唱家唱歌看起来很轻松,羽毛球高手打球看起来也很轻松,所以,我们程序员写代码的过程也要让人看起来很轻松!

116、一位中国留学生在美国商店打工,不带计算器,抬头望天,心算找零。顾客大为惊讶,纷纷掏出计算器验证,皆无误,也抬头望天,惊恐地问:这就是云计算!

117、街边,一对情侣在吵架。女孩对 男孩 说,“我们分手吧!”男孩沉默半天,开口问道,“我能再说最后一句话吗?”“说吧,婆婆妈妈的。”“我会编程……”“会编程有个屁用啊,现在到处都是会编程的人!”男孩涨了红脸,接着说道,“我会编程…童话里,你爱的那个天使 …

118、编码的最高境界是什么? 眼中有码,心中无码。

119、程序员的五个阶段:二逼——>傻逼——>苦逼——>装逼——>牛逼,你正处于哪个阶段呢?

120、想必不少人都跟女神聊过天,女神通常的回复都是“哦”、“呵呵”,我的女神是个程序媛,她只给我回复1或者0……

121、某人问程序媛你是啥罩杯。。某媛回答。。C++。。瞬间给跪了。。然后我在想。。究竟是C++大还是C#大。。。

很多时候我们可能下载了一些软件的绿色版,但是却没有像安装版一样,在右键菜单有对应的操作,比如open with…

这里以绿色版的 Sublime Text2 举例,如何添加右键菜单的 open with Sublime Text2

Read more »

今天看到 著名计算机黑客Aaron Swartz自杀身亡,英年早逝,太可惜了。

Aaron Swartz写过一篇很有名的文章,叫做《HOWTO: Be more productive》(如何提高效率)。这里分享一篇褪墨的译文

肯定有人跟你说过这样的话“你有看电视的那么长时间,都可以用来写一本书了”,不可否认写书肯定比看电视更好的利用了时间,但是这个结论的成立需要一个假设:“时间是可互换的”,也就是说看电视的时间可以轻松的用来写书。但是很遗憾,事实并非如此。

不同的时间有不同的质量等级。如果我在走向地铁站的路上发现自己的笔记本忘带了,我就很难集中注意力写文章。同样,当你不停的被打断的时候,你也很难集中注意力。这里还有一些心理和情感上的因素,有的时候我心情很好,愿意主动去做一些事,但还有一些时候我感到很抑郁和疲惫,就只能看看电视了。

如果你想变的更加有效率,你必须意识到这个事实,并且很好的处理它。首先,你必须很好的利用不同种类的时间。其次,你必须让你的时间更有效率。

更有效的利用你的时间

  • 选择合适的问题
生命是如此的短暂,为什么浪费时间做一些没意义的事呢?做一些让你感到舒适的事很容易,但是你应该问问自己为什么要做这些事呢?有没有一些更重要的事等着你去做?为什么你不去做那些事呢?这些问题很难回答,但是每解决一个都会让你更有效率。

这不是说你所有的时间都应该用来做那些最重要的事。我的时间就肯定不是这样(否则,我现在就不会在写这篇文章了)。但是,这是我衡量自己的生活是否充实的重要标准。

  • 收集很多问题
另一个很多人都知道的秘密是:如果你认准一个问题,投入全部精力去解决它,这样你的效率是最高的。我发现这却是很难实现的。以现在为例,我正在锻炼身体,喝橙汁,整理桌面,和我弟弟聊天,同时在写现在这篇文章。今天一整天,我写了现在这篇文章,读了一本书,吃了点东西,回复了几封邮件,和一些朋友聊了聊天,买了点东西,改了改其他几篇文章,备份了硬盘,还整理了一下图书列表。

有很多不同的项目让我能够在不同质量的时间下做不同的工作。更重要的是,在你卡壳或是厌烦的时候有其他的一些事可以做。

这同时会让你变得更加有创造力。创造力就是你把自己从其他地方学到的东西能够用到你的工作中。如果你同时做许多不同方向的工作,那你就会得到更多的想法和创意。

  • 列一个清单
找一些不同的事同时做并不困难,大部分人都有很多很多的待办事项。但是如果你想把它们全记在脑袋里的话,它们就会慢慢消失。要记住所有这些事所给你带来的心智上的压力会把你压垮。解决办法仍然是很简单:把它们写下来。

一旦你把要做的事列成了一个清单,你就可以更好的分类组织它们了。比如说,我的清单包括:编程,思考,差事,读书,娱乐休息。

大部分项目都包括很多不同的任务。以写这篇文章为例,除了真正的写作过程,还包括了阅读其他关于拖沓的文章,考虑文章的各个部分,整理语句,向别人请教问题等等。每一项任务都属于清单的不同部分,所以你可以在合适的时间才去做某一部分。

  • 把任务清单和你的生活结合起来
一旦你有了这样一个任务清单,你需要做的事就是时常记得它,而记住它的最好方法是把它放在你能看到的地方。比如说,我总在我桌子上放一摞书,最上面的那一本就是我最近在读的。当我想要读书的时候,我就直接从上面拿一本书来读。

对于看电视/电影我也这么做。当我对某一个电影感兴趣的时候,我会把它放在电脑中一个特殊的文件夹内。每当我想休息一下,看看电影的时候,我就会打开那个文件夹。

我也想过一些更深入的方式,比如说我把一些想看的文章标记为“待读”,当我想要上网的时候就看看那些从前积累下来的未读文章。

提高你时间的质量

像上面那样最大限度的利用时间还远远不够,更重要的是提高你自己的时间的质量。那你究竟该怎样做呢?

减轻身体上的约束

  • 携带纸和笔:我认识的很多人的口袋里都有记事簿之类的东西。纸和笔在很多时候都是非常有用的,你可以随时随刻的记录自己的想法,我甚至通过这种方法在地铁上写过整篇文章。
  • 避免被打扰:对于那些需要集中注意力的任务,你应该尽量避免被打扰。一个很简单的方法是去一个没人能打扰你的地方,另一个方法是告诉周围的人未来一段时间不要打扰你。关于这点不要过犹不及。当你在浪费时间的时候你反倒应该被打扰一下,帮助别人解决问题肯定比坐在那里看新闻更好的利用了时间。
减轻心理上的约束
  • 吃,睡,运动:当你感到很饿,很累,很焦躁的时候,你的时间的质量会很低。解决这个问题很简单,就是:去吃,去睡,去运动。对自己说“虽然我很累了,但我不能休息,因为我必须要工作”会让你感到自己很努力,但事实上休息之后你的效率会更高。既然你迟早都要睡觉,还不如先休息好,来提高剩余时间内的效率。
  • 与快乐的人相处:跟快乐的人相处会也会让你变得快乐,也会让你心态更放松。也许很多人愿意躲在屋子里,不与其他人接触,埋头干活,他们觉得这样的话时间才没有被“浪费”,但事实上这会让他们变得情绪低落,工作效率也会大大下降。
  • 与朋友分担你的压力:即使你的朋友并不是能够感染他人,给你带来快乐的那种人,和其他的人一起解决复杂的问题也会让问题变得简单。一方面,精神上的压力大家可以互相分担,另一方面,和其他人在一起可以让你专注于工作而不是时常分心。

拖沓

上面所说的那些并不是问题的重点,关于效率大家最大的问题还是“拖沓”。虽然很多人不承认,但是几乎所有人都或多或少的会拖沓。那又该如何避免呢?

拖沓是什么?从旁观者来看,你在做好玩的事(如玩游戏,看新闻)而不是做真正的工作。但问题的关键是:你究竟为什么会这样?你的脑子里究竟是怎么想的?

我花了很多时间来研究这件事,我能给出的最好解释是在大脑会给每一项任务赋予一个“脑力场”。你玩过两块磁铁相互作用吗?如果你让它们异极相对,他们就会相互排斥,你会感到他们之间的磁场力。你越是想要把它们和在一起,越会感到它们之间的排斥力。

心智和精神上也是类似的。它是看不见摸不着的,但你却可以感受到它的存在。并且你越是想要接近它,它会离你越远。

你不可能通过蛮力来克服两个场之间的排斥力,相反,你应该做的是调转方向。

那又是什么产生了“精神力场”呢?似乎有两个主要原因:任务是否艰巨,任务是否是被指派的。

艰巨的任务

  • 把任务细分
一个任务很艰巨的原因之一是这个任务很宏大。比如说你想要做一个菜谱构造程序,没有人能一下子完成它,这是一个目标而不是一项任务。一项任务是使你能够朝向目标更进一步的具体概念。一个好的任务是你能够立即拿来实施的,比如“画一个展示菜谱的草图”。

当你完成了上一个任务后,下一步就会变得更加清晰。你将会考虑一个菜谱有什么构成,你需要什么样的搜索机制,如何构建菜谱的数据库,等等。这样你就构建了一个引擎,每一个任务都会通向下一个任务。

对于每一个比较大的项目,我都会考虑我需要完成一连串什么样的任务,并且将这些任务加入到我的待办事项列表中去。同样,当我做完一些任务之后我会把接下来需要完成的任务再加入任务列表中去。

  • 简化任务
另一个让任务变得艰巨的原因就是它太复杂了。“写一本书”这个任务会放你感到无从下手,那么就先从写一篇文章开始吧。如果一篇文章也觉得太多了,那么就先写一个段落的概要吧。最重要的是真正做了一些工作,真正的有进展。

一旦你明确了你的任务之后,你就可以更清楚的判断它,更容易的理解它。提高完善一些已有的东西比从头创建东西更容易。如果你的一个段落写好了,那么一点一点积累,它会变成一篇文章,最终变成一本书。

  • 认真考虑它
通常来说解决一个困难问题需要一些灵感。如果你对那个领域并不熟悉,你应该从研究这个领域开始,借鉴一下其他人的经验,慢慢的研究理解这个领域,并且做一些小的尝试看看你能否搞定这个领域。
  • 被指派的任务
被指派的任务是那些你被要求完成的任务。很多心理学实验都表明:当你”刺激”其他人做什么事的时候,他们反倒不容易做好那个事。奖励,惩罚等外部刺激会扼杀”内在动机”–你对于某个问题发自内心的兴趣。人类的大脑对于被要求做的事有先天的抗拒力。 这种现象不仅局限于其他人要求你做的事,当你向自己分配任务时仍然会出现这种现象。如果你对自己说”我应该好好做X工作了,这是我现在最重要的事”,之后你就会感到X突然变成了世界上最困难的事情了。然而一旦当Y变成了”最重要的事”,原来的那个X又变得简单了。
  • 虚构一个任务
如果你要完成X,那就告诉自己做Y。然而不幸的是,这样欺骗自己却很难,因为你清楚你究竟要做什么。
  • 不要自己给自己布置任务
给自己布置任务看起来很诱人,比如对自己说“我要写完这篇文章才去吃饭”,更糟糕的是让别人假装布置给你一些任务。但是这两种方式都会让你变得更没有效率,事实上你还是在给自己布置任务,你的大脑只会去逃避它。
  • 把事情变得有趣
困难的工作听起来不会令人感到愉悦,但事实上这可能就是最能让我感到高兴的事。一个困难的问题不但能让你集中全部注意力,而且当你完成它的时候你会感到非常棒,非常有成就感。

所以帮助自己完成一件事的秘密不是说服自己必须完成它,而是说服自己这件事确实非常有意思。如果一件事没有意思的话,你需要做的就是让它变得有意思

总结

效率的真正秘密在于“聆听自己”,在你饿的时候吃饭,在你疲惫的时候睡觉,当你厌烦的时候休息一下,做那些有趣好玩的项目。

这看起来很容易,但是社会上的一些观念正在把我们向相反的方向引导。要想变得更加有效率,我们需要做的就是转过头来“聆听自己”。