手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:Misc

转贴:每位开发人员都应铭记的10句编程谚语

  所谓谚语,就是用言简意赅、通俗易懂的方式传达人生箴言和普遍真理的话,它们能很好地帮助你处理生活和工作上的事情。也正因如此,我才整理了10句编程谚语,每位开发人员都应该铭记他们,武装自己。

1. 无风不起浪
代码设计是否糟糕,从某些地方就可以看出来。比如:

  • a. 超大类或超大函数
  • b. 大片被注释的代码
  • c. 逻辑重复
  • d. If/else嵌套过深


程序员们通常称它们作代码异味(Code Smell),但是就我个人认为“代码警报”这个名字更为合适一些,因为它有更高的紧迫感的含义。根本问题处理不当,终将引火烧身。

译注:Code Smell中文译名一般为“代码异味”,或“代码味道”,它是提示代码中某个地方存在错误的一个暗示,开发人员可以通过这种smell(异味)在代码中追捕到问题。


2. 预防为主,治疗为辅
20世纪80年代,丰田公司的流水作业线因为它在缺陷预防方法上的革新变得出了名的高效。每个发现自己的部门有问题的成员都有权暂停生产。这个方法意在宁可发现问题后马上暂定生产、解决问题,也不能由其继续生产而导致更棘手且更高代价的修复/更换/召回后的问题。

程序员总会做出生产率就等同于快速编码的错误臆断。许多程序员都会不假思索地直接着手代码设计。可惜,这种Leeroy Jenkins式鲁莽的做法多会导致软件的开发过程变得很邋遢,拙劣的代码需要不断的监测和修改——也可能会被彻底地替换。最终,生产率所涉及到的因素就 不仅仅是写代码所消耗的时间了,还要有调试的时间。稍不留神就会“捡了芝麻丢了西瓜”。(因小失大。)

译注:Leeroy Jenkins 行为:WOW游戏中一位玩家不顾大家独身一人迎敌,导致灭团。


3. 不要孤注一掷 (过度依赖某人)

一个软件开发团队的公共要素(bus factor)是指那些会影响整个项目进程的核心开发人员的总数。比如某人被车撞了或某人生孩子或某人跳槽了,项目可能就会无序,甚至会搁置。

译注: bus factor 即指公共要素,比喻了开发过程中的一些共同因素。如果挤上 bus 的 factor 越多,bus 就越不稳定,所以要控制好 bus factor ,以免问题发生。

换句话说,如果你的团队突然失去了一个主力成员,你会怎么办?生意依旧进行还是戛然而止?

很不幸,大多数软件团队都陷入了后一种情况。这些团队把他们的开发员培养成了只会处理他们自己专业领域的“领域专家”。起初,这看起来是一个比较合理 的方法。它 对汽车制造装配生产线很适用,但是为什么对软件开发团队就不行呢?毕竟,想让每个成员都掌握所编程序的细微差别也不太可能,对吧?

问题是开发人员不容易轻易替换掉。虽然当每位成员都可用时,“抽屉方法”很有效,但如果当“领域专家”突然因人事变动、疾病或突发事故而无法工作时, 抽屉 方法立马土崩瓦解。(所以,)软件团队有一些看似多余实则重要的后备力量是至关重要。代码复查、结对编程和共有代码可用成功营造一个环境,在这个环境中, 每位开发人员至少表面上是熟悉自己非擅长领域之外的系统部分。


4. 种瓜得瓜,种豆得豆

  《注重实效的程序员》一书中有这样一段话解释“破窗理论”:不要留着“破窗户”(低劣的设计、错误的决策或者糟糕的代码)不修。发现一个就修一个。如 果没有足够的时间进行适当的修理,就先把它保留起来。或许你可 以把出问题的代码放到注释中,或是显示“未实现”消息,或用虚拟数据加以替代。采取一些措施,防止进一步的恶化。这表明局势尚在掌控之中。

我们见过整洁良好的系统在出现“破窗”之后立马崩溃。虽然促使软件崩溃的原因还有其他因素(我们将在其他地方接触到),但(对“破窗”)置之不理,肯定会更快地加速系统崩溃。

简而言之,好的代码会促生好的代码,糟糕的代码也会促生糟糕的代码。别低估了惯性的力量。没人想去整理糟糕的代码,同样没人想把完美的代码弄得一团糟。写好你的代码,它才更可能经得住时间的考验。

译注:《注重实效的程序员》,作者Andrew Hunt / David Thomas。该书直击编程陈地,穿过了软件开发中日益增长的规范和技术藩篱,对核心过程进行了审视――即根据需求,创建用户乐于接受的、可工作和易维护 的 代码。本书包含的内容从个人责任到职业发展,直至保持代码灵活和易于改编重用的架构技术。从本书中将学到防止软件变质、消除复制知识的陷阱、编写灵活、动 态和易适应的代码、避免出现相同的设计、用契约、断言和异常对代码进行防护等内容。

译注:破窗理论(Broken Window theory):是关于环境对人们心理造成暗示性或诱导性影响的一种认识。“破窗效应”理论是指:如果有人打坏了一幢建筑物的窗户玻璃,而这扇窗户又得不 到及时的维修,别人就可能受到某些暗示性的纵容去打烂更多的窗户。发现问题就要及时矫正和补救。


5. 欲速则不达

经理、客户和程序员正日益变得急躁。一切都需要做的事,都需要马上就做好。正因如此,快速修复问题变得非常急迫。

没时间对一个新功能进行适当的单元测试?好吧,你可以先完成一次测试运行,然后你就可以随时回来继续测试它。

当访问Y属性时,会不会碰到奇怪的对象引用错误?无论怎样,把代码放到try/catch语句块中。我们要钓到大鱼啦!

是不是似曾相识呢?这是因为我们在以前已经都做到了。并且在某些情况下、它是无可非议的。毕竟,我们有最后期限,还得满足客户和经理。但不要过于频繁 操 作,否则你会发现你的代码不稳定,有很多热修复、逻辑重复、未测试的方案和错误处理。最后,你要么是把事情草草做完,要么是把事情好好做完。

6. 三思而后行

“敏捷开发”这个词最近被频繁滥用,经常被程序员用来掩饰他们在软件开发过程中的糟糕规划/设计阶段。我们是设计者,看到产品朝正当方向有实质进展, 我们理应高兴。但意外的是,UML图和用例分析似乎并不能满足我们的愿望。所以,在不知自己做什么的情况下或者不知自己身处何处时,我们开发人员经常就稀 里糊涂地写代码了。

这就好比你要去吃饭,但你根本没有想好去哪里吃。因为你太饿了,所以你迫不及待地找个餐馆,定个桌位。然后你上车开车后沿途在想(找地方吃饭)。只 是,这样会耗费更多的时间,因为你要过较多的U型弯道,还在餐馆前停车,也许最后因等待时间过长而不吃了。确切地说,你最后应该能找到地方吃饭,但你可能 吃的饭并不是你想吃的,并且这样花费的时间,可能比你直接在想去的餐馆订餐所花的时间更长。


7. 如果你惟一的工具是一把锤子,你往往会把一切问题看成钉子

  程序员有一种倾向,当一谈到他们工具时,其视野就变狭窄了。一旦某种方法在我们的一个项目上“行得通”,我们就会在接下来所有的项目上都用到它。学习 新东 西仿佛是一种煎熬,有时候甚至会心神不定。从始至终都在想“如果我用之前的方法做、这个就不会这么麻烦了”。一定要摒弃这种想法,按我们所知道的去做,即 使那不是最完美的解决方法。

坚持自己所知很简单,不过从长远的角度讲,选择一个适合这项工作的工具要容易得多。否则,就会与你的职业生涯格格不入。


8. 沉默即赞同

  "破窗理论"与"变成惯性理论"有着宏观的联系。

编程社区就好像一个现实社区。每个作品都是一个开发者的缩影。糟糕的代码发布的越多,就越容易反映现状。如果你不去努力编写优秀、整洁和稳定的代码,那你每天都将和糟糕的代码相伴了。

同样地,如果你看到别人写出了糟糕的代码,你就要跟这个人提出来。注意,这时候机智就应该用上场了。一般情况下,程序员都愿意承认他们在软件开发中还是有不懂的地方,并且会感谢你的好意。互相帮助对大家都有利,而对问题视而不见,只会使问题一直存在。


9. 双鸟在林,不如一鸟在手

如果可以讨论系统架构和重构,那么就差找个时间把事情做完。为了使正常运作的东西更加简洁而做改动,权衡改动的利弊很重要。当然了,简洁是一个理想目 标, 但总会有可以通过重构改进的代码。在编程世界中,为了代码不过时,会频繁简单改动代码。但有时候你又必须保证代码对客户有价值。那么,你面临一个简单窘 境:你不能一石二鸟。你在重构旧代码上所发时间越多,你编写新代码的时间就越少。在及时改进代码和维护程序之间,也需要找到平衡点。

10. 能力越大,责任越大

  毫无疑问,软件已成为我们生活中一个既基本又重要的一部分。正因如此,开发优秀软件格外重要。乒乓球游戏中的Bug是一回事,航天飞机导向系统或者航 空交通管制系统中的Bug是另外一回事。Slashdot曾发表一文,讲述了单单Google News的一个小失误使一家公司股票蒸发11.4亿美元。其他例子参见《软件Bug引发的十次严重后果》。这些例子便说明了我们正行使着多大的权利。你今天写的代码,无论你是否有意,说不定有朝一日在重要的应用程序中派上用场,这想想都令人害怕。编写正确合格的代码吧!

译注:Slashdot是一个资讯科技网站。

原文来自http://www.jobbole.com/entry.php/297,看了笑笑即可

删除小数点目录

上午某群内好友中了木马,目录名中都是小数点,无法删除。找了一下资料,以做备份吧。。

----start--
这些有小数点的文件夹其实是windows系统存在的一个bug,因为不容易被删除而且很隐蔽,因此经常为一些入侵者利用存放一些木马之类的文件。虽然我们不能像删除普通文件一样删除这种文件夹,但总归有删除办法的。懂得了这种文件的创建原理,删除自然就好办了。有关该原理的介绍具体可以看《建一个别人进不了删不掉的绝密文件夹》这篇文章。

删除办法为:在CMD下通过rd命令+文件名+"./"来删除,如果文件夹下有文件需要先删掉内部的文件(一般为木马文件),那么如何进入这个文件夹呢?可以通过“start+目录的绝对路径”命令进入,如:start d:\web\sites\1..\。
----eof---

后来,朋友是删除了这个目录了。。HOHO,想不到,还有Start这个命令。(百万宝贝告诉我,Start命令失败。。。)

原文:http://www.aspxhome.com/security/20092/760121.htm

委琐记

一大早上班,QQ群里就不停的在弹#小月月#,很是吃惊,仿佛感觉自己好象错过了什么,然而上天总还是眷顾我的,又有不少人在群里友情发出了小月月故事的网址,于是我也本着不愿独享的心情,将它公布到了我的微博上,但毕竟微博收藏的人不多,不如我的勃客收藏的量大,于是乎。。。

在这里我还是公布一下。。要知道,这可是传说中的脱水版,不要忍受猫扑天涯那种无尽回复的楼层,直接看的就是精华所在。原文名称是:国庆悲情游拜月教主小月月脱水版合集,链接地址为:http://game.zol.com.cn/198/1986010.html,一般建议是在肚子饿的时候看。当然如果看过那些什么 蓬蓬头啦,两女一杯之类的毫无反应的,可以直接观看,不会对你们的生理造成很大的伤害,否则,建议你们还是先冷静下来再观看,以免发生不测。

顺便,看的时候可以手里拿罐啤酒,看完后,你会发现,啤酒已经冰镇完毕。

最后,上一个验证码。。好意外的验证码,到现在我也只碰过这么一次哦:

大小: 1.98 K
尺寸: 94 x 51
浏览: 1380 次
点击打开新窗口浏览全图

运气还是不错的

Tags: 小月月, 验证码

用谷歌浏览器来当手机模拟器

张宴在自己的博客里写着用《用谷歌浏览器来当手机模拟器》,看完后发现是模拟了User-Agent,这个其实在很早以前大家就都玩过类似的功能,只是,我们没有系统的拿出来说而已。

果然,光会用是没用的,还得会写会说。比如当QQ微博刚出来的时候,大家就在考虑怎么着能够发图片,于是乎opera模拟user-agent出来了,Firefox等的模拟也出来了。但这种技巧也就仅仅流传在微博上,而没有上升到文字的高度,可是,张宴他集中出来了。

---start

  很多网站都通过User-Agent来判断浏览器类型,如果是3G手机,显示手机页面内容,如果是普通浏览器,显示普通网页内容。

谷歌Chrome浏览器,可以很方便地用来当3G手机模拟器。在Windows的【开始】-->【运行】中输入以下命令,启动谷歌浏览器,即可模拟相应手机的浏览器去访问3G手机网页:

谷歌Android:

XML/HTML代码
  1. chrome.exe --user-agent="Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"  
苹果iPhone:
XML/HTML代码
  1. chrome.exe --user-agent="Mozilla/5.0 (iPad; U; CPU OS 3_2_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B500 Safari/531.21.10"  
诺基亚N97:
XML/HTML代码
  1. chrome.exe --user-agent="Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124"  

试一试,分别用Android、iPhone、诺基亚访问http://www.163.com/http://blog.s135.com/http://www.google.com.hk/http://3g.qq.comhttp://t.sina.cn这些3G手机网页,看看有什么不同。

更多款手机的User-Agent:http://www.zytrax.com/tech/web/mobile_ids.html

----EOF--

以上功能对于我们firefox用户来说就没辙了,但并不是不可以使用,比如我们有一个很强大的addon,那就是:Nightly Tester Tools。这个工具可是非常强大哦,想更改啥都可,以前写过两篇介绍性的博客,其中一篇为介绍,一篇为应用

1、UserAgent分析

2、google notebook。。。

 

Tags: chrome, user-agent

失而复得的外套

超市购物。老婆带着小孩子去玩,我在和朋友谈点事情,忽然电话过来说是衣服不见了,可能是掉地上被人捡了吧?正好小孩要睡觉,于是乎,带到咖啡厅睡了一会,醒来后去超市问了一下营业员,还真的捡到了,经过一些手续拿到了衣服(过程有点复杂,回家用电脑再详细描述)
......
衣服是在超市丢掉的。然后睡醒后去找,事情就这样发生了。。。。
先到总服务台咨询一下,服务台告诉我没这么快建议我们去收银台旁边的服务台咨询一下。进了超市后,到了小朋友玩的时间最长的那个地方问了一下所在区域的服务员,好象是一个领班,帮忙问了一下,然后好几个服务员说是看到了衣服,并说了衣服存放的位置,然后发现衣服又不见了。再问其他的营业员,说,仿佛是给那些卖衣服的柜台去了(以为是别人在卖衣服的柜台拿了衣服,但临时没有购买随便扔在其他位置了)。
那位领班又去卖衣服的柜台帮忙问了一下,等了好久才回来,同时把衣服拿回来了,说是原来卖衣服的人也换班了,问了好几个人,再打电话给那位下班的同事才确认衣服的。
于是一件衣服失而复得。感谢超市的领班和服务员们。谢谢了。通过这件事也让我感觉到家乡的这种气氛变得好很多,放在几年前,80%就不见了。。

自 WAP 发表