让你的代码更优秀的 14 条建议

学习代码语法是一件比较简单的事情。但是如何利用简单的语法去组建庞大的项目,会衍生出很多问题。这里总结了一些编程过程中需要注意的陷阱和原则,之后如果有新的总结,我会继续更新。

1,不要编程

对,不要编程。能用草稿纸解决的问题,不用去写程序。

在写程序之前,应该先弄清楚问题。花更多的时间去听、读和理解问题。

非常多的程序员在写代码的过程中去梳理问题,所以他们会花更多时间去调试和找 bug.

2,不要太依赖工具

不管是编程语言,类库和成熟软件,都是解决问题的工具,真正值钱的并不是工具,而是掌握的编程技能,计算机知识和思维。

为具体的项目去寻找合适的编程语言,类库和软件。每个工具都有适用场景,python 更适合上层开发,go 更适合底层开发。 如果只会特定的编程语言,类库,工具的使用,你只能根据这些工具去找工作,选择性会大大降低。

太依赖工具还有另一个副作用:只懂用法,不懂实现。当工具更新或者过时了,又要重新学过,辛辛苦苦积攒的经验毫无勇武之地,和一个从来没用过的新人没有多大区别。

尽可能的原生语句实现,不要随意安装第三方库。一旦这些库停止维护,或者因为版本更新出现兼容性问题,你的代码将无法运行。

对于不是特别复杂的问题,尽量用原生语法和标准库。要用第三方的类库,也要选择那些成熟的,持续维护而且兼容性够好的类库,就算实现起来麻烦一点。

3,不要欠技术债务

技术债务指的是:开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,从而在未来给自己带来的额外开发负担。这种技术上的选择,就像一笔债务一样,虽然眼前看起来可以得到好处,但必须在未来偿还。

比如使用了新潮但是不成熟的框架。或者在编程中复制粘贴别人的代码,但是没有经过自己的思考而直接使用。

在代码编写过程中尽量要弄懂框架和代码的原理,就算当时因为进度不理解,也要抽时间去消化。否则代码出问题了都不知道怎么回事。

4,远离商业炒作的项目,对新兴技术保持警惕

许多流行的框架都是一些公司为了 KPI 或者商业需要开发的。这些框架可能面临后期无人维护,或者社区运营无力的风险。这意味着当底层出现问题的时候你不能高效的解决问题。

在 github 上有很多热门的项目非常受人欢迎,但很多没有实质内容。开发者从来不去处理 issue, 也不对代码进行更新。

对新兴技术同样需要保持警惕。新兴技术可能是公司的实验产品,不管是稳定性,社区运营都没有得到市场证明,过早投入太多精力风险很大。如果这个技术没有形成气候,基本上前期的努力就白费了。 一个成熟的技术框架需要长时间和大量用户的实践证明,选用技术方案时最好优先考虑成熟方案。

5, 保持学习

离开你的舒适区。每天学习。并且把你学到的教给别人(教学是最好的学习工具)。除非你是一位大师,你就可以不用学习。让自己接触其他语言、技术、文化并保持好奇心。

学习一定要有产出。可以通过文字,视频,语音等方式记录。 没有产出,很难形成自己的思维,马上就会忘掉。

对于新兴的技术,不是完全不能碰。新技术出来的时候可以安排适当的时间接触,从中吸收新的思想和设计方式。 学习的时候一定要做一个项目出来,以项目驱动学习。

6,写文档

好代码不需要文档,但是优秀的代码都有很好的文档。

有了文档,别人在使用的时候就可以大幅减少试错成本。 之后你去优化更新代码的时候也可以极大的提升效率。

7,提高代码的可读性

你不是为机器写代码,而是为你的同事和未来的自己写代码。如果你不想在更新的时候花大量时间去阅读之前的代码,那就应该让你写的代码,小朋友也能看得懂。

尽量使用简单易懂的语法,不要炫技。很多流行的技术框架使用了一些非常酷炫的语言特性,让人容易产生技术崇拜,但是很多实现都可以使用更加通俗易懂的语法写成。

酷炫的语法糖或者语言特性容易让你迷失自我。

8,编写独立的模块

你不应该把你所有的代码像面条一样搅在一起,彼此依赖。 这样一旦某个部分出现问题,整个项目都会受到影响。

你应该为每一个功能编写独立的模块,并且对模块进行独立测试,然后再导入到其他的代码,做集成测试。

模块交互的地方容易出现 bug, 所以要更加仔细检查。

9, 编写纯函数

纯函数是指:

  • 当传入相同的输入值时,产生相同的输出;
  • 函数的输出和输入值以外的状态无关;(比如在输入值不变的情况下,时间改变,输出发生了变化)

对那些不方便通过纯函数实现的,使用类和对象进行封装。 使用类的时候,尽量避免重写、继承和隐式智能。

对纯函数和非纯函数进行分开管理。

10,不要复制粘贴

复制粘贴非常容易产生 Bug。复制越多次,bug 越多。 可以说一个项目里的 bug 数量和你复制粘贴的数量是成正比的。 如果一定要复制粘贴,请仔细检查每一行代码。

11,面向异常编程

人的思维习惯总是倾向于考虑正常情况,而忽略可能潜在的异常。 有时候是没有考虑到,更多的时候则是考虑到了,但是嫌麻烦。

如果不处理异常,意味着你的代码随时会终止运行,意味着这份代码是不可信赖的。

尽早处理异常,并且回答这些异常为什么会发生,如何检测,以及如何解决。验证所有系统输入(包括用户输入),尽早发现问题,你的代码就会少更多的隐患。

编程的时候,应该习惯性的问自己,如果程序没有按照我预设的路径执行,会怎么样?

12, 分清楚代码的优先级

并不是所以的代码都同样重要。有的代码,没了它程序完全无法执行,有的代码,自从你写了以后,就从来没被使用过。
你需要理解这 3 者之间的区别:

  • 核心代码:就像汽车里的引擎。没有它,产品就没有意义。
  • 必要代码:就像汽车的备用轮胎。它很少使用,但当需要时,它的功能决定了系统的成功。
  • 附加代码:就像汽车的杯托。有它很好,但没有它,汽车照样开。

13, 分清楚产品规范的优先级

用户体验、安全性、性能是相互冲突的。

一个一般的原则是:
安全性 > 可用性(易访问性和用户体验)> 可维护性 > 简单性(开发人员体验/DX)> 简洁性(代码长度)> 性能

但也不要盲目,每个类型的产品都有侧重点。和任何职业一样,经验越丰富,就越能在每一种情况下找到正确的平衡点。例如,在设计游戏引擎时,性能是最重要的;但在创建银行应用程序时,安全性是最重要的因素;在初创项目,你完全不需要考虑性能,当项目发展起来的用户太多,性能就会成为你首要要考虑的问题。

14, 让别人参与你的代码维护

开源和闭源并不是永远都是争锋相对的。 对于涉及到商业风险的项目,可以选择闭源。但是对于不触及商业的底层代码,开源是个更好的选择。

因为底层的代码脱离了商业逻辑,而且往往非常抽象和复杂,需要更多人的参与和实践。可参考 linux 开源项目。

任何有意义和有回报的软件都是协作的结果。一个人总是会有思维死角,不要太相信自己的能力。

请跟我默念 3 遍:我写的代码是垃圾,我写的代码是垃圾,我写的代码是垃圾。 它们需要别人的优化。

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

推荐阅读更多精彩内容