分类目录归档:未分类

为什么要背井离乡

最近知乎上有人提问:为什么年轻人,大都愿意来北上广深打拼,即使过得异常艰苦,远离亲人,仍然义无反顾,在家踏实过日子难道不好吗?一位叫“王远成”网友的回答瞬间博得了成百上千个赞同。
===================================
在手机上看见这个问题,于是到电脑前来怒答,因为感触实在是太深了。我估计我会写很长。中间夹杂了很多个人感情,结论在最后。
答主男,2008年某三流西安民办大专毕业,怀揣了2000块钱,我买了一张火车票,来到上海。这里没有任何亲戚,朋友,甚至因为跷课,当时的学校暂扣了我的毕业证。我到上海唯一的理由,是喜欢互联网。在这里,我合租在有9个人合租的一套房。小单间月租金650块钱。房间里只放得下一张床和一个笔记本电脑。
7月的太阳实在太热,求职问路基本靠12580。每周末去上海体育馆的招聘会,遇见突如其来的暴雨,浑身湿透根本不是个事,每天奔波而惶恐,我连毕业证都没有谁会要?
一个月之后我遇见了我工作的第一任主管,那天我求职时迷了路,步行走了一公里,找到面试公司的时候满头大汗。整个衣服湿透的,头发上的汗跟洗过了一样,中暑几乎站不稳,他递了我一杯水,然后让我聊了聊对SNS的看法,估计是他可怜我的落魄,他给老总打电话说暂时不要我的毕业证,先看看我的工作表现。
我进入到一家非常优秀的国内优秀的互联网公司,虽然工资只有1800。但我丝毫不介意,第一次参加例会,身边有了一堆来自迅雷,阿里巴巴,腾讯,百度的同事,知道了产品经理的这个职位,那人比我小两岁,是公司从盛大挖来的,他会用Axure,会用思维脑图,开会时能迅速提炼精髓,有着清晰的产品分析能力。分析互联网比我透彻的太多,遇见了正规军的我第一次明白,天外有天,我那点以往炫耀的知识根本连入门都算不上。
早晨6点半起床,挤地铁,为了节约,基本中午不吃午饭。别人去吃饭的时候我就一个人上顶楼的天台,对着上海的高楼大厦发呆。租住的住所卫生间的浴室龙头需要9个人共用,每天晚上做饭需要排队,上厕所的马桶只有一个,时间长就会被室友骂,电淋浴器的热水,别人用完了你就要等好久。每天到家写分析报告到夜里两点,困得不行就把闹钟设置到早上六点,然后睡觉。四个小时睡眠对我来说足够。当当满300-150的的时候,买了一大堆互联网的书狂补,周末,参加各类的产品经理聚会,不敢说话,只坐在最后安静的听。听他们分析,讲一堆我压根不明白的词,然后记在本子上,回家用百度查。
国庆长假,离家近的同事都回家,我一个人替全部门的同事加班,3倍工资的待遇让我用一个星期的时间买了第一部智能手机——魅族m8。
幸运的是我遇见了我一辈子的两个好哥们,公司里的一个PHP程序员和一个广告销售,我们三个人就像《中国合伙人》中的三个人那样一样形影不离,他们俩都是上海人。销售在我眼里算半个富二代,但特别努力上劲,比我在上海见过的很多外地人都要努力,这哥们与人打交道的人,各方面想法都更真实,本地人也有底气,他帮助我在各种情况下度过难关。经济,事业,感情……为了我们的项目,他甚至住在公司里过,程序员是个特别老实有点内向的男孩,执行力强很适合做程序员,总之,我们三个好的穿一条裤子。
付出当然要有回报,2010年,团购刚刚兴起,我们开始负责公司里的团购导航,这是公司的一个很重点的项目。我们三个每天都像打了鸡血,那时候从没有考虑过是否和公司给的待遇对等,我们都抱着创业的理想做。销售去北京出差,我俩聊产品从晚上8点打到12点,四个小时的长途,他会将访问客户第一手的资料给我,我迅速做产品要求,然后提交程序员,程序员加班当晚就做产品迭代。有时候半夜两点我们会突然想到点子,然后我会打电话讨论,加班到夜里三点是太经常的事情,张江满满的路灯和空无一人的街道,然后挡车送下属回家,再回家睡几个小时,接着赶到第二天公司上班。有时在夜里一点发现一个页面bug然后打电话给技术。他也会立即起来改正。
这是上海工作的人对工作的执着,绝大多数的人,只要是他份内的工作,你多晚打搅他都不会怪你,而且很负责。三个人的拼命很快有了回报,几年的时间,我变成这个项目的经理,我有一个近十人的小团队,他俩也都是各自业务的骨干,
上海的生活节奏很快,你感觉自己有一天不努力就会落后,这让你有了动力拼命学习,她的配套设施很好,张江楼下的便利店有很多24小时服务,你能在加班到半夜三点饿了的时候下楼钻进任意一间吃关东煮或者让店员用微波炉加热一个鸡块便当给你。
职位和收入上来之后,生活状态也变化了,周末可以去田子坊和女朋友逛街。从世博会看各国风光,去ChinaJoy找萌妹子拍照,去崇明岛抓小螃蟹,去阳澄湖吃大闸蟹,去松江大学城喝咖啡,坐在小店里看日落。自由的自己带着女朋友干自己想干的事情,去想去的地方。我的工资可以轻易的买得起IPAD,IPHONE,网购的东西基本第二天就到了,而且包邮。
我也遇见了很多我这辈子都佩服的人,他们是各个领域的专家。他们知识渊博,彬彬有礼,充满智慧,穿着时尚得体,说话恰到好处,做事井井有条。男男女女都好聪明,遇见他们你就会觉得,我也要努力变成这样。
再后来,搞销售的哥们开始带着我见客户,吃饭聊天,教我克服自己的弱点与人交流。过于内向是我的弱点,有了他的帮助,内向的我敢在公司战略会议上发言,为团队争资源,争利益。团队有一个正牌的复旦大学的中文系硕士和上师大的新闻学硕士。是的,作为他们的经理,我是西安一个三流野鸡民办大学差点没混上毕业证的大专生。
离开的时候。月薪10k。每年14个月工资,我知道这个工资在上海并不算高,但,其实,我觉得她对得起我自己的努力,至少我所在的公司,节假日3倍工资,晚上加班有额外工资,餐厅有免费的面包饼干方便面咖啡火腿肠,免费早餐。各种制度严格执行。
周围有同事收入比我高,但他们也确实比我强。学历,工作能力,为人处事。我输的心服口服。然后只要快速学习就好了。
上海是个神奇的城市,她不问你的出生,学历,不会鄙视你家庭条件,她只看你是否努力,真的。
——————华丽丽的分割线——————
2013年5月,母亲查处患肺癌,胸腔积液止不住,几乎丢了性命,我为了母亲离开上海,回到家乡,在这座并不算小的,我曾生活了20年的城市,我发至今无法适应。
家里的条件并不差,父母早年做生意,遭遇火灾,但我的生活还是并不拘谨的。作为独生子,家里父母自住一套房,05年给我买了一套房结婚用,去年公务员分房又买了一套出租。加上早年购买的在外出租的几个商铺,当然,这些东西,每一分,都是父母这辈子的血汗钱。我在上海的拘谨,只是因为我始终有一个信念,就是不愿在毕业后花父母的钱,事实上我做到。
家乡属于三线城市,经济上并不是落后太多。但回来后的我还是很不习惯,公共车基本不准时,服务人员没有服务意识,办酒店入住,我在等房卡,两个服务员在商量中午吃什么。等办好了进到客房,才发现上个客人走了房间没有收拾。要知道这并不是小酒店。鹿港小镇忙的时候,吃一个菜要催三次以上,服务员一脸的不情愿,餐厅服务员的服务让我时刻有种想要投诉的冲动,想起在上海的红辣椒,普通的川菜馆,服务员时刻观察你的举动,帮你脱掉大衣,帮你倒茶。这个城市里的每个人都在很认真的生活,于是,有些时候,开始对家乡失望。
首先是没有合适的工作:
回到家乡后,我的职业工作并不好找,家乡因为物流和互联网落后,电商落后不是一点点。后来,母亲不顾我的反对,送礼托关系把我搞到了机关,事业单位。一年以后可以拿到事业编制。上班,没完没了的上班,维护稳定。上班基本没事做,有食堂有宿舍,所有的东西都不用花钱。就是不让你回家。好几天回一次家,只能在家待一天。有时候感觉自己像在养老院。你不需要太好的电脑知识,会重装windows设置打印机和路由器,在这里就是专家。会淘宝,简直就是大神。
其次,能力是个屁,人际关系和家族势力基本就是一切:
每天,机关服务大厅都有一些不满意的群众,有的吵架有的哭闹,我刚去的时候非常惊讶,但同事都习以为常。甚至好心的提醒我:不要管。管了就是你的事。
机关的小领导很势力,给我安排各种工作,在这种机关单位,你有能力,那你就多干活,没有能力你就混日子。反正月底大家拿的工资一样,一段时间后她知道我是某个领导的亲戚,对我的态度完全变了,什么都不用我干,还立即给我评了先进,让我哭笑不得。
你必须承认,这就是小城市的工作现状,你努力上劲根本没用,因为,谁该受到重用和提拔就是领导说了算,人脉和后台就是一切。
于是,新来的非编制临岗合同工,拿着全机关最低的工资,干着没完没了的活。大部分拿到编制的,日复一日的工作就是游戏,吃饭,睡觉,聊天,上网。
再次:你的仕途完全是巴结和拍马屁,而周围的人都劝你说:这是太正常不过的事情。
新上任的机关领导,每天的工作就是斗地主,每天中午都和某上级下派领导聊天,然后帮领导洗碗献殷勤,三个月后,他迅速升成了主任……回家后我诧异的跟母亲提起,母亲说很正常。反而认真的找我谈话,说我太死板,不懂得溜须拍马。我无法辩解,三观崩溃。
最后,所有人判断你是否成功的标准,就是公务员:
我有一个亲戚,托关系进了警察系统。35岁的他收入4000多元,开着20多万的车,,单位有食堂而且伙食很不错,却永远和一堆朋友去外边吃,用他的话说这就是人脉。因为看上一套别墅但父母不给买就和父母吵架。经常问父母要钱,就是这样的一个人,母亲无比羡慕,认为他很优秀,他是公务员,出门有排场,有灰色收入,生活有保障,这一切深深的伤害着我的心,我有时候特别想离开家。只是,我舍不得化疗后身体虚弱的妈妈。一方面她年轻时候一个人干着两份工作,白手起家到给我准备了两套房子若干间商铺,把这辈子的一切都给了我,另一方面却又在试图更改我的价值观,告诉我要在机关时刻防着别人,要学会溜须拍马。她不许我做生意,不许我找私企的工作,只想让我进机关吃大锅饭。
这真的不是我家的个例,是几乎这座小城所有人的价值观。任何的事情都要靠关系。
而且,这里有一群,是一大群三观基本一致的亲戚,茶余饭后的话题就是谁家条件好谁家孩子收入高谁家媳妇抽了婆婆一耳光。参加家庭聚会没完没了的教育你学会溜须领导,要圆滑处事,要多懂点脑子不要那么善良,你不参加家庭聚会就是你不懂事你不合群。
除非你完全按照他们的意思办。
其实我知道,原本两个世界的人,他们看不懂我的内心的想法,他们没有经历。也许我也不懂他们的良苦用心。我回来的半年几乎没有跟父亲讲过话,因为他一直固执的觉得,那么多人在北上广打拼,有几个人拼成功了?还是回家乡做个公务员吧。
他们要的就是你回家,有份铁饭碗的公务员工作,找一个能照顾你的善良姑娘,赶快结婚生个孩子,过他们眼中完美的生活。生活本来就该是平庸的。
如今的我就生活在这种种不如意中,在看似富足却有些苦楚不安的状态下生活,我知道,我永远不会为了升职而去拍领导马屁给领导洗碗,我无法成为自己原本最看不起的人,我在机关单位永远没有前途。
我更知道我有一天会回上海的,哪怕会变成房奴按揭。我不在乎自己是否有房,因为我有理想。留在上海,让我的后代有更好的生活,已经是我此生最大的理想。
回答你的问题:
我也知道家乡安稳,衣食无忧,在家乡我不需要一分钱贷款,买辆好车拉着姑娘过平凡的生活。吃吃饭看看电影。每月1号的时候穿着大拖鞋到租客那里收租子。
我也知道北上广房价高也许要做一辈子房奴,买杯豆浆还要排队,坐地铁挤得像汉堡包,买辆车还要摇号,一个破车牌8万块。
那年幼稚的为了省钱不吃早饭的自己付出的代价就是如今每年体检都要观察随时准备切除的胆囊上的息肉。
你以为我不解亲情,为了一点钱放弃家乡到4000公里以外的城市拼的昏天黑地,看不到父母日益的年迈,就是为了回来过年聚会的时候喝着咖啡笑着告诉你我收入比你高?
你还说我虚荣我自私我价值扭曲?
我知道,再也遇不见那个陪我住650一个月的房子,给我做饭学削土豆皮弄伤手指,我发烧时整夜跪在地下给我换毛巾的女孩子了。
我再也遇不见为了一个页面的用户体验几个哥们争得面红耳赤约好下班吃火锅边笑边骂对方的铁哥们了。
再也没有在办公室被经理骂的狗血淋头然后回到家努力改一个用户体验报告到半夜2点半的自己了。
那些放弃了家乡富足生活去一线城市打拼的,都是有理想有希望的孩子,他们才是这个国家各个领域改变的希望。
大城市奋斗的孩子和那些小城市养尊处优的孩子,到底是谁才是价值扭曲的?你倒是说说看?

三年沒回家的兒子 變成女人回來了…沒猜到結局

? 在網路上看到一則超級搞笑的漫畫!感覺中間的情節已經夠瞎了!沒想到結局更是讓人大跌眼鏡XDDD

?
有這樣的父母…該怎麼辦呢?
網友們,看到這裡是不是已經覺得劇情略驚悚XD 內容有點瞎? 你以為就這麼結束了嘛……(那你們也太小看小編我的眼光了 呵呵)
?
我,其實是女人!!!
?
看到這裡,我已經感覺被作者耍的團團轉了!!(但是,這畢竟還不是結尾…)
?
.
.
.
.

挑战最强大脑——来自全球的14个编码社区

史蒂夫·乔布斯说过,每个人都应该学习给电脑编写程序的技术,因为这一过程能够教你如何去思考!众所周知,编程已成为开发者生命中至关重要的一部分。很多事实表明,越来越多的人不管男女老少都将参与编程这个行业。

?

学习编程的渠道有很多种,比如你可以利用一些互动平台或者书籍去学习编程,无论是哪种,只要找到适合自己的就OK。俗话说,光说不练嘴把式,因此,我们还需要进行实践。

编程极富有创造性,你可以创造出许多新奇有趣的想法。很多时候,开发者在相同的问题上花费了大量时间,而忽略了创造性。笔者不能确定这是否是许多网站发起编程挑战赛的原因,但可以确定的是,这些挑战对于开发者而言是有很大帮助的。它的好处在于:

  • 思考问题有新的思维方式;
  • 学到一门新语言;
  • 提升解决方法的能力;
  • 激发大脑灵感、专注;
  • 有趣!

文中搜集了14个不错的学习资源,帮助你挑战自我,领略并探索计算机领域无穷奥秘。

1.?[topcoder]

[topcoder]社区得到了数百万编码者的支持,因此你可以了解到很多挑战性的项目,基于此你还可以为自己赚去额外的报酬。你可以每天或每周参与编码挑战,该社区提供的项目极具有挑战性,对于初学者而言有一定的难度,但却值得一试。

2.?HackerEarth

HackerEarth提供了SaaS应用,能够为应试者自动评估技术和逻辑技能。此外,它还可作为人才聚集地,为公司提供智能招聘服务资源,帮助公司挑选适宜人才。

HackerEarth会频繁更新挑战项目,你可以提前几周登记注册,事先了解下项目,为挑战做好充足的准备。

3.?Coderbyte

Coderbyte旨在帮助提高开发者的编程技能,其得到了初学者和中级程序员的一致好评。该项目由Daniel Borowski?于2012年推出,现今任何开发者都可利用业余时间进行维护。

如果你遇到难题,你可以在Coderbyte上提问,该社区的用户相当活跃,你可以获得任何你想要的答案。

4.?Project Euler

Project Euler可能是全球最流行的编程挑战网站,项目推出初期就拥有几十万的用户,足以表明其影响力有多大。Project Euler致力于鼓励、挑战并且发展解题技巧,并为那些对迷人的数学世界有兴趣的人提供乐趣。

你可以通过:Wikipedia?、?Reddit?、?Stack Overflow?以及Google Code?了解更多Project Euler相关信息。

5.?Daily Programmer

如果你想了解更多关于编程和问题解答,那么Reddit Daily Programmer就是你的好去处。毋庸置疑,许多开发者都喜欢在Reddit上查看新闻、探讨话题。你的每一次创建、评论,社区成员都审阅并提交,所以你可能会获得许多意见和答案,直至满足你的需求。

6.?Codility Train

Codility Train支持多种语言,你可以预先定制或预先思考挑战项目,根据难易度进行分类,当然挑战何种程度取决于你自己的选择。

每项编程挑战最后都有详细的解释,挑战时间也有限制并不是绝对的自由。

7.?SPOJ

Sphere Online Judge?是一个由成千上万个编码挑战项目组成的社区,它几乎支持所有的编程语言,你还可以基于该社区论坛需求帮助

经典的二十个文学典故 | 博谈网

庄周梦蝶

战国时哲学家庄周主张是非齐一,物我两忘。《庄子》中有一寓言申喻此理:庄周梦见自己化作一只蝴蝶,翩翩飞舞,怡然自乐。梦醒以后,自身依然是庄周。因此说,不知是庄周化为蝴蝶呢,还是蝴蝶化为庄周。后世遂以庄周梦蝶比喻人生如梦幻,难以究诘。唐李商隠名作《锦瑟》云:“锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶,望帝春心托杜鹃。沧海月明珠有泪,蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。”诗中额联即用此典。清黄景仁《濠梁》“梦久已忘身是蝶,水清安识我非鱼,也用此意。(典见《庄子?齐物论》)

倾国倾城

汉武帝时,协律都尉李延年,曾在武帝前作歌道:“北方有佳人,绝世而独立。一顾倾人城,再顾倾人国。宁不知倾城复倾国,佳人难再得。”武帝无限神往,叹息良久曰:“世岂有此人乎?”平阳公主进言,谓李延年有妹,姿容绝代,妙丽善舞。武帝召见,纳入后宫,即后来深受宠幸的李夫人。“倾国倾城”一词,即用以形容女子美貌绝伦,文学作品中引用甚多,如李白《感兴》“峨眉艳晓月,一笑倾城欢”,又《清平调》“名花倾国两相欢,常得君王带笑看”,均用此典。(典见《汉书?外戚传》)

人面桃花

唐诗人崔护,资质甚美,清明独游长安南庄,至一村户,见花木丛萃,寂无人声。因渴极,叩门求浆。良久始有一女子应门,捧杯水让坐。女子独倚庭前桃花斜河,姿态楚楚动人;凝睇相对,似有无限深情。崔护以言挑之,不应。彼此注目久之。崔辞行,女子送至门,如不胜情而入。次年清明,崔护追忆此事,情不可邂,又往探访,唯见门院如故,扁锁无人。惆怅之余,乃题诗于门扉曰:“去年今日此门中,人面桃花相映红。人面不知何处去,桃花依旧笑春风!”后代诗文中因常以“人面桃花”喻男子邂逅一女子,来后不复再见的惆怅心情。

破镜重圆

南朝陈代子舍人徐德言,其妻为陈后主的妹妹乐昌公主。因见天下大乱,国亡无日。恐一旦亡国,离乱之际,夫妻失散,遂破铜镜为二,夫妻各执一半,相约他年正月十五日卖镜都市以谋晤合。未几,陈果为隋所灭。公主被隋朝重臣越国公杨素所获,极受恩宠。德言流离至京城,遇一仆在街头叫卖破镜,正与自己藏的半边契合。就题诗道:“镜与人俱去,镜归人不归。无复嫦娥影,空留明月辉。”公主见诗,悲泣不食。杨素知情后,大为感动,终于让他们夫妇团聚。后因以“破镜重圆”喻夫妻离散后重新团圆。

咏絮才高

东晋政治家谢安在雪天合家聚谈,与儿女讨论文义。正值户外雪越下越大,谢安兴致勃发,就指着外面的飞雪问:“白雪纷纷何所似?”谢安的侄子谢朗随口说:“撒盐空中差可拟。”侄女谢道韫接着道:“未若柳絮因风起。”谢安听后大加赞赏,夸奖侄女才思不凡。谢道韫是东晋有名的才女。柳絮随风飞扬,壮似飞雪,用以比喻纷飞的白雪,恰切而形象,故世人誉妇女有诗才为“咏絮才”。苏轼《谢人见和雪后书台壁二首》之一“渔蓑句好应须画,柳絮才高不道盐”,即用此典。

章台柳

唐代诗人韩羽是大历十才子之一,居京时得一姬柳氏,才色双全。后韩羽为淄清节度使侯希逸幕僚。时值安史之乱,他不敢携柳氏赴任,分别三年,未能团聚,因寄词柳氏云:“章台柳,章台柳,往日依依今在否?纵使长条似旧垂,也应攀折他人手。”柳氏也有和词云:“杨柳枝,芳菲节,可恨年年赠离别。一叶随风忽报秋,纵使君来岂堪拆?”她因自己貌美独居,恐有意外,就出家为尼。不久被番将沙吒利劫去,后赖虞侯将许俊用计救出,始得团圆。后人就名韩羽寄柳氏词的词调为“章台柳”。“章台柳”亦被用为可任人攀折之路,柳墙花而专指妓女之类的人物。

桐叶题诗

唐代诗人顾况,春日曾与诗友游览宫城附近的苑林,在横贯宫城的小河中拣到一片桐叶,题诗道:“一入深宫里,年年不见春。聊题一片叶,寄与有情人。次日,他亦以一片桐叶,题诗道:“花落深宫莺亦悲,上阳宫女断肠时。君恩不禁东流水,叶上题诗欲寄谁?题罢投入河中使之缓缓流入宫墙,数日后,有人在河中又拾到一片桐叶,叶上面又有题诗:“一叶题诗出禁城,谁人酬和独含情?自嗟不及波中叶,荡漾春风取次行。”顾况知此诗后,深为题诗者的红颜薄命而叹息。后遂以“桐叶题诗”喻宫女幽怨,常用于诗文之中。

秉烛夜游

《古代十九首》有“人生不满百,常怀千年忧。昼短苦夜长,何不秉烛游”之句。曹丕为魏王世子时,与吴质交好。建安二十二年大疫,一时文人如徐趕,刘桢,陈琳,王粲等均痢疾死亡,曹丕应作书与吴质,劝其惜时自娱。书中有“古人思炳烛夜游,良有以也”之句,后人遂以“秉烛夜游”喻及时行乐。李白《春夜宴桃李园序》中即用曹丕原语,只省一“思”字。以后又引申出秉烛看花。如唐白居易《惜牡丹花》“明朝风起应吹尽,夜惜衰红把火看”,李商隐《花下醉》“客散酒醒深夜后,更持红烛赏残花”,宋苏轼《海棠》“只恐夜深花睡去,故烧高烛照红妆”,均袭此意。

无弦琴

晋代诗人陶渊明,虽不善琴,却置“无弦琴”一具,每逢酒酣意适之时,便抚琴以为寄托。宋代文学家欧阳修作《论琴贴》,自谓曾先后得琴三具,一张比一张名贵。但“官愈昌,琴愈贵,而意愈不乐。”当其任夷陵县令时,日与青山绿水为邻,故琴不佳而意自适;官至舍人,学士以后,奔走于尘土之间,名利场上,思绪昏乱,即弹奏名琴,也索然无味因云:“乃知在人不在琴,若心自适,无玄也可。”苏轼《琴诗》云;“若言琴上有琴声,放在匝中何不鸣?若言声在指头上,何不于君指上听?”此均言声音不在琴,其意均从陶渊明“无弦琴”一事翻出。典见《昭明太子集.陶靖节传》

晓风残月与大江东去

苏轼是北宋杰出的文学家,所作散文汪洋恣肆,为“唐宋八大家”之一,诗歌也是清新豪健。独具一格。词开豪放一派,对后世颇具影响。他在翰林任职时,曾遇一善歌的幕僚,因问:我词比柳词何如?对方答道“柳中郎词,只好十七八女孩儿,执红牙拍板,唱杨柳岸,晓风残月;学士词,须关西大汉,执铁板唱大江东去。”苏轼听后,为之绝倒。“晓风残月”为柳永《雨霖铃》中句,“大江东去”为苏轼《念奴娇?赤壁怀古》中首句。两句颇能代表柳,苏两家词的不同风格,后人论词,议及“婉约派”与“豪放派”之不同特征时,常用此典。(典见《吹剑续录》)

王孙春草

《楚辞》中有“王孙游兮不归,春草生兮萋萋”之句,后代诗人遂常以“王孙春草”喻惜别,怀友之语。如南朝宋谢灵运《悲哉行》“萋萋春草生,王孙游有情”,唐王维《送别诗》“山中相送罢,日暮掩柴扉,春草明年绿,王孙归不归”,白居易《赋得古原草送别》诗“远方侵古道,晴翠接荒城。又送王孙去,萋萋满别情”,杜牧《长安送友人游湖南》诗“山密夕阳多,人稀芳草远”等,尤为著称。典见《楚辞?招隐士》

白云苍狗

唐太宗大历初年,王季友在豫章郡幕府任职。诗人杜甫与王季友有交,怜悯他博学多才却仕途失意,又遭妻子背离而去的不幸,作《可叹》一诗抒慨,首四句道:“天上浮云似白衣,斯须改变如苍狗。古往今来共一时,人生万事无不有。”诗以天上浮云翻覆苍黄的变化,比喻人生荣枯沉浮无常。“白云苍狗”,后用以比喻世事瞬息万变。宋代词人张元干有“白衣苍狗变浮云,千古浮名一聚尘”句。典见《杜工部集》

青梅竹马

李白《长干行》“郎骑竹马来,绕床弄青梅。同居长千里,两小无嫌猜”,形容少男少女天真无邪,亲昵嬉戏的形状。又以“两小无猜”喻幼男幼女天真纯洁,彼此相处融洽。如《聊斋志异?江城》:“翁有女,小字江城,与生同甲,时皆八九岁,两小无猜,日共嬉戏。”典见《李太白集》

绿叶成荫

唐代诗人杜牧,在宣城任幕僚时,曾应湖州崔刺史之邀,前去作客。在湖州遇一少女,其时年末及竿,心颇爱悦之,临别相约十年后与她成婚。此后连年游宦,直至十四年后,被任为湖州刺史,方重临旧地,而当年相约的少女已嫁三年,并已生二子。杜牧惆怅不已,作《叹花》诗以寄慨,诗曰“自是寻春去校迟,不须惆怅怨花时。狂风落尽深红色,绿叶成荫子满枝。”后人遂以“绿叶成荫”喻女子已出嫁,并生有子女。宋诗人欧阳修亦有类似经历,曾有诗云:“柳絮已将春色去,海棠应恨我来迟。”用语不同,而实运化杜牧“绿叶成荫”的诗意。典见《丽情集》,《唐诗纪事》,《唐才子传》。

凌波微步

曹操之子曹植,才高八斗,文名卓著,而在长兄曹丕当政以后,备受猜忌,郁郁不得志。他的《洛神赋》是一篇传诵人口的名篇,其中描写洛神的步态之美云:“体迅飞鸟,飘忽若神。凌波微步,罗袜生尘。”写洛神踏水而行,水面似留足迹之态十分传神。后人遂以“凌波微步”形容女子之步履轻盈。如贺铸《青玉案》词“凌波不过横塘路,但目送,芳尘去”,即用此典。(典见曹植《洛神赋》)。

镜花水月

镜中花,水中月,世人常以喻虚幻不可求得之物,但诗家常用以比喻朦胧空灵的意境。如宋严羽以佛论诗,主张妙悟,他说;“故其妙处,透彻玲珑,不可凑泊,如空中之音,相中之色,水中之月,镜中之象,言有尽而意无穷。”又明谢臻论诗云:“诗有可解不可解,不必解,若水月镜花,勿泥其迹可也。”亦以“镜花水月”比喻诗歌中不可言传的妙境。

闲云孤鹤

五代时诗僧贯休,七岁出家,苦节峻行,颇负诗名。吴越钱缪称王后,贯休以诗投偈。诗云:“贵逼身来不自由,几年辛苦踏林丘。满堂花醉三千客,一剑寒霜十四州。莱子衣裳功锦窄,谢公篇咏绮霞羞。他年名上凌烟阁,岂羡当年万户侯!”额联尤为佳绝。但钱缪见后,令其改“十四州”为“四十州”。乃可相见。贯休不从,道:“州亦难改,诗亦难改。然闲云孤鹤,何天而不可飞?”后因以“闲云孤鹤”喻来去自由,不受羁绊。

吹箫引凤

有箫仙者,生于周宣王十七年五月五日。宣王末年,史籍散乱,箫仙为文记述史事本末,以补正史之不足,人因称为箫史。其人琼姿闪烁,风神超迈,每引笛,能作鸾鸣凤响。秦穆公之女弄玉,亦喜吹箫,公因以下嫁箫史。夫妇伉俪相得,日以吹箫为乐。十数年后,弄玉也得箫史吹奏之妙,指开笛响,能作凤凰和鸣之声,引得凤凰纷纷闻声而来,飞聚屋顶。秦穆公特修筑凤台一座。后弄玉乘坐凤凰,箫史驾奴飞龙,双双升天而去。后因以“吹箫引凤”演技高妙神觉,复亦喻以凤求凰,男女缔结良缘,诗文小说中用为熟典。如唐李端《赠郭驸马(暖)》诗云:“日暮吹箫杨柳陌,路人遥指凤凰楼。”即用此典。

高山流水

春秋时俞伯牙工琴,琴曲托意摇深,常人难解,仅钟子期能赏。伯牙鼓琴,志在高山,钟子期赞曰:“善哉,娥峨兮若泰山。”伯牙旋又志在流水,钟子期叹曰:“善哉,洋洋兮若江河。”后来钟子期去世,伯牙痛失知音,废琴终身不弹。后人遂以“高山流水”喻知音难遇,也指乐曲绝妙。如董解元《西厢记》有“不是秦筝合众听,高山流水少知音”之句。岳飞在《小重山》一词中,“知音少,弦断有谁听?”正是伯牙当时心境的准确反应。明冯梦龙编《警世通言》中有《俞伯牙摔琴谢知音》小说一篇。典见《列子?汤问》,《吕氏春秋?本味》。

我们无法想象的贫穷生活 | 博谈网

有一个笑话说,两个农妇聊天,其中一个农妇问,你说皇后娘娘早上吃什么?另一个农妇回答:肯定是大饼卷大葱,酱想蘸多少蘸多少,一点都不心疼;刚好她们的 男人也在聊天,一个男人说,如果我是皇帝,就把整个村的牛粪全包下来,不许别人捡,只能我自己一个人捡;另一个男人说,愚昧,皇帝哪还用捡牛粪?他老人家 肯定是拿个蒲扇,吃着西瓜,坐在树荫底下看着下人们捡呢!
穷人无法想象皇帝的生活,习皇吃顿包子,包子立刻就火起来。不喜欢微服私游的皇帝无法想象百姓的生活,所以才会有“何不食肉糜”一说。我们这些每天有吃有喝,还能上网刷刷豆瓣的所谓“穷”人,也无法想象,真正的穷人究竟是怎样生活的。
我 妈有一个很远房的舅舅(三代以上曾是亲戚,因住的远,也不算亲,几十年没有联系),快八十了,他的老婆瘫痪在床,唯一的儿子性格懦弱,能力有限,在工厂里 打工,工资实在太低,不够一家三口花。老奶奶没钱买药,躺床上等死,儿子年龄越来越大,没有女人愿意嫁给他。儿子一时动了坏心思,把厂里的元件偷出去卖。 第一次偷,就卖了四百块,还被抓住,判了好几年。唯一能赚钱的儿子进了监狱,两个老人在家里,就更加没人管啦!我妈去买菜的时候,偶遇这个舅舅,他拿着三 五个鸡蛋在街上卖。见到我妈就开始痛哭,说家里半年都没沾过油腥,盐也断了好几个星期了,捡了几个鸡蛋卖掉好换两包盐。我妈一听,他过的这么惨,给他买了 十斤肥肉,留够当天买菜的钱,剩下的全部都给他了。
我妈回家说起这件事,我问了下给多少钱,原来买菜带的并不多,买完东西不过给了人家两 百多块钱。我说,你把他叫家里,再给他拿点呗!我妈摇摇头说,两百多,够他们花差不多一年了,给太多,他们还怕丢。等什么时候回老家再去看看他们好啦!我 又说起来,干嘛只买肥肉,买点瘦肉呗!我妈说,你懂什么!肥肉便宜,同样的钱买的更多,还可以化油。剩下的猪油渣,炒菜就够吃半年了。他们肚子里一点油水 都没有,瘦肉柴,买瘦肉给他们,他们还不乐意呢!听到这里,我也不好再说什么了。
我有一个朋友,谈了个女朋友。女孩长的蛮漂亮,只听说老 家是很山很山的地方,那里一年到头吃不到一顿肉。女孩只读了初中,是饭店里的服务员,我那个朋友念了本科,他的父亲是老家县城的法院院长,两个人完全门不 当户不对。从长相上说,我这个朋友长的一般,个子大概一米六五左右,在城市里,找对象也挺困难的。女孩个子高,也漂亮,他找了她,自己还挺满意,两人谈了 没多久,就同居了。朋友不想让女朋友继续在饭店里做,出钱让她学了电脑,找关系帮她介绍到一个单位做前台。虽然前台的工作也不算什么好工作,但对于女孩来 说,已是天上地下。后来,朋友的父母知道这件事啦,他妈找上门堵着让他俩分手。这个朋友,工作和生活很多都得靠家里,态度就不是很坚定。女孩扒着门不肯 走,他妈踹她,她还是不肯走,宁可受伤也要扒着门。因为是朋友,当时他又打电话求救,请我们暂时安抚下女孩,别闹太大了,我们不知道他究竟打算怎样,想着 能帮一把是一把,就过去把女孩先拉走了。女孩哭着跟我们说:“你知道吗?认识他之前,我这辈子就没吃过几次肉。现在跟他在一起,每顿都有肉吃。”一句话说 的我们都倒抽一口凉气。
这世上的穷人,究竟有多穷?每天吃饱穿暖的人,是无法想象的。就算别人说出来,你听到的,也只是一个故事而已。因为没有亲自去熬岁月,不会真正体会这其中的苦。
李林寒说,帮亲戚买票,无座和有座为何同样的价格?我回答他,一样的价格是为了,避免有些人因为价格便宜一点点而选择无座,最终导致淡季坐票卖不出去。
我亲眼见过,一个阿姨买菜,就为了冬瓜一斤便宜五分钱,两斤便宜一毛钱,从街头走到街尾,花了半个小时时间比价,又花了半个小时精挑细选,最终只买了两斤冬瓜。于他们来说,时间有的是,而钱,怎么精打细算都不够用。
我年轻的时候,听说一个人很穷,会大言不惭的说,他们不会多学东西,想办法赚钱吗?等年龄大一点,我才明白,我们看来很轻易就能做到的事,有些人因为眼界的 限制、生活条件的限制、能力的限制,变得困难无比,于是他们过着我们无法想象的贫穷生活,却无能为力。这就跟我们看着习皇吃包子,也跑去买一份,并沾沾自 喜。而实际上,他只是在秀罢了。我们无法想象穷人的生活,我们也无法想象,皇帝过着怎样的日子。

怎么样才是好的程序员(转)

要判断一个程序员是不是好的程序员,主要看他写的代码,因为程序员最重要的事是写代码。
即便不去理解代码的意图,只要看一眼,好的程序员写的代码与差的程序员写的代码基本上就可以看出来。好的程序员写的代码,整洁而规范,视觉上自然有一种美感。空白错落有致,注释恰到好处,命名和排版遵守统一的规范。差的程序员写的代码则经常出现过长的函数,前后不一致的命名方式和排版,过深的嵌套结构,非常复杂的表达式,随处可见的数字等毛病。
再去粗粗阅读,对好的程序员还是差的程序员就会更有把握。好的程序员写的代码,有一种精心雕琢而成的一致性。好的程序员一致会遵守统一的命名方式,如camelCase,而差的程序员的变量命名时不时的就会偏离统一规范。好的程序员的代码中拼写错误几乎不可见,而差的程序员的拼写错误要多得多。好的程序员对于同一类动作,不会忽而用这个动词,忽而又用那个同义词,如add/insert混用。好的程序员采用一致的简写规则,差的程序员则时而不简写,时而简写。好的程序员会很注意名称中形容词与名词谁在前谁在后,而差的程序员没有规则,时而在前时而在后。好的程序员很少会写出大段大段的重复代码,差的程序员却经常搞不定重复代码,他们难以将重复的代码抽取出一个统一的概念进行重用。好的程序员对于对外的API会注重注释与代码的一致性,差的程序员经常注释中的参数名称与函数定义都不一致。好的程序员很少会留下被注释掉的或用#if 0括起的垃圾代码,他们意志坚决,代码有用就要,没用就不要,差的程序员则不一样,他们经常不确信一段代码是否真的需要,他们缺乏保持代码整洁的习惯,因此他们让垃圾代码留着。
如上,即便你不懂他所用的语言,不却关心程序的逻辑,对好的程序员还是差的程序员就能做到八九不离十的判断。程序的好坏几乎总是取决于它们是否“漂亮”,不“漂亮”而好的程序,除了C++ STL源码,我再也没见过(如果你稍仔细看,STL的源码虽然不够“漂亮”,但仍然满足这里提出的一致性原则)。而又好又“漂亮”的代码则随处可见,如Linux Kernel,InnoDB,JDK,JUnit等等。
如果再仔细阅读,就能更准确。好的程序员写的代码,好似浑然天成,简单而直白。函数通常较短小,函数的名称准确的反映函数要完成的工作。逻辑简单而自然,让你读的时候由衷的发出“啊,就应该是这样”的感叹,而差的程序员的代码经常让你发出“怎么是这样?这是再干什么呀?”的疑问。好的程序员会在紧要关头加以画龙点睛般的注释,差的程序员要么没注释,要么注释只是代码的重复,纯粹是废话,更差的是注释是错的,是误导。
好的程序员未必是“语言律师”,即那种非常清楚的了解语言的各个细节,在编程时到处使用的家伙。好的程序员也不常“炫技”,在代码中精心构造一些独具匠心的片断,他们偶而会,但大多数时候总是用直白的语言来表述。
从代码也可以看出一个程序员的团队协作精神。注意团队合作的程序员,会严格按照团队规范写代码,而风格与团队规范不一致的程序员则很可能欠缺团队精神。注意团队合作的程序员会注意给模块的对外接口加以重要的说明,如前置条件、后置条件、参数能否是NULL等等,不注意团队合作的程序员懒于处理这些细节。
好的程序员与差的程序员的生产力差别巨大,项目的周期越长,项目越复杂,项目对质量的要求越高,好的程序员的价值就越大。好的程序员与差的程序员,管理成本也差别巨大,好的程序员只需要与他共同确定设计,代码可以不看,差的程序员的代码经常需要经过多次review,且仍有可能达不到理想的质量。
要成为好的程序员,首先要树立要成为好的程序员的志向,再勤加练习,天长日久,就会越来越好,这些人不怕老。没有志向永远成不了好的程序员,这些人若不在老去之前成为经理就会变成废人。
通过两个小时的笔试和半个小时的面试对于判断程序员来说是不够的。通过笔试与面试,你可以判断一个程序员是否具备算法与数据结构等基础知识,可以判断他对编程语言的特性是否掌握,可以判断他对技术是否关注,然而要知道他能否真的能很好的完成工作,不写代码是不够的。
那些显得对技术充满热情的,未必是好的程序员。这些人可能非常乐意从事有新意的工作,但后续的编码、测试、调试、文案工作则可能让他们感到厌烦。他们可能会提出好的创意,但却经常不能够有始有终的将其完成。公司不需要多少这样的人。
因此招聘的方式需要改善。招聘是最重要的,因为进来后就难以出去,即便是试用。转正条件白纸黑字写的很清楚,只要合格就可以转正,要达到合格并不是很困难。今年部门里进了很多新人,并不是人人都很优秀,但确实也都合格,自然也应该转正。
改善招聘的方法,就是让他写程序,可以出两道题,一道让他写程序,一道让他重构一个已有的较长的程序,一天之内完成。假使可以考他半个月,那么重构是不太需要的,但一天的时间太短,通过重构可以考察阅读并理解代码,并通过重构“化腐朽为神奇”的能力。那些不愿意写别人的代码,不愿意接受别人的代码,经常要重来一遍的人是不理想的。
今年有两个人采用了类似的方法。有一位简历很优秀的人,做了两道编程题被拒了,有一位简历及面试一般的人,通过编程测试,录用了。我感觉比单纯的笔试与面试要准确。

专业程序员必知的技巧:敲打代码

编写生产质量级别的代码似乎是一个明摆着的目标,但计算机行业却费了不少时日才弄明白正确的实现之道。例如,Windows 95曾经有个Bug会让操作系统在连续运行49.7天之后挂起—但是该Bug花了4年时间才暴露,有Bug这件事本身并不特别让人觉得惊讶,时间之所以这么长是因为其他Bug在不到49.7天的时候就让Windows 95崩溃了。

通往高质量代码的道路有两条,你可以二选一:一开始就内置质量,或者事后再敲打它。前者需要你在日复一日的编码中遵循众多戒律;后者则要求大量测试,到头来,在自以为完工之后,你会发现还有很多工作要做。
事后敲打(beat-it-in-afterward)是常见的工作方式,行业占统治地位的瀑布开发方法就是这样:规格说明、设计、构建、测试。测试是最后的步骤。产品来到测试部门,很快就崩溃了。于是,又回到工程部门,修复Bug。接着,把另一版提交给测试部门,又由于其他原因崩溃。就这样,来来回回,许多月(甚至是数年)流逝。
在程序员们深入具体实践之前,我们会从技巧1——敲打代码开始,帮你建立正确的思维方式。
你可能认为编写可靠代码是再明显不过的工作要求了。招工广告上不可能写:“急聘:具备良好工作态度、团队合作精神和桌上足球技巧的程序员。有则更佳:会编写可靠的代码。”可有问题的程序还是有这么多,怎么回事?
在深入探讨保证代码质量的日常实践之前,让我们先讨论“编写可靠代码”的含义。它不仅仅是一份实践清单,它还是一种思维方式。在把产品交到客户手中之前,你必须敲打自己的代码和整个产品。
客户终究敲打你的产品,以一种你不曾预料到的方式使用它。他们用它的时间会很长,而且会在你没有测试过的环境里用它。你必须考虑的问题是:打算让客户发现多少Bug?
你现在对代码敲打的次数越多,在交到客户手中之前,能清除掉的Bug就越多,留给客户的Bug就越少。
质量保证的形式
1.代码评审
保证代码质量最简单的方法就是让另一个程序员去读它。别出心裁的评审过程并没有必要,而且就连结对编程也算是一种形式的实时代码评审。团队将利用代码评审捕获Bug,贯彻编程风格和标准,同时在团队成员间传播知识。我们将在“技巧8:代码评审要早且多”中讨论代码评审。
2.单元测试
在你一个类接着一个类、一个方法接着一个方法地构建应用的业务逻辑时,验证代码的最佳方式就是单元测试。这种内部零件级的测试被设计用来对逻辑的各部分单独验证。
3.接受测试
单元测试立足于由内而外地审视产品,接受测试则被设计成模拟真实世界的用户,代表他们与系统交互。理想状况下,它们是自动执行的,而且以某种叙述式的风格书写出来。例如,某银行自动柜员机应用会有类似这样的接受故事:若我的活期存款为0,当我在ATM的“活期存款”中选择“取款”时,那么我应该看到“对不起,今天的晚餐吃泡面吧。”
它不像莎翁著作那样文采飞扬,但这些测试操练了整个系统:从用户界面一直到业务逻辑。无论它们是自动执行的,还是人工执行的,你的公司需要知道—在任何客户使用它之前—所有系统组件正在像预期的那样协调工作。
4.负载测试
负载测试将产品置于真实的压力条件下,然后度量它的响应。例如,某网站可能需要在数据库有100万条记录的条件下在100毫秒内展示指定页面。这些测试将揭示正确但不恰当的行为,如需要线性伸缩但却以指数级别伸缩的代码。
5.定向探索测试
接受测试覆盖了产品的所有指定行为,它可能来自于产品需求文档或会议。但程序员通常还是有办法使之崩溃—总有些黑暗角落被规格说明疏忽掉。定向探索测试就是要将这些边界情况挖出来。
这种测试通常是人工执行的,可能是程序员自己,用于探索和发现问题。但最初探索之后,任何有用的测试就会被加到接受测试套件之中。
该测试有一个专业化的变种,如安全审计。在这些情况下,专业测试人员会利用他们的领域知识(可能也包括代码评审)来指导他们的测试。
6.机构测试
硬件产品需要不同的机构认证:FCC度量电磁辐射,确保产品不会导致无线电干扰;美国保险商实验室(UL)检查当你将产品置于火上或舔电池电极时会发生什么。这些测试都在新产品发布之前进行,每次硬件变化都会影响认证。
7.环境测试
硬件产品的运行温度和湿度也需要在推至极限时测试。这些测试是用环境室来完成的,它可以同时控制这两个因素;当产品在其间运行时,它会经历所有四种极限条件。
8.兼容性测试
一旦产品需要跟其他产品进行互操作(如某字处理程序需要跟其他字处理程序交换文档),这些兼容性的论断就需要定期验证。它们可能会访问一组已保存的文档,也可能会实时地将你的产品连接到其他产品上。
9.耐久性测试
你会注意到这里提到的大多数测试都是尽量频繁且快速地运行。可有些Bug只会在一段时间的使用之后现身。前面提到的49.7天的Bug很好说明了这一点—它源于每毫秒递增的32位计数器,在49.7天之后,它会从最大值反转成0。测试若不持续运行上一会儿,你就无法发现类似Bug。
10.Beta测试
产品在这一阶段被送到了真实客户手中—他们知道自己要参加测试,并同意发现问题时提交报告。Beta测试的目的就在于我们在本技巧一开始讨论的:Beta测试者将以你意想不到的方式使用产品,试用它一段时间,并在你没有测试过的环境中测试产品。
11.运行中测试
公司可能会在产品上市之后继续测试。尤其是硬件产品,如偶尔从制造线上拔掉一个单元并证明制造线能工作正常是一种很有用的方法。这些运行中测试的设计目的就是为了捕获因零件或装配过程中的变化而导致的问题。
实践 VS 思维方式
你的团队可能采用类似“所有代码都必须有单元测试”或“所有代码必须先评审后检入(check in)”的实践。但这些实践没有一个能保证代码坚若磐石。想想若公司根本就没有采用一个质量实践,这种状况下该怎么做,即你将如何敲打代码以保证它的可靠性?
这是在继续深入之前你需要建立的思维方式。提交可靠的代码。质量实践只是达到目的的一种手段—最终的裁判是客户手中产品的可靠性。你想让你的名字跟市面上满是Bug的垃圾产品挂钩吗?不,当然不想。
行动指南
在上述所有形式的测试中,你的公司采用了哪些?在源代码中寻找单元测试,向测试部门询问接受测试计划,问问Beta测试是如何进行的以及向哪个部门提交反馈。再问下资深工程师:这是否足以保证客户有一个平滑的体验?
在定向探索测试上多花些时间,哪怕你的“方向”有点儿模糊。实际用一下产品,看看你是否可以让它崩溃。如果可以,那就相应地记下Bug报告。
Josh Carter,资深软件设计师,具有超过20年编程行业从业经验。热衷于编程和追逐前沿技术,但同时谨记史蒂夫?乔布斯的箴言“真正的艺术家能让产品面市”。他还涉足工程管理领域,曾经主管大型企业软件开发团队。目前已出版多本关于计算机软件的技术书籍,同时他还在主流计算机杂志的技术专栏发表文章。

作者Josh Carter,资深软件设计师,具有超过20年编程行业从业经验。热衷于编程和追逐前沿技术,但同时谨记史蒂夫?乔布斯的箴言“真正的艺术家能让产品面市”。他还涉足工程管理领域,曾经主管大型企业软件开发团队。目前已出版多本关于计算机软件的技术书籍,同时他还在主流计算机杂志的技术专栏发表文章。

成为优秀程序员的10点建议

这篇文章要介绍的,是我作为专业程序员这些年来学到的能真正提高我的代码质量和整体工作效率的10件事情。
1. 永远不要复制代码
不惜任何代价避免重复的代码。如果一个常用的代码片段出现在了程序中的几个不同地方,重构它,把它放到一个自己的函数里。重复的代码会导致你的同事在读你的代码时产生困惑。而重复的代码如果在一个地方修改,在另外一个地方忘记修改,就会产生到处是bug,它还会使你的代码体积变得臃肿。现代的编程语言提供了很好的方法来解决这些问题,例如,下面这个问题在以前很难解决,而如今使用lambdas却很好实现:
1
现在我们重构含有部分相同代码的函数,用delegate模式重写它们:
2
2. 留意你开始分心的时候
当你发现自己在浏览facebook或微博、而不是在解决问题,这通常是一种你需要短暂休息的信号。离开办公桌,去喝一杯咖啡,或去跟同事聊5分钟。尽管这样做看起来有点反直觉,但长久去看,它会提高你的工作效率。
3. 不要匆忙赶任务而放弃原则
当带着压力去解决一个问题或修改一个bug,你很容易失去自制,发现自己匆匆忙忙,甚至完全忘了一直坚持的重要的测试过程。这通常会导致更多的问题,会让你在老板或同事眼里显得很不专业。
4. 测试你完成的代码
你知道你的代码能做什么,而且试了一下,它确实好用,但你实际上需要充分的验证它。分析所有可能的边界情况,测试在所有可能的条件下它都能如期的工作。如果有参数,传递一些预期范围外的值。传递一个null值。如果可能,让同事看看你的代码,问他们能否弄坏它。单元测试是到达这种目的的常规方法。
5. 代码审查
提交你的代码之前,找个同事一起坐下来,向他解释你做了哪些修改。通常,这样做的过程中你就能发现代码中的错误,而不需要同事说一句话。这比自己审查自己的代码要有效的多得多。
6. 精简代码
如果你发现写了大量的代码来解决一个简单的问题,你很可能做错了。下面的boolean用法是一个很好的例子:
3
这时你应该写成这样:
4
代码越少越好。这会使bug更少,重构可能性更小,出错的几率更小。要适度。可读性同等重要,你可不能这样做而使代码丧失可读性。
7. 为优雅的代码而努力
优雅的代码非常的易读,只用手边很少的代码、让机器做很少的运算就能解决问题。在各种环境中都做到代码优雅是很难的,但经过一段时间的编程,你会对优雅的代码是个什么样子有个初步的感觉。优雅的代码不会通过重构来获得。当你看到优雅的代码是会很高兴。你会为它自豪。例如,下面就是一个我认为是优雅的方式来计算多边形面积的方法:
5
8. 编写不言自明的代码
勿庸置疑,注释是编程中很重要的一部分,但能够不言自明的代码跟胜一筹,因为它能让你在看代码时就能理解它。函数名变量名要慎重选择,好的变量/方法名字放到语言语义环境中时,不懂编程的人都能看懂。例如:
6
9. 不要使用纯数字
直接把数字嵌入代码中是一种恶习,因为无法说明它们是代表什么的。当有重复时更糟糕——相同的数字在代码的多个地方出现。如果只修改了一个,而忘记了其它的。这就导致bug。一定要用一个命名常量来代表你要表达的数字,即使它在代码里只出现一次。
10. 不要做手工劳动
当做一系列动作时,人类总是喜欢犯错误。如果你在做部署工作,并且不是一步能完成的,那你就是在做错事。尽量的让工作能自动化的完成,减少人为错误。当做工作量很大的任务时,这尤其重要。
11. 避免过早优化
当你要去优化一个已经好用的功能代码时,你很有可能会改坏它。优化只能发生在有性能分析报告指示需要优化的时候,通常是在一个项目开发的最后阶段。性能分析之前的优化活动纯属浪费时间,并且会导致bug出现。
好吧,我说是10个,但你却得到了额外赠送的一个!
这些就是我要说的,我希望它们能帮助你改进编程开发过程。
下次再见!祝快乐!
Cheers, Paul.
英文链接:www.wildbunny.co.uk/blog/2012/11/01/10-steps-to-becoming-a-better-programmer/
来源:外刊IT评论网