让你的代码更优秀的 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 遍:我写的代码是垃圾,我写的代码是垃圾,我写的代码是垃圾。 它们需要别人的优化。

原文地址:https://www.cnblogs.com/heniu/p/12434111.html

时间: 2024-10-29 07:54:32

让你的代码更优秀的 14 条建议的相关文章

html5体验优化页面加载的14条建议

html5体验优化页面加载的14条建议 1. fake 页 - 首屏加速目标:首屏 3s 以内因为 71% 的用户期望移动页面跟 pc 页面一样快 (3s) ,74% 的用户能容忍的响应时间为 5 秒,所以我们必须保证移动端页面有足够的速度. 方案:- 避免页面长时间白页,页面渲染只需要完整的HTML 以及 CSS- 加载结束后页面第一屏便渲染结束,然后再异步加载js- 静态资源不使用 cookie- 优化加载顺序 css头.js尾 2. 降低请求「数」- 将可合并的 CSS.JS 文件合并-

14条建议 使你的IT职业生涯更上一层楼

升值为企业IT部门的领导者,并非一件易事.从一般大众中脱颖而出,则更不容易. 2013是一个好年头,据专家报告显示,6月所有新工作中,10%来自技术领域.这对于那些希望高升.换岗.跳槽的IT技术人员来说是个好消息.但要想这些职业"变动"成为可能,你需要让雇佣者感受到你可以带来更多价值. 根据CIO.职业顾问及专家的观点,仅把工作干好还不够.你需要展示出投身于技术发展的奉献精神及伴随技术发展而发展的能力.每个公司的成功轨迹不同,但下面列出的14项建议可帮助你获取成功. 与你的上司和公司H

[转]DSL-让你的 Ruby 代码更优秀

https://ruby-china.org/topics/38428 以下摘录 DSL和Gpl DSL : domain-specific language.比如HTML是用于组织网页的‘语言’, CSS专门调整页面样式的‘语言’. SQL是数据库操作的‘语句’. GPL: general-purpose language.通用目的语言.即不是为了特定领域设计的语言.Ruby,Python,C都是. 简单的DSL 我们遇到不少的Ruby开源库都会有其对应DSL,其中就包括Rspec,Rabl,

[译] 如何在React中写出更优秀的代码

目录 我们先来看 Linting 利用组件模块性.复用性和组合性 propTypes 和 defaultProps 知道何时创建新组件 组件 vs 纯组件 vs 无状态函数组件 无状态函数组件 纯组件 使用 React 开发工具 使用内联条件语句 尽可能使用代码片段库 React 本质 - 学习 React 是如何工作的 快速回顾 在React中写出更好代码的9条建议:学习关于 Linting, propTypes, PureComponent 等. Rajat S · 2018 年 4 月 1

怎样让你的代码更好的被JVM JIT Inlining

好书推荐:Effective Java中文版(第2版) JVM JIT编译器优化技术有近100中,其中最最重要的方式就是内联(inlining).方法内联可以省掉方法栈帧的创建,方法内联还使让JIT编译器更多更深入的优化变成可能.本人在fastxml(速度比XPP3(基于xmlpull)还快的xml解析器)开源项目中针对方法内联进行了很多学习和实践,这里总结一下,介绍一下怎么让你的代码更好的被JVM JIT Inlining. Inlining相关的启动参数 上一篇博客<Java JIT性能调优

让代码更帅一点

博主的私人博客 写代码最重要的是实现功能,但是除了实现功能之外,我们还应该想办法,让代码变得更规范,更漂亮 最近在读<禅与Objective-C编程艺术>和<Effective Objective C 2.0:编写高质量iOS与OS X代码的52个有效方法>,这两本都讲解了代码规范方面的东西,结合自己平时的代码习惯,发现有很多地方自己做的还是不够好,代码写得不够帅,所以总结一下,让以后的代码更帅一点 条件语句 条件语句一定要使用括号,如果不使用括号,if后面的那行代码删除,之后的代

可以使你成为更优秀程序员的5个好习惯

我们都希望能够在我们所做的事情中得到成长,在WEB开发领域,我们花费时间最多的就是编写代码.这可能包括HTML, CSS, JavaScript, PHP, Python, ActionScript或者任何其他你构建WEB站点时选用的语言. 这篇文章中,我们将分享一些实际的步骤,使你可以扩充技能,成为一个更优秀的程序员.我们提出五个不同的生活习惯,它们可以使你在你所从事的领域变得更加优秀. 1. 一个时间段内只专注于一种类型的语言 如果你正在设计或开发网站,你将需要同时熟悉多种不同的语言.你可能

我想成为一个更优秀的人

我想成为一个更优秀的人,对父母,对梦想,对生活,对自己. 大四,也算是正式进入了实习和工作阶段,开学后,找了份工作,挺轻松,每天完成自己的任务后可以有很多时间学习自学一些新东西,这对于现阶段的我来说还是挺不错的.作息规律也比在学校规律了很多,果然我还是适合一个人生活和规划,这样生活或许更有效率.这份在武汉的工作应该会坚持到明年春招或大学毕业,具体看我技术达到的程度,到了我觉得可以的程度,我想我也应该离开武汉,去北京闯闯了.为什么去北京?或许是因为北京是全国少有的一个你对别人谈梦想,别人不会骂你傻

基于AOP的MVC拦截异常让代码更优美

与asp.net 打交道很多年,如今天微软的优秀框架越来越多,其中微软在基于mvc的思想架构,也推出了自己的一套asp.net mvc 框架,如果你亲身体验过它,会情不自禁的说‘漂亮’.回过头来,‘漂亮’终归有个好的思想,其中类似于AOP的思想,就在其中体现的淋漓尽致,今天本文主要讨论的是基于AOP思想构成的‘异常过滤器’.我们的目的只有一个,让try...catch...无处盾形,让代码更健壮优美. 一.理解mvc里filter是怎么运行的 老外的一篇文章是这样的草图 通过翻译中文是这样的 其