如何改别人写的代码

首先,如何才能不写烂代码,这是改别人写的代码的前提.我截取 董伟明 写的一篇文章,一段很好的话.
好的代码是什么样子的呢?

Bjarne Stroustrup(C++之父)说:

逻辑应该是清晰的,bug难以隐藏。
依赖最少,易于维护。
错误处理完全根据一个明确的策略。
性能接近最佳,避免代码混乱和无原则的优化。
整洁的代码只做一件事。

Michael Feathers(《修改代码的艺术》作者)说:

整洁的代码看起来总是像很在乎代码质量的人写的。
没有明显的需要改善的地方。
代码的作者似乎考虑到了所有的事情。

可以感受到,对好的代码的理解有很多共通的地方:

代码简单,代码意图明确,其他人才容易与你协作。
可读性和可维护性要高。
以最合适的方式解决问题。

和大家共勉,不要做别人嘴里的「蠢蛋」。

--- 分割线 ---

Python语言给外人第一印象就是简单,上手快,有其他开发语言经验的人一周就可上手工作,好像Python就是这么简单似得。可是为啥合适的Python高级开发者这么难找?因为绝大多数开发者都止步于能完成工作这个程度,也就是我们经常自嘲的一个词「码农」。

不记得在哪里看过, 程序员有三种(我重新润色了一下):

拿钱干活,不爽就换 - 程序员只是一份工作。
只要能实现功能就好,学习进步太累了。这年代做技术没有管理挣钱多,技术搞得再好有什么用? 还不是买不起房啊。这年代关键是你认识多少人。你是不是有眼光去一个能上市会让你暴富的公司,能不能唬住粉丝儿和投资人。
热爱程序本身的人, 这些人可能只有1%, 他们有目标的写程序, 他们愿意思考, 愿意听取正确地/更好的方法, 他们会热爱学习新的东西。

现在产品开发迭代非常快,一周要上多个版本,每天要提多个Pull Request,对于前2种人,只能疲于应付工作,怎么样能在天赋不够又不想多花时间进步的前提下完成工作,还能到领导的好评呢?这是一门艺术呢......

优秀的工程师在思考、重构,「其他」工程师在给自己找理由:「怎么组织代码、怎么提升运行效率、原理是什么」这些重要吗?代码能跑起来不就完了。需求这么多,做都做不完,哪有时间考虑怎么做得更好啊?

明年的今天「其他」工程师还写一样的代码, 唯一不一样的是Ta老了一岁。

对于这种「其他」工程师,我也确实没有办法,每个人有自己选择生活和工作的权力,我绝对尊重,本文也不是给这些人看的。假如你不满意现状,希望做得更好,但是苦于不知道自己进阶,我分享下自己的经验。

  1. 多看书,多读其他人的博客,阅读优秀的开源项目的代码甚至语言本身的源代码。这是一个长期的、琐碎的、需要学习之后记忆和实践的过程,看代码要思考别人为什么这样写,组织结构为什么这样用,这样写代码为什么快。当然最重要的还是实践。

  2. 想好了再开始写。大家都知道,核心的、重要的系统的代码上线后改动起来会很麻烦,非常有可能给未来留大坑,甚至于要耗费以年为单位的时间来填。所以前期的数据库表结构设计、工程实现这些东西要先想清楚了再开始写。

  3. 给自己提要求。实现过程中不断的提高要求,这个要求就是比你现有的能力要高一点点。一段代码写出来的时候考虑一下会不会有比自己写的好的方法,之前有没有遇到过别人的实现借鉴下等等。

  4. 选择更强的队友。遇见什么样的人,就会变成什么样子的人。去一个身边技术水平都比你烂甚至只是相当的环境,你能提高的空间非常有限。遇到一帮厉害的队友,能帮助你坐上进阶直通车,前提是你的心理素质要高,要不然长期的受到别人吐槽会产生大量不良情绪的。

  5. 对别人吐槽狠。这是我的个人秘笈。之前我写代码也没有那么高的要求,后来在代码评审的时候,我为了证明比人代码写的烂,不惜花费大量时间找各种证据吐槽别人(不能说人家写的烂,但是又写不出来更好的,做这种嘴炮啊),这个过程对我有极大的能力的提高,也包括搜索信息的能力。而且你吐槽了别人,别人正憋着劲还回来。你总不希望这件事发生吧,所以你只能让自己的代码写的更好,这无形中让你对自己的代码要求要高了很多。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容

  • 最近看到一个问题,叫做「你们会因为代码烂,而入职两三天选择离职吗?」。 其实早先有过一些关于代码质量的讨论,比如「...
    Bonew01阅读 2,825评论 6 7
  • 以下的内容都是建立在理想状态下的,只能增加逃脱机率,并不能保证突围,实际操作时影响因素更复杂更多,所以还是需要综合...
    徐蘑菇阅读 674评论 0 1
  • 摸鱼,收收心,画了个小风景,超级简单的,来练练手吧,哈哈。 我的印章,简直一塌糊涂,糊了一片。 第一次画樱花是练习...
    鹿小乖hi阅读 1,477评论 2 37
  • 明天一早,系统内肯定会及时跳出一条提示信息:6月7号要交作业了! 主题写点啥好呢,没有了方向,还是蹭热度?我不太喜...
    qhs感恩阅读 271评论 0 0