`
bashenmail
  • 浏览: 226303 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】你的代码写的很烂

阅读更多

转自:http://www.aqee.net/2010/08/09/your-code-sucks/#more-602

我有一个很熟的朋友,他现在忙的不可开交。他手上有一大堆没有完成的合同,而且一个跟他一起开发的助手也离他而去。于是,在三个大客户的催命鬼时的督促下,他已经连续好几个星期没休息了。

其中有个客户跟他讨论他给这个客户做的iPad应用程序,客户告诉他“我们花钱雇了另外一个程序员来审查你的代码,他说你的代码写的很烂。”

 

当他告诉我这个故事时,我只是微微一笑,想起了我以前是怎么唾弃别人的代码的。当我刚开始编程时,我看到过一段程序,我认为那是毋庸置疑的写的很烂的,我删掉了那段代码,用自己认为更好的方面重新写了一遍。当我变成的成熟后,我回头再看,发现我所删掉的那段代码其实是用了一个很好的设计模式,而我重写的确是丑陋无比。

我就这样被上了一课。

之后的日子里,我经常会遇到我认为是丑的不能再丑的代码。尽管如此,我也不通篇否定它们了,我只会在其中找一些特别的无法容忍的部分重新编写。可10次中有9次,当我快要完成时,我发现了一个问题使我不得不对自己说“哦,怪不得他们要写成这样了”,然后把代码恢复成原样,或也使用同样“丑的不能再丑”方式完成它。

现在我变的更成熟了,我可以充满自信的告诉你,我再也不会看着别人编的代码说“哦,这代码很烂”了。我知道,在没有了解整个程序的解决方案之前,你不可能就那么轻易的判断代码的好和坏。真的,有时候它看起来很傻,或完成的不好,或没有文档标注(我的意思是自我注释),然而,你根本就不可能知道程序员在写这段代码时脑袋里是怎么思考的。更多的情况是,他们要选择这样做是有一定的理由的,除非去深入的研究它们,你不可能再有其他简单快速的方法来理解程序的上下文环境。

所以,每当听到有人看着别人的代码说很烂时,我只会微微一笑,让我想起我当年的天真和盲目自信。的确,我以前坚信自己是个出色的开发人员,坚信知道每种算法的最优设计。我很想念当时的自大,但是我很高兴现在学到的这些理念,我知道,我唯一能鄙视的代码只能是我自己的代码,鄙视的原因就是我不能使它变的更好。

[英文出处]:Link

分享到:
评论
1 楼 javafengpf_2011 2011-10-20  
不错,我也给自己上了一课

相关推荐

    vue语法自动转typescript(解放双手)

    我一般写代码的时候,如果觉得某段业务代码以前见过其他人写过,那么考虑到业务优先性,只要别人的代码不是写得太烂,我一般会优先抄别人的代码,省得自己再写一遍 然后我就遇到了一个问题,公司目前前端项目大部分...

    远程线程注入工具,可生成代码 可自定义shellcode注入进程-易语言

    程序界面,可自定义任意shellcode 注入任意进程 ...此工具是前两天匆忙写出来的,如果有哪里做的不够好以及觉得此程序很烂的大佬们不要喷我 以下为下载地址 此程序使用了精易模块以及未闻花名的 皮肤模块

    YD/T 和MODBUS RTU 报文合成工具

    本人自己写的rtu 和ydt 协议 报文读/写合成的小工具;现场测试和调试的好帮手 用cb2010开发,代码很烂就不上传了,仅交流学习使用哦

    vb 6.0 菜单栏中英文切换

    本人亲自修改验证过的,参考了网上的代码,网上大部分都是抄袭,写的很烂 这个是利用读取保存为ini文件在分别对应读取实现的!

    Live Write 的代码高亮插件 Paste Code

    分析了一下,这个插件的难点主要在RTF格式转HTML,以我这么烂的技术是写不出来的。于是在网上找了一个(http://www.codeproject.com/KB/recipes/RtfConverter.aspx),用了几天的时候,写出一个基本能用的版本,让...

    InfoBase 资料管理库

    2003.7.8 新增“开发日志”和“最爱收藏夹”(迟到了) 星期一弄的太晚,结果早上迟到了……罚款:¥20RMB 上午去腾讯社区见个朋友发表了自己写了很长时间的代码; 我想,先把我的这个烂东西也发出去吧,结果公司...

    OPC转DDE工具 一个方便EXCEL访问OPC的工具,因为EXCEl直接支持DDE,一些老的软件只有DDE接口时也可使用

    这时测试版; ====OPC========== 配置文件必须在"D:\IN_FILER.txt";文件第一行是OPC SERVER名字,后面每...========如果你需要的话,可无偿提供源代码(VC6.0)。不过不要以学习为目的,我的程序风格不是一般的烂啊.....

    一个C#开发者重温C++的心路历程

    但如果多交流,会发现更奇怪的问题,他们几乎都不懂代码设计,面向对象和业务逻辑的代码写的也都很烂。 所以,这次重温C++也是想了解下这种奇异现象的原因。 C++重温 首先打开VisualStudio,创建一个C++的Windows...

    java 设计模式资料

    6. 鉴于本人水平和时间也较紧张,代码写的比较烂,设计中考虑不周,效率不高 ,甚至错误的地方还请大家指出。 对于后续版本的设想: 1. 增加对每个模式的UML类图,对象图,交互图等。 2. 修正现在的代码。 3. 重新...

    a-qqbot-based-graia

    a-qqbot-based-graia 一个基于 graia-application 编写的qqbot 根据AGPL 3.0,源码放在了这里....一个写的死烂的代码,就这样吧 忽然想起来一个问题,bot.py引入了一个config.py 将config-example.py修改成你需要的

    SUIX:只是一些临时的kak,我会摆脱哈哈

    苏伊士SUIX是用世界上最尴尬的语言写的一本烂书你妈妈是同性恋Java的! 詹姆斯·高斯林(James Gosling)约1999年协议规范直到字节的服务器读取的字节,以十进制10 ,被发现。 所有前面的字节通过ASCII字符代码转换...

    一个牛人提供的GIS源码(很好)

    一个牛人提供的GIS源码(很好 下面文字非本人所写,文件提到的下载的东西我全部放包里了。 最后的礼物:校园多媒体系统和校园WEBGIS系统 为什么说是最后的礼物,大概是因为我突然想这个blog不更新了。为什么呢?...

    郁金香vc过驱动保护

    其它的恢复代码都很简单,就不放出来了 RtlInitUnicodeString(&name,L"PsSetCreateProcessNotifyRoutine"); RemoveNotifyRoutine((PVOID)MmGetSystemRoutineAddress(&name)); RtlInitUnicodeString(&name,L...

    Visual C++技术内幕(第四版)目录

    视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来学习MFC就很困难了,因此...

    Visual C++技术内幕(第四版)配套光盘

    视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来学习MFC就很困难了,因此...

    C++ 关于 CMFCPropertyGridCtrl 的使用方法

    这为我解决问题提供了一条好的方法 ,另外在线的 MSDN 也是一个很好的学习途径,不过,汉语翻译实在是不敢恭维,那叫一个烂,基本上看不懂,他说的是什么,只能啃英文。 所以说,学东西不容易,学会了,一定不要忘记...

    Visual C++技术内幕(第四版).part4.rar

    视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来学习MFC就很困难了,因此...

    Visual C++技术内幕(第四版).part1.rar

    视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来学习MFC就很困难了,因此...

    Visual C++技术内幕(第四版).part2.rar

    视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来学习MFC就很困难了,因此...

    Visual C++技术内幕(第四版).part3.rar

    视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来学习MFC就很困难了,因此...

Global site tag (gtag.js) - Google Analytics